guagga入门-我们对guagga的修改

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

2。server对接
需要在动态路由生成了路由表项的时候,将所有的表项写入到一个xml文件中。然后通知server去加载这个xml文件中;该修改也在rt_netlink.c中在函数netlink_route_multipath中调用
guagga入门-我们对guagga的修改_第1张图片
主要思路:
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的位置,两个内容互相交换,目前已经不知道其意图了。。。

你可能感兴趣的:(linux网络编程)