Provided by: manpages-es_1.55-10_all bug

NOMBRE

       rtnetlink, NETLINK_ROUTE - Conector de enrutamiento IPv4 de Linux.

SINOPSIS

       #include <asm/types.h>
       #include <linux/netlink.h>
       #include <linux/rtnetlink.h>
       #include <sys/socket.h>

       rtnetlink_socket = socket(PF_NETLINK, int socket_type, NETLINK_ROUTE);

DESCRIPCI'ON

       Rtnetlink permite leer y alterar las tablas de enrutamiento del nucleo.
       Se usa dentro del nucleo para comunicar  entre  si  varios  subsistemas
       (aunque  este  uso  no  se  documenta  aqui) y para la comunicacion con
       programas en el espacio de usuario.  Las rutas de red, las  direcciones
       IP,  los  parametros  de  enlace,  las  configuraciones de vecinos, las
       disciplinas  de  encolamiento,  las  clases  de   intercambio   y   los
       clasificadores  de  paquetes  pueden controlarse a traves de conectores
       NETLINK_ROUTE.  Todo esto se basa en mensajes netlink.  Vea  netlink(7)
       para mas informacion.

ATRIBUTOS DE ENRUTAMIENTO

       Algunos  mensajes  rtnetlink  poseen atributos opcionales despues de la
       cabecera inicial:

       struct rtattr
       {
           unsigned short rta_len;     /* Longitud de la opcion */
           unsigned short rta_type;    /* Tipo de opcion */
           /* Los datos vienen a continuacion */
       };

       Estos atributos solo deberian manipularse usando las macros RTA_* o  la
       biblioteca libnetlink. Vea rtnetlink(3).

