.\" -*- coding: UTF-8 -*- .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" This man page is Copyright (C) 1999 Andi Kleen . .\" .\" $Id: rtnetlink.3,v 1.2 1999/05/18 10:35:10 freitag Exp $ .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH rtnetlink 3 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ rtnetlink \- макросы для обработки сообщений rtnetlink .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP \fB#include \fP \fB#include \fP \fB#include \fP .P \fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB, NETLINK_ROUTE);\fP .P \fBint RTA_OK(struct rtattr *\fP\fIrta\fP\fB, int \fP\fIrtabuflen\fP\fB);\fP .P \fBvoid *RTA_DATA(struct rtattr *\fP\fIrta\fP\fB);\fP \fBunsigned int RTA_PAYLOAD(struct rtattr *\fP\fIrta\fP\fB);\fP .P \fBstruct rtattr *RTA_NEXT(struct rtattr *\fP\fIrta\fP\fB, unsigned int \fP\fIrtabuflen\fP\fB);\fP .P \fBunsigned int RTA_LENGTH(unsigned int \fP\fIlength\fP\fB);\fP \fBunsigned int RTA_SPACE(unsigned int \fP\fIlength\fP\fB);\fP .fi .SH ОПИСАНИЕ Все сообщения \fBrtnetlink\fP(7) состоят из заголовка сообщений \fBnetlink\fP(7) и дополнительных атрибутов. Атрибуты могут быть обработаны только описанными здесь макросами. .P \fBRTA_OK(\fP\fIrta\fP\fB, \fP\fIattrlen\fP\fB)\fP возвращает истинное значение в случае, если \fIrta\fP указывает на правильный атрибут маршрутизации; \fIattrlen\fP — рабочая длина буфера атрибутов. Если возвращаемое значение ложно, то в сообщении больше нет атрибутов, даже если \fIattrlen\fP не равно нулю. .P \fBRTA_DATA(\fP\fIrta\fP\fB)\fP возвращает указатель на начало данных атрибута. .P \fBRTA_PAYLOAD(\fP\fIrta\fP\fB)\fP возвращает длину данных атрибута. .P \fBRTA_NEXT(\fP\fIrta\fP\fB, \fP\fIattrlen\fP\fB)\fP считывает следующий за \fIrta\fP атрибут. Вызов этого макроса обновит \fIattrlen\fP. Для проверки правильности полученного указателя используйте \fBRTA_OK\fP. .P \fBRTA_LENGTH(\fP\fIlen\fP\fB)\fP возвращает длину, которая требуется для \fIlen\fP байтов данных плюс заголовок. .P \fBRTA_SPACE(\fP\fIlen\fP\fB)\fP возвращает количество места, которое требуется для сообщения с данными длиной \fIlen\fP байт. .SH СТАНДАРТЫ Linux. .SH ОШИБКИ Данная справочная страница не полна. .SH ПРИМЕРЫ .\" FIXME . ? would be better to use libnetlink in the EXAMPLE code here Создание сообщения rtnetlink для установки MTU устройства: .P .in +4n .EX #include \& \&... \& struct { struct nlmsghdr nh; struct ifinfomsg if; char attrbuf[512]; } req; \& struct rtattr *rta; unsigned int mtu = 1000; \& int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE); \& memset(&req, 0, sizeof(req)); req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.if)); req.nh.nlmsg_flags = NLM_F_REQUEST; req.nh.nlmsg_type = RTM_NEWLINK; req.if.ifi_family = AF_UNSPEC; req.if.ifi_index = INTERFACE_INDEX; req.if.ifi_change = 0xffffffff; /* ??? */ rta = (struct rtattr *)(((char *) &req) + NLMSG_ALIGN(req.nh.nlmsg_len)); rta\->rta_type = IFLA_MTU; rta\->rta_len = RTA_LENGTH(sizeof(mtu)); req.nh.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) + RTA_LENGTH(sizeof(mtu)); memcpy(RTA_DATA(rta), &mtu, sizeof(mtu)); send(rtnetlink_sk, &req, req.nh.nlmsg_len, 0); .EE .in .SH "СМОТРИТЕ ТАКЖЕ" \fBnetlink\fP(3), \fBnetlink\fP(7), \fBrtnetlink\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) aereiae , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , Yuri Kozlov , Баринов Владимир и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .