网络子系统67_路由表处理设备事件

//	路由表对网络设备事件的处理
//		在ip_rt_init->ip_fib_init中注册
1.1 static struct notifier_block fib_netdev_notifier = {
	.notifier_call = fib_netdev_event,
};

// 路由表处理设备事件
//	函数主要功能:
//		1.设备开启
//			1.1 将设备配置的所有ip添加到路由表中
//			1.2 同步多路径缓存
//			1.3 刷新路由缓存

//		2.设备关闭,注销
//			2.1 关闭设备上的ip协议

//		3.设备mtu,载波改变:
//			3.1 同步路由缓存
1.2 static int fib_netdev_event(struct notifier_block *this, unsigned long event, void *ptr)
{
	struct net_device *dev = ptr;
	struct in_device *in_dev = __in_dev_get(dev);

	//设备注销
	if (event == NETDEV_UNREGISTER) {
		fib_disable_ip(dev, 2);
		return NOTIFY_DONE;
	}
	// 设备需要配置信息
	if (!in_dev)
		return NOTIFY_DONE;

	switch (event) {
	case NETDEV_UP:
		//设备开启
		for_ifa(in_dev) {
			//将设备配置的ip地址均添加到路由表中
			fib_add_ifaddr(ifa);
		} endfor_ifa(in_dev);
		//多路径同步
#ifdef CONFIG_IP_ROUTE_MULTIPATH
		fib_sync_up(dev);
#endif
		//刷新路由缓存
		rt_cache_flush(-1);
		break;
	case NETDEV_DOWN:
		//设备关闭,关闭设备上的ip协议
		fib_disable_ip(dev, 0);
		break;
		//mtu,载波变化
	case NETDEV_CHANGEMTU:
	case NETDEV_CHANGE:
		//立刻刷新路由缓存
		rt_cache_flush(0);
		break;
	}
	return NOTIFY_DONE;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值