大家好,又见面了,我是你们的朋友全栈君。
(我意识到这是一个古老的问题,但谷歌把我带到了这里,因为我试图找出确切的变化和替换以及它们如何不同).
我相信替换和更改都用于修改现有地址.考虑:
ip addr add 192.168.1.10/32 dev dummy0
这让我:
32: dummy0: mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.111.10/32 scope global dummy0
valid_lft forever preferred_lft forever
inet6 fe80::58ec:58ff:fe4f:d135/64 scope link
valid_lft forever preferred_lft forever
如果我再次运行相同的命令,我会收到一个错误:
# ip addr add 192.168.111.10/32 dev dummy0
RTNETLINK answers: File exists
如果我想修改该地址上的标志,我可以使用更改或替换.在这里,我使用ip addr更改来修改该地址上的preferred_lft和valid_lft设置:
# ip addr change 192.168.111.10/32 dev dummy0 preferred_lft 300 valid_lft 300
# ip addr show dummy0
32: dummy0: mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.111.10/32 scope global dynamic dummy0
valid_lft 298sec preferred_lft 298sec
inet6 fe80::58ec:58ff:fe4f:d135/64 scope link
valid_lft forever preferred_lft forever
ip addr replace的行为是相同的.实际上,如果查看代码,它们会导致几乎相同的操作:
if (matches(*argv,”change”) == 0 ||
strcmp(*argv,”chg”) == 0)
return ipaddr_modify(RTM_NEWADDR,NLM_F_REPLACE,argc-1,argv 1);
if (matches(*argv,”replace”) == 0)
return ipaddr_modify(RTM_NEWADDR,NLM_F_CREATE|NLM_F_REPLACE,argv 1);
看起来这里的意图是更改将仅修改现有地址,而替换将修改现有地址或如果指定的地址不存在则创建新地址.在实践中,似乎更改和替换将添加地址(如果它尚不存在).
如果你真的想要添加一个新地址并删除一个旧地址,你需要分两步完成,使用ip addr del,然后是ip addr add(当然,反过来).
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164670.html原文链接:https://javaforall.cn