命令的确切行为是什么:ip 地址更改?

命令的确切行为是什么:ip 地址更改?

我一直在摆弄 IPv6 和地址生命周期。我发现valid_lft如果使用正确,该属性将使 v6 地址自动消失。为了延长地址的生命周期我会

ip addr change 1:2:3:4::1/112 dev eth0 valid_lft 86000

ip addr change我可以访问的任何手册页中都没有出现的使用(Debian、Ubuntu 和在线的)并且也不在官方文档。我在一个文章参考 2009 年发送到 ipv6-ops 邮件列表的一封电子邮件。

从我可以确定的情况来看,我想人们总是可以使用ip addr change而不是ip addr add,因为如果地址不存在,ip就会添加一个,如果ip addr add使用的话。

这是正确的吗,即,任何人都可以解释到底ip addr change是什么以及它与 有何不同ip addr add

答案1

当您不确定某件事的作用并且文档没有说明时,您可以找到来源,即1588线:

if (matches(*argv, "change") == 0 ||
    strcmp(*argv, "chg") == 0)
    return ipaddr_modify(RTM_NEWADDR, NLM_F_REPLACE, argc-1, argv+1);

那么,它有什么作用呢?返回ipaddr_modify()函数运行结果1379行定义与参数RTM_NEWADDRNLM_F_REPLACE.

从我可以确定的情况来看,我想人们总是可以使用ip addr change而不是ip addr add,因为如果地址不存在,ip就会添加一个,如果ip addr add使用的话。

这是正确的吗,即,任何人都可以解释到底ip addr change是什么以及它与 有何不同ip addr add

否,add将创建或执行给定的参数(如果给定的话),同时change将查找参数并替换它。

顺便说一句,replace似乎是add和之间的妥协,change因为它使用了混合的参数。

相关内容