NETLINK(3)

НАЗВАНИЕ
netlink - макросы датаграмм сетевого соединения

СИНТАКСИС
#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);

ОПИСАНИЕ
netlink.h описывает различные макросы для доступа к сетевым датаграммам и их создания. По сути, они подобны макросам, определенным в cmsg(3) для обычных данных. Буфер, работающий в сетевых сокетах, должен использоваться только с помощью этих макросов.

NLMSG_ALIGN
    Выравнивает длину сетевого сообщения до большей корректной длины.

NLMSG_LENGTH
    Рассматривает длину "полезной" части как аргумент и возвращает выравненную длину полям nlmsg_len или nlmsghdr.

NLMSG_SPACE
    Возвращает количество байтов сетевого сообщения.

NLMSG_DATA
    Возвращает указатель на "полезную" часть сообщения, ассоциированную с nlmsghdr.

NLMSG_NEXT
    Получает следующий nlmsghdr в сообщении, состоящем из нескольких частей. При вызове необходимо убедиться, что в текущем nlmsghdr не установлен флаг NLMSG_DONE: эта функция не возвращает NULL в конце. Параметр length - это величина, указывающая на оставшуюся длину буфера. Этот макрос уменьшает ее на размер заголовка сообщения.

NLMSG_OK
    Возвращает значение "истина", если сетевое сообщение не разорвано и готово к обработке.

NLMSG_PAYLOAD
    Возвращает длину "полезной" части, ассоциированной с nlmsghdr.

ЗАМЕЧАНИЯ
Гораздо лучше оперировать сетевыми соединениями с помощью библиотеки libnetlink, а не низкоуровневых функций ядра.

СМ. ТАКЖЕ
netlink(7)

ftp://ftp.inr.ac.ru/ip-routing/iproute2* - библиотека libnetlink