SINOPSIS
#include <asm/types.h>
#include <linux/netlink.h>
int NLMSG_ALIGN(size_t len);
int NLMSG_LENGTH(size_t len);
int NLMSG_SPACE(size_t len);
void *NLMSG_DATA(struct nlmsghdr *nlh);
struct nlmsghdr *NLMSG_NEXT(struct nlmsghdr *nlh, int len);
int NLMSG_OK(struct nlmsghdr *nlh, int len);
int NLMSG_PAYLOAD(struct nlmsghdr *nlh, int len);
DESCRIPCIÓN
netlink.h define varias macros estándares para acceder o crear un datagrama netlink. En esencia son similares a las macros definidas en cmsg(3) para los datos auxiliares. Se debería acceder al buffer pasado a y desde un conector netlink usando únicamente estas macros.- NLMSG_ALIGN
- Redondea la longitud de un mensaje netlink hasta alinearlo adecuadamente.
- NLMSG_LENGTH
- Toma como argumento la longitud del contenido útil y devuelve la longitud alineada para almacenarlo en el campo nlmsg_len de nlmsghdr.
- NLMSG_SPACE
- Devuelve el número de bytes que ocuparía un mensaje netlink con un contenido útil de la longitud pasada.
- NLMSG_DATA
- Devuelve un puntero al contenido útil asociado con el nlmsghdr pasado.
- NLMSG_NEXT Obtiene el siguiente nlmsghdr en un mensaje multiparte. El invocador debe comprobar si el nlmsghdr actual no tenía activa la opción NLMSG_DONE (esta función no devuelve NULL al final). El parámetro longitud es un valor izquierdo (lvalue) que contiene la longitud restante del buffer del mensaje. Esta macro lo decrementa en la longitud de la cabecera del mensaje.
- NLMSG_OK
- Devuelve verdadero si el mensaje netlink no está truncado y es correcto para se analizado.
- NLMSG_PAYLOAD
-
Devuelve la longitud del contenido útil asociado con
nlmsghdr.
OBSERVACIONES
Normalmente es mejor usar netlink a través de libnetlink que mediante la interfaz de bajo nivel del núcleo.