netlink - макросы netlink
Standard C library (
libc,
-lc)
#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()
- Get the next nlmsghdr in a multipart message. The
caller must check if the current nlmsghdr didn't have the
NLMSG_DONE set—this function doesn't return NULL on end. The
len argument is an lvalue containing the remaining length of the
message buffer. This macro decrements it by the length of the message
header.
-
NLMSG_OK()
- Возвращает
значение
«истина»,
если
сообщение
netlink не
обрезано и
готово к
обработке.
-
NLMSG_PAYLOAD()
- Возвращает
длину
полезной
нагрузки,
связанной
с nlmsghdr.
Данные
макросы
являются
нестандартными
расширениями
Linux.
В
большинстве
случаев
лучше
использовать
netlink с помощью
функций
библиотеки
libnetlink, а не
через
низкоуровневый
интерфейс
ядра.
libnetlink(3),
netlink(7)
Русский
перевод
этой
страницы
руководства
был сделан Alex
Nik <
[email protected]>, Azamat Hackimov
<
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]