ИМЯ
netlink - макросы
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);
ОПИСАНИЕ
В <linux/netlink.h>
описаны
различные
стандартные
макросы
для
доступа
или
создания
дейтаграмм
netlink. По сути,
они
подобны
макросам,
определённым
в cmsg(3) для
обычных
данных.
Работа с
буфером,
передаваемом
или
получаемом
из сокета netlink,
должна
выполняться
только с
помощью
этих
макросов.
- NLMSG_ALIGN()
- Выравнивает
длину
сообщения
netlink до
корректного
значения.
- NLMSG_LENGTH()
- Рассматривает
длину
полезной
нагрузки
len как
аргумент и
возвращает
выравненную
длину в
поле nlmsg_len
структуры
nlmsghdr.
- NLMSG_SPACE()
- Возвращает
количество
байтов
сообщения
netlink с
полезной
нагрузкой
длинной len.
- NLMSG_DATA()
- Возвращает
указатель
на
полезную
нагрузку,
относящуюся
к
указанной
структуре
nlmsghdr.
- NLMSG_NEXT()
- Получает
следующую
структуру
nlmsghdr в
сообщении,
состоящем
из
нескольких
частей. При
вызове
необходимо
убедиться,
что в
текущей
структуре
nlmsghdr не
установлен
флаг NLMSG_DONE —
эта
функция не
возвращает
NULL в конце.
Параметр
len — это
величина lvalue,
указывающая
на
оставшуюся
длину
буфера
сообщения.
Этот
макрос
уменьшает
её на
размер
заголовка
сообщения.
- NLMSG_OK()
- Возвращает
значение
«истина»,
если
сообщение
netlink не
обрезано и
готово к
обработке.
- NLMSG_PAYLOAD()
- Возвращает
длину
полезной
нагрузки,
связанной
с nlmsghdr.
СООТВЕТСТВИЕ
СТАНДАРТАМ
Эти
макросы
являются
нестандартными
расширениями
Linux.
ЗАМЕЧАНИЯ
В
большинстве
случаев
лучше
использовать
netlink с помощью
функций
библиотеки
libnetlink, а не
через
низкоуровневый
интерфейс
ядра.