Cuando ejecuto route -n
, ¿de dónde exactamente (de qué struct
s) se recupera la información que se muestra?
Intenté ejecutar strace route -n
pero no me ayudó a encontrar el lugar correcto donde está almacenado.
linux
networking
kernel
linux-kernel
route
sintagma
fuente
fuente
struct
es responsable de mantener la información./etc/sysconfig/network-scripts/ifcfg-${DEV}
casos simples y / o de lo que se puede encontrar en/etc/sysconfig/network-scripts/route-${DEV}
casos más complicados (caso de Red Hat / CentOS 7) El último archivo contiene la salida deip -r
. Consulte Agregar una ruta estática en CentOS .Respuestas:
El
route
o laip
utilidad obtienen su información de un pseudo sistema de archivos llamadoprocfs
. Normalmente está montado debajo/proc
. Hay un archivo llamado/proc/net/route
, donde puede ver la tabla de enrutamiento IP del núcleo. En su lugar, puede imprimir la tabla de enrutamientocat
, pero la utilidad de ruta formatea la salida legible por humanos, porque las direcciones IP se almacenan en hexadecimal.Ese archivo no es solo un archivo normal. Siempre se genera exactamente en el momento en que se abre con un intento de lectura, como todos los archivos en el sistema de archivos proc.
Si está interesado en cómo se escribe ese archivo, debe mirar las fuentes del núcleo: esa función genera la tabla de enrutamiento. Verá en la línea 2510 , se imprime el encabezado de la tabla de enrutamiento. La tabla de enrutamiento parece estar principalmente en la estructura
fib_info
que se define en el archivo de encabezado ip_fib.h, línea 98 .fuente