网络子系统68_路由表处理设备ip配置事件

来源:互联网 发布:梦幻西游手游源码 编辑:程序博客网 时间:2024/05/22 04:29
//路由表处理inet配置事件//在ip_rt_init->ip_fib_init中注册1.1 static struct notifier_block fib_inetaddr_notifier = {.notifier_call = fib_inetaddr_event,};//路由表处理地址配置事件//函数主要功能://1.设备配置ip地址//1.1 将ip地址添加到路由表//1.2 同步多路径路由//1.3 刷新路由缓存//2.设备删除ip地址//2.1 从路由表中删除路由项//2.2 如果此ip地址为设备最后一个可用地址,关闭设备上的ip协议//2.3 否则,刷新路由缓存//注:当为设备添加/删除ip地址时,由inet_insert_ifa,inet_del_ifa触发1.2 static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, void *ptr){struct in_ifaddr *ifa = (struct in_ifaddr*)ptr;switch (event) {//设备添加ip地址case NETDEV_UP://在路由表中添加路由项fib_add_ifaddr(ifa);//同步多路径路由#ifdef CONFIG_IP_ROUTE_MULTIPATHfib_sync_up(ifa->ifa_dev->dev);#endif//刷新路由缓存rt_cache_flush(-1);break;//设备删除ip地址case NETDEV_DOWN://从路由表中删除路由项fib_del_ifaddr(ifa);if (ifa->ifa_dev && ifa->ifa_dev->ifa_list == NULL) {//设备可用的最后一个ip地址//关闭设备的ip路由功能fib_disable_ip(ifa->ifa_dev->dev, 1);} else {//刷新路由缓存rt_cache_flush(-1);}break;}return NOTIFY_DONE;}

原创粉丝点击