- trixie-backports 4.31.0-1~bpo13+1
- testing 4.31.0-1
- unstable 4.31.0-1
| rtnetlink(3) | Library Functions Manual | rtnetlink(3) |
الاسم¶
rtnetlink - وحدات ماكرو لمعالجة رسائل rtnetlink
المكتبة¶
مكتبة سي المعيارية (libc، -lc)
موجز¶
#include <asm/types.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> #include <sys/socket.h>
rtnetlink_socket = socket(AF_NETLINK, int socket_type, NETLINK_ROUTE);
int RTA_OK(struct rtattr *rta, int rtabuflen);
void *RTA_DATA(struct rtattr *rta); unsigned int RTA_PAYLOAD(struct rtattr *rta);
struct rtattr *RTA_NEXT(struct rtattr *rta, unsigned int rtabuflen);
unsigned int RTA_LENGTH(unsigned int length); unsigned int RTA_SPACE(unsigned int length);
الوصف¶
جميع رسائل rtnetlink(7) تتكون من رأس رسالة netlink(7) وسمات ملحقة. يجب معالجة السمات فقط باستخدام وحدات الماكرو المقدمة هنا.
RTA_OK(rta, attrlen) تُرجع صحيحًا إذا كان rta يشير إلى سمة توجيه صالحة؛ attrlen هو الطول الجاري للمخزن المؤقت للسمات. عندما لا يكون صحيحًا، يجب افتراض عدم وجود سمات أخرى في الرسالة، حتى لو كان attrlen غير صفري.
RTA_DATA(rta) تُرجع مؤشرًا إلى بداية بيانات هذه السمة.
RTA_PAYLOAD(rta) تُرجع طول بيانات هذه السمة.
RTA_NEXT(rta, attrlen) يحصل على السمة التالية بعد rta. استدعاء هذه الكلية سيُحدّث attrlen. يجب استخدام RTA_OK للتحقق من صحة المؤشر المُعاد.
RTA_LENGTH(len) يُعيد الطول المطلوب لـ len بايت من البيانات بالإضافة إلى الرأس.
RTA_SPACE(len) يُعيد مقدار المساحة اللازمة في رسالة تحتوي على len بايت من البيانات.
المعايير¶
لينكس.
العلل¶
صفحة الدليل هذه غير مكتملة.
أمثلة¶
إنشاء رسالة rtnetlink لتعيين MTU لجهاز:
#include <linux/rtnetlink.h>
...
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);
انظر أيضًا¶
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 2 مايو 2024 | صفحات دليل لينكس 6.9.1 |