免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2002 | 回复: 2
打印 上一主题 下一主题

[网络子系统] 请教:linux下配置多个ip地址的两种方式有何不同? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-17 14:40 |只看该作者 |倒序浏览
在同一设备上配置多个ip地址,有两个不同的命令:
a. ip addr add ...
b. ifconfig ethn:m ...

请教下这两种方式从代码的角度看有何不同?

下面是我自己的分析结果(kernel version v2.6.38):
a. ip addr add
用户输入此命令,用户空间通过netlink msg与内核通信,内核中对应的handler为 inet_rtm_newaddr,然后调用 __inet_insert_ifa(), 将一个新的in_ifaddr 插入到 net_device->(in_device *)ip_ptr-> (in_ifaddr *) ifa_list 中;

b. ifconfig ethn:m ...
用户空间通过ioctl与内核通信,执行的顺序为:inet_ioctl->devinet_ioctl -> inet_set_ifa -> inet_insert_ifa -> __inet_insert_ifa

似乎没有区别?

论坛徽章:
0
2 [报告]
发表于 2012-12-26 16:52 |只看该作者
自己搞明白了,来结贴:
从ip地址的存储看,是没有区别的:dev的ip地址都存储在net_device成员 ip_ptr中的ifa_list列表里。
区别在于用途:
ifconfig只能使用tag的方式,添加多个ip地址到dev上,而 ip addr add 命令则可以在dev上创建secondary addresses.

论坛徽章:
0
3 [报告]
发表于 2014-02-16 22:26 |只看该作者
@nosecool, 正好项目中有用到, 但没理解你的解释.  是不是内核一样的, 只是应用层不同而已?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP