网络子系统64_设备ip地址配置

本文详细介绍了Linux网络子系统中设备IP地址的配置与删除过程。主要内容包括:为设备添加IP地址时进行的合理性检查,如避免相同子网内的重复地址,确定主地址和辅地址,并在设备的ifa_list中正确插入;同时阐述了删除IP地址的逻辑,删除主地址时会清除同一子网内的所有辅地址。整个过程中涉及到netlink通信和inetaddr_chain的更新。
摘要由CSDN通过智能技术生成
//	相同子网:
//		掩码相同,网络地址相同

//	为设备配置ip地址
//	函数主要任务:
//		1.合理性检查;
//			1.1 相同子网内该地址没有被添加过
//			1.2 相同子网内的地址scope应该相同
//		2.将ifa插入到in_device->ifa_list中
//		3.通知netlink,inetaddr_chain 新地址的加入

//	注:地址在in_device->ifa_list中的排列:
//			1.主地址:插入的如果为主地址,则按照scope从大到小的顺序排列
//			2.辅地址: 总是插入到列表的最尾端

//	调用路径:inet_rtm_newaddr->inet_insert_ifa
1.1 static int inet_insert_ifa(struct in_ifaddr *ifa)
{
	struct in_device *in_dev = ifa->ifa_dev;
	struct in_ifaddr *ifa1, **ifap, **last_primary;

	//辅地址标志
	ifa->ifa_flags &= ~IFA_F_SECONDARY;
	//主地址列表
	last_primary = &in_dev->ifa_list;
	//遍历主地址列表
	for (ifap = &in_dev->ifa_list; (ifa1 = *ifap) != NULL;
	     ifap = &ifa1->ifa_next) {
		
		if (!(ifa1->ifa_flags & IFA_F_SECONDARY) &&//主地址
		    ifa->ifa_scope <= ifa1->ifa_scope)//ifa的scope小于等于主地址的scope
			last_primary =
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值