|
||||||||||||||||||||||||||||||||||||||||
|
|
NETLINKSection: Manual del Programador de Linux (7)Updated: 27 abril 1999 Index Return to Main Contents NOMBREnetlink, PF_NETLINK - Comunicación entre el núcleo y el usuario.SINOPSIS#include <asm/types.h> DESCRIPCIÓNNetlink se utiliza para transferir información entre los módulos del núcleo y los procesos del espacio de usuario. Consiste en una interfaz basada en conectores estándares para los procesos de usuario y una API del núcleo interna para los módulos del núcleo. La interfaz del núcleo interna no se documenta en esta página de manual. También existe una interfaz netlink obsoleta mediante dispositivos de caracteres netlink. Esta interfaz no se documenta aquí y sólo se proporciona por compatibilidad hacia atrás.Netlink es un servicio orientado a datagramas. Tanto SOCK_RAW como SOCK_DGRAM son valores válidos para socket_type. Sin embargo, el protocolo netlink no distingue entre conectores de datagrama y conectores directos (raw). netlink_family selecciona el módulo del núcleo o el grupo netlink con el que comunicarse. Las familias netlink asignadas actualmente son:
Los mensajes netlink consisten en un flujo de bytes con una o más cabeceras nlmsghdr y sus cargas útiles asociadas. Para los mensajes multiparte, la primera cabecera y las siguientes tienen activa la opción NLM_F_MULTI, excepto la última cabecera, que tiene el tipo NLMSG_DONE. El flujo de bytes sólo debería ser accedido con las macros estándares NLMSG_*. Vea netlink(3). Netlink no es un protocolo fiable. Intenta hacerlo lo mejor que puede para entregar un mensaje en su destino (o destinos), pero puede perder mensajes cuando no hay suficiente memoria o se produce cualquier otro error. Para una transferencia fiable, el emisor puede solicitar un reconocimiento del receptor activando la opción NLM_F_ACK. Un reconocimiento es un paquete NLMSG_ERROR cuyo campo de error vale 0. La propia aplicación debe generar reconocimientos para los mensajes recibidos. El núcleo intenta enviar un mensaje NLMSG_ERROR para cualquier paquete que falle. Un proceso de usuario también debería seguir estas convenciones. Cada familia netlink tiene un conjunto de 32 grupos multidestino (mutlicast). Cuando se llama a bind(2) sobre el conector, se debe configurar el campo nl_groups de sockaddr_nl como una máscara de bits de los grupos que se desea escuchar. El valor por omisión para este campo es cero, lo que significa que no se recibirán multidestinos. Un conector puede enviar un mensajes con varios destinos a cualquiera de los grupos multidestino, asignando a nl_groups una máscara de bits de los grupos a los que desea enviar cuando llama a sendmsg(2) o hace un connect(2). Sólo los usuarios con un identificador de usuario efectivo 0 o la capacidad CAP_NET_ADMIN pueden enviar a o escuchar de un grupo netlink multidestino. Cualquier respuesta a un mensaje recibido por un grupo multidestino se debe enviar de regreso al pid emisor y al grupo multidestino.
Después de cada nlmsghdr viene la carga útil. nlmsg_type puede ser uno de los tipos de mensajes estándares:
Una familia netlink normalmente especifica más tipos de mensajes. Vea las páginas de manual adecuadas para ello. Por ejemplo, rtnetlink(7) para NETLINK_ROUTE.
Dese cuenta que NLM_F_ATOMIC requiere CAP_NET_ADMIN o derechos de superusuario. FORMATOS DE LAS DIRECCIONESLa estructura sockaddr_nl describe un cliente netlink en el espacio de usuario o en el núcleo. Una sockaddr_nl puede ser o bien unidestino (envío a un único igual) o bien un envío a grupos netlink (nl_groups distinto de 0).
nl_pid es el PID del netlink en el espacio de usuario o 0 si el destino está en el núcleo. nl_groups es una máscara de bits con cada bit representando a un número de grupo netlink. FALLOSEsta página de manual no está completa.NOTASNormalmente es mejor usar netlink mediante libnetlink que mediante la interfaz de bajo nivel del núcleo.VERSIONESLa interfaz de conectores netlink es una nueva característica de la versión 2.2 de Linux.La versión 2.0 de Linux soportaba una interfaz netlink más primitiva basada en dispositivos (que todavía está disponible por compatibilidad). Esta interfaz obsoleta no se describe aquí. VÉASE TAMBIÉNcmsg(3), rtnetlink(7), netlink(3).ftp://ftp.inr.ac.ru/ip-routing/iproute2* para libnetlink
Index | |||||||||||||||||||||||||||||||||||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man7". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |