Qual é o comportamento exato do comando: ip address change?

11

Eu tenho trabalhado com o IPv6 e lidado com vidas úteis. Descobri que o atributo valid_lft fará um endereço v6 desaparecer automaticamente, se usado corretamente. Para prolongar a vida útil de um endereço, eu

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

O uso de ip addr change não aparece em nenhuma página man que eu tenha acesso (Debian, Ubuntu e online ) e também não na documentação oficial . Eu encontrei-o em um artigo , referindo-me a um e-mail de 2009 para o mailing ipv6-ops -Lista.

Pelo que pude determinar, acho que sempre é possível usar ip addr change em vez de ip addr add , porque se um endereço não existir, ip adicionará um, apenas se ip addr add for usado. / p>

Isso está correto, ou seja, alguém pode explicar o que exatamente o ip addr change faz e como ele difere de ip addr add ?

    
por Bananguin 01.07.2014 / 21:06

1 resposta

6

Quando você não tem certeza do que algo faz, e a documentação não diz, você chegou às fontes, ou seja, line 1588 :

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

Então, o que isso faz? Retorna o resultado da execução da função ipaddr_modify() definido na linha 1379 com os argumentos RTM_NEWADDR e NLM_F_REPLACE .

From what I could determine playing around, I guess one can always use ip addr change instead of ip addr add, because if an address does not exist, ip will add one, just if ip addr add was used.

Is that correct, i.e., can anybody explain what precisely ip addr change does and how it differs from ip addr add?

Não, add criará ou executará os argumentos fornecidos (se houver algum dado), enquanto change procurará o argumento e o substituirá.

BTW, replace parece ser um compromisso entre add e change , pois usa uma mescla de argumentos.

    
por 02.09.2014 / 02:42