Qual é o comportamento exato do comando: alteração de endereço IP?

12

Venho mexendo no IPv6 e nas vidas úteis dos endereços. Descobri que o valid_lftatributo fará com que um endereço v6 desapareça automaticamente, se usado corretamente. Para estender 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 changenão aparece em nenhuma página de manual à qual tenho acesso (Debian, Ubuntu e online ) e também não está na documentação oficial . Encontrei-o em um artigo referente a um email de 2009 para a lista de discussão do ipv6-ops.

Pelo que pude determinar brincando, acho que sempre é possível usar em ip addr changevez de ip addr add, porque se um endereço não existir, ele ipserá adicionado apenas se ip addr addfoi usado.

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

Bananguin
fonte

Respostas:

6

Quando você não tem certeza do que algo faz e a documentação não diz, você chegou às fontes, a saber a linha 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 faz? Retorna o resultado da execução da ipaddr_modify()função definida na linha 1379 com os argumentos RTM_NEWADDRe NLM_F_REPLACE.

Pelo que pude determinar brincando, acho que sempre é possível usar em ip addr changevez de ip addr add, porque se um endereço não existir, ele ipserá adicionado apenas se ip addr addfoi usado.

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

Não, addcriará ou executará os argumentos fornecidos (se houver), enquanto changeprocurará pelo argumento e o substituirá.

Aliás, replaceparece ser um compromisso entre adde changecomo ele usa um conjunto misto de argumentos.

Braiam
fonte
E qual é o efeito dessas bandeiras? Porque na linha de comando eles realmente não aparecem. Especialmente como changefunciona addse o endereço a ser alterado ainda não existir. Eu não pensei que teria que procurar na fonte do kernel (porque é onde as bandeiras são finalmente passadas), a fim de descobrir o que uma das ferramentas de linha de comando mais populares para gerenciamento de rede faz. Este não é os anos 90 ... :-) Mas, de qualquer forma, obrigado!
Bananguin 02/09