MENSAJES

       Rtnetlink  esta formado por los siguientes tipos de mensajes (ademas de
       los mensajes netlink estandares):

       RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK
              Crea, borra  u  obtiene  informacion  de  una  interfaz  de  red
              especifica.  Estos  mensajes  contienen una estructura ifinfomsg
              seguida por una serie de estructuras rtattr.

              struct ifinfomsg
              {
                  unsigned char  ifi_family;  /* AF_UNSPEC */
                  unsigned short ifi_type;    /* Tipo del dispositivo */
                  int            ifi_index;   /* Indice de la interfaz   */
                  unsigned int   ifi_flags;   /* Opciones del dispositivo  */
                  unsigned int   ifi_change;  /* Mascara de cambios */
              };

              ifi_flags   contiene   las   opciones   del   dispositivo.   Vea
              netdevice(7).    ifi_index   es   el   indice  de  la  interfaz.
              ifi_change se reserva para  uso  futuro  y  siempre  debe  valer
              0xFFFFFFFF.

              +--------------------------------------------------------------+
              |                  Atributos de enrutamiento                   |
              +---------------+---------------------+------------------------+
              |rta_type       | Tipo de valor       | Descripci'on            |
              +---------------+---------------------+------------------------+
              |IFLA_UNSPEC    | -                   | sin especificar.       |
              +---------------+---------------------+------------------------+
              |IFLA_ADDRESS   | direccion hardware  | direccion  del Nivel 2 |
              |               |                     | de la interfaz         |
              +---------------+---------------------+------------------------+
              |IFLA_BROADCAST | direccion hardware  | direccion de  difusion |
              |               |                     | del Nivel 2            |
              +---------------+---------------------+------------------------+
              |IFLA_IFNAME    | cadena terminada en | nombre del dispositivo |
              |               | cero                |                        |
              +---------------+---------------------+------------------------+
              |IFLA_MTU       | entero sin signo    | MTU del dispositivo    |
              +---------------+---------------------+------------------------+
              |IFLA_LINK      | entero              | tipo de enlace         |
              +---------------+---------------------+------------------------+
              |IFLA_QDISC     | cadena terminada en | disciplina          de |
              |               | cero                | encolamiento           |
              +---------------+---------------------+------------------------+
              |IFLA_STATS     | estructura          | estadisticas   de   la |
              |               | net_device_stats    | interfaz               |
              +---------------+---------------------+------------------------+
       RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR
              Anade, elmina o recibe informacion de una direccion IP  asociada
              con  una  interfaz.  En  Linux  2.2  una interfaz puede acarrear
              varias  direcciones  IP.   Esto   reemplaza   el   concepto   de
              dispositivo alias de la version 2.0. En Linux 2.2 estos mensajes
              soportan direcciones  IPv4  e  IPv6.  Contienen  una  estructura
              ifaddrmsg  seguida  opcionalmente  por atributos de enrutamiento
              rtaddr.

              struct ifaddrmsg
              {
                  unsigned char  ifa_family;    /* Tipo de direccion */
                  unsigned char  ifa_prefixlen; /* Longitud del prefijo de
                                                   la direccion */
                  unsigned char  ifa_flags;     /* Opciones de la direccion */
                  unsigned char  ifa_scope;     /* Ambito de la direccion */
                  int            ifa_index;     /* Indice de la interfaz */
              };

              ifa_family es el tipo de la familia de direcciones  (actualmente
              AF_INET  o AF_INET6), ifa_prefixlen es la longitud de la mascara
              de la direccion si esta esta  definida  para  la  familia  (como
              ocurre  con  IPv4),  ifa_scope  es  el  ambito  de la direccion,
              ifa_index es el indice de la interfaz con la  que  la  direccion
              esta  asociada.   ifa_flags  es  una  palabra  de  opciones  que
              contiene IFA_F_SECONDARY para una direccion secundaria  (antiguo
              interfaz  alias),  IFA_F_PERMANENT para una direccion permanente
              configurada por el usuario, y otras opciones sin documentar.

              +----------------------------------------------------------+
              |                        Atributos                         |
              +--------------+---------------------+---------------------+
              |rta_type      | Tipo de valor       | Descripci'on         |
              +--------------+---------------------+---------------------+
              |IFA_UNSPEC    | -                   | sin especificar.    |
              +--------------+---------------------+---------------------+
              |IFA_ADDRESS   | direccion        de | direccion   de   la |
              |              | protocolo           | interfaz            |
              +--------------+---------------------+---------------------+
              |IFA_LOCAL     | direccion        de | direccion local     |
              |              | protocolo           |                     |
              +--------------+---------------------+---------------------+
              |IFA_LABEL     | cadena terminada en | nombre    de     la |
              |              | cero                | interfaz            |
              +--------------+---------------------+---------------------+
              |IFA_BROADCAST | direccion        de | direccion        de |
              |              | protocolo           | difusion            |
              +--------------+---------------------+---------------------+
              |IFA_ANYCAST   | direccion        de | direccion        de |
              |              | protocolo           | "cualquier destino" |
              +--------------+---------------------+---------------------+
              |IFA_CACHEINFO | estructura          | informacion  de  la |
              |              | ifa_cacheinfo       | direccion           |
              +--------------+---------------------+---------------------+

       RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE
              Crea,  borra  o  recibe  informacion  de una ruta de red.  Estos
              mensajes  contienen  una  estructura  rtmsg  con  una  secuencia
              opcional  a continuacion de estructuras rtattr.Para RTM_GETROUTE
              asignar a rtm_dst_len y a rtm_src_len el valor 0 implica obtener
              todas  las  entradas para la tabla de enrutamiento especificada.
              Para otros campos salvo rtm_table y rtm_protocol el  comodin  es
              0.

              struct rtmsg
              {
                  unsigned char  rtm_family;    /* Familia de direcciones de
                                                   la ruta */
                  unsigned char  rtm_dst_len;   /* Longitud del destino */
                  unsigned char  rtm_src_len;   /* Longitud del origen */
                  unsigned char  rtm_tos;       /* Filtro TOS */

                  unsigned char  rtm_table;     /* Identificador de la tabla de
                                                   enrutamiento */
                  unsigned char  rtm_protocol;  /* Protocolo de enrutamiento.
                                                   Ver mas abajo */
                  unsigned char  rtm_scope;     /* Ver mas abajo */
                  unsigned char  rtm_type;      /* Ver mas abajo */

                  unsigned int   rtm_flags;
              };

              +----------------+-----------------------------------------------+
              |rtm_type        | Tipo de ruta                                  |
              +----------------+-----------------------------------------------+
              |RTN_UNSPEC      | ruta desconocida                              |
              +----------------+-----------------------------------------------+
              |RTN_UNICAST     | una pasarela (gateway) o ruta directa         |
              +----------------+-----------------------------------------------+
              |RTN_LOCAL       | una ruta de la interfaz local                 |
              +----------------+-----------------------------------------------+
              |RTN_BROADCAST   | una  ruta  de  difusion local (enviada en una |
              |                | difusion)                                     |
              +----------------+-----------------------------------------------+
              |RTN_ANYCAST     | una ruta de difusion  local  (enviada  en  un |
              |                | unidestino)                                   |
              +----------------+-----------------------------------------------+
              |RTN_MULTICAST   | una ruta multidestino                         |
              +----------------+-----------------------------------------------+
              |RTN_BLACKHOLE   | una ruta para la perdida de paquetes          |
              +----------------+-----------------------------------------------+
              |RTN_UNREACHABLE | un destino inalcanzable                       |
              +----------------+-----------------------------------------------+
              |RTN_PROHIBIT    | una ruta de rechazo de paquetes               |
              +----------------+-----------------------------------------------+
              |RTN_THROW       | continuar la busqueda de rutas en otra tabla  |
              +----------------+-----------------------------------------------+
              |RTN_NAT         | una regla de traduccion de direcciones de red |
              +----------------+-----------------------------------------------+
              |RTN_XRESOLVE    | remitir  a  una entidad de resolucion externa |
              |                | (no implementado)                             |
              +----------------+-----------------------------------------------+

              +----------------+----------------------------+
              |rtm_protocol    | Ruta original              |
              +----------------+----------------------------+
              |RTPROT_UNSPEC   | desconocido                |
              +----------------+----------------------------+
              |RTPROT_REDIRECT | por una  redireccion  ICMP |
              |                | (no usado actualmente)     |
              +----------------+----------------------------+
              |RTPROT_KERNEL   | por el nucleo              |
              +----------------+----------------------------+
              |RTPROT_BOOT     | durante el arranque        |
              +----------------+----------------------------+
              |RTPROT_STATIC   | por el administrador       |
              +----------------+----------------------------+
              Los  valores  mayores que RTPROT_STATIC no son interpretados por
              el nucleo, solo son para informacion de usuario. Se pueden  usar
              para  identificar la fuente de una informacion de enrutamiento o
              para distinguir  entre  varios  demonios  de  enrutamiento.  Vea
              <linux/rtnetlink.h> para los indentificadores de los demonios de
              enrutamiento que ya estan asignados.

              rtm_scope es la distancia al destino:

              +------------------+----------------------------+
              |RT_SCOPE_UNIVERSE | ruta global                |
              +------------------+----------------------------+
              |RT_SCOPE_SITE     | ruta   interior   en    el |
              |                  | sistema autonomo local     |
              +------------------+----------------------------+
              |RT_SCOPE_LINK     | ruta en este enlace        |
              +------------------+----------------------------+
              |RT_SCOPE_HOST     | ruta en el anfitrion local |
              +------------------+----------------------------+
              |RT_SCOPE_NOWHERE  | el destino no existe       |
              +------------------+----------------------------+
              Los   valores  entre  RT_SCOPE_UNIVERSE  y  RT_SCOPE_SITE  estan
              disponibles para el usuario.

              rtm_flags tiene los siguientes significados:

              +---------------+--------------------------------------+
              |RTM_F_NOTIFY   | si  la  ruta  cambia,  informar   al |
              |               | usuario mediante rtnetlink           |
              +---------------+--------------------------------------+
              |RTM_F_CLONED   | la ruta es un duplicado de otra ruta |
              +---------------+--------------------------------------+
              |RTM_F_EQUALIZE | un   equalizador   multidestino  (no |
              |               | implementado todavia)                |
              +---------------+--------------------------------------+
              rtm_table especifica la tabla de enrutamiento

              +-----------------+-------------------------------------------+
              |RT_TABLE_UNSPEC  | una tabla de enrutamiento sin especificar |
              +-----------------+-------------------------------------------+
              |RT_TABLE_DEFAULT | la tabla por defecto                      |
              +-----------------+-------------------------------------------+
              |RT_TABLE_MAIN    | la tabla principal                        |
              +-----------------+-------------------------------------------+
              |RT_TABLE_LOCAL   | la tabla local                            |
              +-----------------+-------------------------------------------+
              El   usuario   puede   asignar   valores    arbitrarios    entre
              RT_TABLE_UNSPEC y RT_TABLE_DEFAULT.

              +-----------------------------------------------------------+
              |                        Atributos                          |
              +--------------+---------------------+----------------------+
              |rta_type      | Tipo de valor       | Descripci'on          |
              +--------------+---------------------+----------------------+
              |RTA_UNSPEC    | -                   | ignorado             |
              +--------------+---------------------+----------------------+
              |RTA_DST       | direccion        de | direccion de destino |
              |              | protocolo           | de la ruta           |
              +--------------+---------------------+----------------------+
              |RTA_SRC       | direccion        de | direccion de  origen |
              |              | protocolo           | de la ruta           |
              +--------------+---------------------+----------------------+
              |RTA_IIF       | entero              | indice     de     la |
              |              |                     | interfaz de entrada  |
              +--------------+---------------------+----------------------+
              |RTA_OIF       | entero              | indice     de     la |
              |              |                     | interfaz de salida   |
              +--------------+---------------------+----------------------+
              |RTA_GATEWAY   | direccion        de | la          pasarela |
              |              | protocolo           | (gateway) de la ruta |
              +--------------+---------------------+----------------------+
              |RTA_PRIORITY  | entero              | prioridad de la ruta |
              +--------------+---------------------+----------------------+
              |RTA_PREFSRC   |                     |                      |
              +--------------+---------------------+----------------------+
              |RTA_METRICS   | entero              | metrica de la ruta   |
              +--------------+---------------------+----------------------+
              |RTA_MULTIPATH |                     |                      |
              +--------------+---------------------+----------------------+
              |RTA_PROTOINFO |                     |                      |
              +--------------+---------------------+----------------------+
              |RTA_FLOW      |                     |                      |
              +--------------+---------------------+----------------------+
              |RTA_CACHEINFO |                     |                      |
              +--------------+---------------------+----------------------+
              ,iEsta tabla est'a incompleta!

       RTM_NEWNEIGH, RTM_DELNEIGH, RTM_GETNEIGH
              Anade,  borra o recibe informacion de una entrada de la tabla de
              vecinos (por ejemplo, una entrada ARP). El mensaje contiene  una
              estructura ndmsg.

              struct ndmsg
              {
                  unsigned char  ndm_family;
                  int            ndm_ifindex; /* Indice de la interfaz */
                  __u16          ndm_state;   /* Estado */
                  __u8           ndm_flags;   /* Opciones */
                  __u8           ndm_type;
              };

              struct nda_cacheinfo
              {
                  __u32          ndm_confirmed;
                  __u32          ndm_used;
                  __u32          ndm_updated;
                  __u32          ndm_refcnt;
              };

              ndm_state es una mascara de bits de los siguientes estados:

              +---------------+----------------------------------------+
              |NUD_INCOMPLETE | una  entrada  de  la cache que se esta |
              |               | resolviendo actualmente                |
              +---------------+----------------------------------------+
              |NUD_REACHABLE  | una entrada de la cache que ya  se  ha |
              |               | confirmado como operativa              |
              +---------------+----------------------------------------+
              |NUD_STALE      | una entrada de la cache caduca         |
              +---------------+----------------------------------------+
              |NUD_DELAY      | una entrada que espera a un cronometro |
              +---------------+----------------------------------------+
              |NUD_PROBE      | una  entrada  de  la cache que se esta |
              |               | sondeando de nuevo actualmente         |
              +---------------+----------------------------------------+
              |NUD_FAILED     | una entrada de la cache invalida       |
              +---------------+----------------------------------------+
              |NUD_NOARP      | un dispositivo sin cache de destinos   |
              +---------------+----------------------------------------+
              |NUD_PERMANENT  | una entrada estatica                   |
              +---------------+----------------------------------------+
              Los ndm_flags validos son:

              +-----------+-----------------------+
              |NTF_PROXY  | una entrada proxy arp |
              +-----------+-----------------------+
              |NTF_ROUTER | un enrutador IPv6     |
              +-----------+-----------------------+
              Hay que documentar mejor los miembros de la estructura.

              La estructura rtaddr tiene los siguientes significados  para  el
              campo rta_type:

              +--------------+----------------------------+
              |NDA_UNSPEC    | tipo desconocido           |
              +--------------+----------------------------+
              |NDA_DST       | una  direccion  de destino |
              |              | de la capa de  red  de  la |
              |              | cache de vecinos           |
              +--------------+----------------------------+
              |NDA_LLADDR    | una  direccion  de la capa |
              |              | de enlace de la  cache  de |
              |              | vecinos                    |
              +--------------+----------------------------+
              |NDA_CACHEINFO | estadisticas de la cache   |
              +--------------+----------------------------+
              Si  el campo rta_type es NDA_CACHEINFO, a continuacion viene una
              cabecera struct nda_cacheinfo.

       RTM_NEWRULE, RTM_DELRULE, RTM_GETRULE
              Anade,  borra  o  recupera  una  regla  de  enrutamiento.  Lleva
              asociada una struct rtmsg.

       RTM_NEWQDISC, RTM_DELQDISC, RTM_GETQDISC
              Anade,  borra  u  obtiene  una  disciplina  de  encolamiento. El
              mensaje contiene una struct tcmsg que puede ir seguida  por  una
              serie de atributos.

              struct tcmsg
              {
                  unsigned char  tcm_family;
                  int            tcm_ifindex; /* Indice de la interfaz */
                  __u32          tcm_handle;  /* Descriptor qdisc */
                  __u32          tcm_parent;  /* Qdisc del padre*/
                  __u32          tcm_info;
              };

              +------------------------------------------------------------+
              |                         Atributos                          |
              +------------+-------------------------+---------------------+
              |rta_type    | Tipo de valor           | Descripci'on         |
              +------------+-------------------------+---------------------+
              |TCA_UNSPEC  | -                       | sin especificar     |
              +------------+-------------------------+---------------------+
              |TCA_KIND    | cadena   terminada   en | nombre    de     la |
              |            | cero                    | disciplina       de |
              |            |                         | encolamiento        |
              +------------+-------------------------+---------------------+
              |TCA_OPTIONS | secuencia de bytes      | opciones            |
              |            |                         | especificas      de |
              |            |                         | Qdisc que vienen  a |
              |            |                         | continuacion        |
              +------------+-------------------------+---------------------+
              |TCA_STATS   | estructura tc_stats     | estadisticas qdisc  |
              +------------+-------------------------+---------------------+
              |TCA_XSTATS  | especifico de qdisc     | estadisticas        |
              |            |                         | especificas     del |
              |            |                         | modulo              |
              +------------+-------------------------+---------------------+
              |TCA_RATE    | estructura tc_estimator | limite de la tasa   |
              +------------+-------------------------+---------------------+
              Ademas,  se  permiten otros atributos diferentes especificos del
              modulo qdisc.  Para mas informacion, vea los  ficheros  cabecera
              adecuados.

       RTM_NEWTCLASS, RTM_DELTCLASS, RTM_GETTCLASS
              Anade,  borra u obtiene una clase de intercambio. Estos mensajes
              contienen una struct tcmsg como la descrita anteriormente.

       RTM_NEWTFILTER, RTM_DELTFILTER, RTM_GETTFILTER
              Anade, borra o recibe informacion  de  una  filtro  de  trafico.
              Estos  mensajes  contienen  una  struct  tcmsg  como la descrita
              anteriormente.

VERSIONES

       rtnetlink es una nueva caracteristica de la version 2.2 de Linux.

FALLOS

       Esta pagina de manual es deficiente y esta incompleta.

V'EASE TAMBI'EN

       netlink(7), cmsg(3), ip(7), rtnetlink(3)

Pagina man de Linux              30 abril 1999                    RTNETLINK(7)