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

简介:
//	相同子网:
//		掩码相同,网络地址相同

//	为设备配置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 = &ifa1->ifa_next;
		//相同子网:
		//	子网掩码长度相同的情况,网络地址相同
		if (ifa1->ifa_mask == ifa->ifa_mask &&
		    inet_ifa_match(ifa1->ifa_address, ifa)) {//网络地址有重叠
			if (ifa1->ifa_local == ifa->ifa_local) {//本地地址相同
				inet_free_ifa(ifa);//重复添加
				return -EEXIST;
			}
			if (ifa1->ifa_scope != ifa->ifa_scope) {
				inet_free_ifa(ifa);
				return -EINVAL;
			}
			//子网掩码长度相同,网络地址有重叠,设置为辅地址
			ifa->ifa_flags |= IFA_F_SECONDARY;
		}
	}
	//加入新子网
	//	子网掩码或网络地址没有重叠
	if (!(ifa->ifa_flags & IFA_F_SECONDARY)) {
		net_srandom(ifa->ifa_local);
		ifap = last_primary;
	}
	//上一个scope大于本ip地址的主地址
	ifa->ifa_next = *ifap;
	*ifap = ifa;

	//向netlink发送消息,新添加了ip地址
	rtmsg_ifa(RTM_NEWADDR, ifa);
	//通知inetaddr_chain,ip地址加入到设备
	notifier_call_chain(&inetaddr_chain, NETDEV_UP, ifa);

	return 0;
}

//	删除设备的ip地址
//	函数主要任务:
//		1.如果为主地址,则删除同一子网内的所有辅地址
//		2.删除该地址
//		3.通知netlink,inetaddr_chain

//	调用路径:inet_rtm_deladdr->inet_del_ifa
1.2 static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
			 int destroy)
{
	struct in_ifaddr *ifa1 = *ifap;

	//1.删除主地址,同一子网内所有辅助地址都被删除
	if (!(ifa1->ifa_flags & IFA_F_SECONDARY)) {
		struct in_ifaddr *ifa;
		struct in_ifaddr **ifap1 = &ifa1->ifa_next;

		while ((ifa = *ifap1) != NULL) {
			if (!(ifa->ifa_flags & IFA_F_SECONDARY) ||
			    ifa1->ifa_mask != ifa->ifa_mask ||
			    !inet_ifa_match(ifa1->ifa_address, ifa)) {
				ifap1 = &ifa->ifa_next;
				continue;
			}
			//同一子网内的辅助地址
			*ifap1 = ifa->ifa_next;
			//通知netlink,inetaddr_chain
			rtmsg_ifa(RTM_DELADDR, ifa);
			notifier_call_chain(&inetaddr_chain, NETDEV_DOWN, ifa);
			//释放ifa
			inet_free_ifa(ifa);
		}
	}

	//将地址从地址列表删除
	*ifap = ifa1->ifa_next;

	//通知netlink,inetaddr_chain,地址删除
	rtmsg_ifa(RTM_DELADDR, ifa1);
	notifier_call_chain(&inetaddr_chain, NETDEV_DOWN, ifa1);
	//释放ifa
	if (destroy) {
		inet_free_ifa(ifa1);
		//如果没有配置的地址信息,释放配置信息控制块
		if (!in_dev->ifa_list)
			inetdev_destroy(in_dev);
	}
}

目录
相关文章
|
1月前
|
人工智能 运维 安全
配置驱动的动态 Agent 架构网络:实现高效编排、动态更新与智能治理
本文所阐述的配置驱动智能 Agent 架构,其核心价值在于为 Agent 开发领域提供了一套通用的、可落地的标准化范式。
384 48
|
1月前
|
人工智能 安全 数据可视化
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
本文系统性地提出并阐述了一种配置驱动的独立运行时Agent架构,旨在解决当前低代码/平台化Agent方案在企业级落地时面临困难,为Agent开发领域提供了一套通用的、可落地的标准化范式。
308 18
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
|
7天前
|
网络协议 Linux 虚拟化
配置VM网络:如何设定静态IP以访问主机IP和互联网
以上就是设定虚拟机网络和静态IP地址的基本步骤。需要注意的是,这些步骤可能会因为虚拟机软件、操作系统以及网络环境的不同而有所差异。在进行设定时,应根据具体情况进行调整。
92 10
|
8天前
|
弹性计算 安全 应用服务中间件
阿里云渠道商:怎么配置阿里云网络ACL?
阿里云网络ACL是子网级无状态防火墙,支持精准流量控制、规则热生效且免费使用。本文详解5步配置流程,助您实现Web与数据库层的安全隔离,提升云上网络安全。
|
1月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
67 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
2月前
|
存储 监控 Linux
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
59 0
|
10月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
239 17
|
10月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
196 10
|
10月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

热门文章

最新文章