Onde a tabela de roteamento é armazenada internamente no kernel do Linux?

8

Quando executo route -n , de onde exatamente (de onde struct s) as informações exibidas são recuperadas?

Eu tentei executar strace route -n , mas não ajudei a encontrar o lugar certo em que ele está armazenado.

    
por syntagma 19.05.2015 / 07:40

1 resposta

13

O utilitário route ou ip obtém suas informações de um pseudo sistema de arquivos chamado procfs . Normalmente é montado sob /proc . Existe um arquivo chamado /proc/net/route , onde você pode ver a tabela de roteamento IP do kernel. Você pode imprimir a tabela de roteamento com cat , mas o utilitário de rota formata a saída legível por humanos, porque os endereços IP são armazenados em hexadecimal.

Esse arquivo não é apenas um arquivo normal. É sempre gerado exatamente no momento em que é aberto, com uma tentativa de leitura, como todos os arquivos no sistema de arquivos proc.

Se você está interessado em como esse arquivo é escrito, então você precisa olhar as fontes do kernel: Essa função produz a tabela de roteamento. Você vê na linha 2510 , o cabeçalho da tabela de roteamento é impresso. A tabela de roteamento parece estar principalmente na estrutura fib_info que é definida no arquivo de cabeçalho ip_fib.h, linha 98 .

    
por 19.05.2015 / 08:30