netlink(3) macros netlink

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.