9.6 建立更新分组为了添加一个LSA到一个链路状态更新分组从而发送该LSA到一个或更多的接口,可调用SpfNbr::add_to_update()、SpfArea::add_to_update()或者OSPF::add_to_update()完成。具体调用哪一个函数依赖于发送LSA分别到什么目的地,到一个特定的相邻路由器、到一个区的所有接口或到路由器的所有接口。各个add_to_update()程序选择正确的链路状态更新分组以将合适的LSA添加进相应的分组,并且保证在当前的链路状态更新分组内,如果有的话,有足够的空间留给LSA。如果没有足够的空间,则当前的链路状态更新分组被泛洪,然后通过调用OSPF::build_update()来对该链路状态更新分组格式化。程序清单9.7显示了OSPF::build_update()。该程序用于向一个已存在的链路状态更新分组中添加LSA。程序清单9.7建立一个链路状态更新分组,SpfIfc::if_build_update() spflood.C 481 void OSPF::build_update(Pkt pkt, LShdr hdr, uns16 mtu, bool demand) 482 483 { 484 int lsalen; 485 UpdPkt upkt; 486 age_t c_age, new_age; 487 LShdr new_hdr; 488 int donotage; 489 490 lsalen = ntoh16(hdr->ls_length); 详细了解OSPF LSA类型和网络工程协议的其他细节信息,可以访问相关的资源链接。是不是很神奇?你还可以了解如何过滤OSPF中的LSA3!这一切简直是网络世界的魔法呢!