guagga入门-我们对guagga的修改

在虚拟化修改之前我们队guagga的修改很少主要包含两个部分: 1.管理接口的过滤; 2.server的对接 管理接口的过滤: 主要是为了让zebra等程序不需要再管理口上面运行动态路由的程序。过滤方式主要是在netlink消息通知; 修改文件rt_netlink.c中函数 netlink_routing_table与netlink_route_change函数中 guagga入门-我们对guagga的修改
文章图片

guagga入门-我们对guagga的修改
文章图片
2。server对接 需要在动态路由生成了路由表项的时候,将所有的表项写入到一个xml文件中。然后通知server去加载这个xml文件中;该修改也在rt_netlink.c中在函数netlink_route_multipath中调用 guagga入门-我们对guagga的修改
文章图片

guagga入门-我们对guagga的修改
文章图片
主要思路: netlink_route_multipath在zebra往内核写路由的时候回调用这个函数,这个函数把内容写入自己定义的结构体中保存; 然后在eoi_route_list_timer中检查,当连续两次检查路由条目没有变化的时候写入文件中;并且执行通知server加载路由的操作,通知的行为是发送一个killall -39 server给server。 总结: 1。netlink_route_multipath只放到内存中; 2。eoi_route_list_timer定时写回到xml文件中(ospf_route.xml rip_route.xml bgp_route.xml) 3。写完文件后killall -39 server通知server重新加载路由 另外: 我们还修改了网内核添加路由时候的distance和metric的位置,两个内容互相交换,目前已经不知道其意图了。。。

    推荐阅读