Chinaunix首页 | 论坛 | 博客
  • 博客访问: 825394
  • 博文数量: 264
  • 博客积分: 592
  • 博客等级: 中士
  • 技术积分: 1574
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:02
文章分类

全部博文(264)

文章存档

2019年(2)

2018年(1)

2017年(1)

2016年(4)

2015年(14)

2014年(57)

2013年(88)

2012年(97)

分类: LINUX

2014-02-12 16:02:46

转:http://blog.csdn.net/nerdx/article/details/12843647
  1. //  路由表对网络设备事件的处理  
  2. //      在ip_rt_init->ip_fib_init中注册  
  3. 1.1 static struct notifier_block fib_netdev_notifier = {  
  4.     .notifier_call = fib_netdev_event,  
  5. };  
  6.   
  7. // 路由表处理设备事件  
  8. //  函数主要功能:  
  9. //      1.设备开启  
  10. //          1.1 将设备配置的所有ip添加到路由表中  
  11. //          1.2 同步多路径缓存  
  12. //          1.3 刷新路由缓存  
  13.   
  14. //      2.设备关闭,注销  
  15. //          2.1 关闭设备上的ip协议  
  16.   
  17. //      3.设备mtu,载波改变:  
  18. //          3.1 同步路由缓存  
  19. 1.2 static int fib_netdev_event(struct notifier_block *thisunsigned long event, void *ptr)  
  20. {  
  21.     struct net_device *dev = ptr;  
  22.     struct in_device *in_dev = __in_dev_get(dev);  
  23.   
  24.     //设备注销  
  25.     if (event == NETDEV_UNREGISTER) {  
  26.         fib_disable_ip(dev, 2);  
  27.         return NOTIFY_DONE;  
  28.     }  
  29.     // 设备需要配置信息  
  30.     if (!in_dev)  
  31.         return NOTIFY_DONE;  
  32.   
  33.     switch (event) {  
  34.     case NETDEV_UP:  
  35.         //设备开启  
  36.         for_ifa(in_dev) {  
  37.             //将设备配置的ip地址均添加到路由表中  
  38.             fib_add_ifaddr(ifa);  
  39.         } endfor_ifa(in_dev);  
  40.         //多路径同步  
  41. #ifdef CONFIG_IP_ROUTE_MULTIPATH  
  42.         fib_sync_up(dev);  
  43. #endif  
  44.         //刷新路由缓存  
  45.         rt_cache_flush(-1);  
  46.         break;  
  47.     case NETDEV_DOWN:  
  48.         //设备关闭,关闭设备上的ip协议  
  49.         fib_disable_ip(dev, 0);  
  50.         break;  
  51.         //mtu,载波变化  
  52.     case NETDEV_CHANGEMTU:  
  53.     case NETDEV_CHANGE:  
  54.         //立刻刷新路由缓存  
  55.         rt_cache_flush(0);  
  56.         break;  
  57.     }  
  58.     return NOTIFY_DONE;  
  59. }  
阅读(816) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~