Scroll to navigation

rtnetlink(7) Miscellaneous Information Manual rtnetlink(7)

الاسم

rtnetlink - مقبس توجيه لينكس

موجز

#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);

الوصف

يسمح Rtnetlink بقراءة جداول توجيه النواة وتعديلها. يُستخدم داخل النواة للتواصل بين الأنظمة الفرعية المختلفة، رغم أن هذا الاستخدام غير موثق هنا، وللتواصل مع برامج فضاء المستخدم. يمكن التحكم في مسارات الشبكة، وعناوين IP، ومعلمات الوصلة، وإعدادات الجوار، وضوابط جدولة الدور (queueing disciplines)، وفئات حركة المرور، ومصنفات الحزم، كل ذلك عبر مقابس NETLINK_ROUTE. وهو يعتمد على رسائل netlink؛ انظر netlink(7) للمزيد من المعلومات.

سمات التوجيه

تحتوي بعض رسائل rtnetlink على سمات اختيارية بعد الترويسة الأولية:


struct rtattr {

unsigned short rta_len; /* طول الخيار */
unsigned short rta_type; /* نوع الخيار */
/* البيانات تتبع */ };

ينبغي التعامل مع هذه السمات باستخدام وحدات ماكرو RTA_* فقط أو libnetlink، انظر rtnetlink(3).

الرسائل

يتكون Rtnetlink من أنواع الرسائل هذه (بالإضافة إلى رسائل netlink القياسية):

إنشاء واجهة شبكة محددة أو إزالتها أو الحصول على معلومات عنها. تحتوي هذه الرسائل على هيكل ifinfomsg يليه سلسلة من هياكل rtattr.
struct ifinfomsg {

unsigned char ifi_family; /* AF_UNSPEC */
unsigned short ifi_type; /* نوع الجهاز */
int ifi_index; /* فهرس الواجهة */
unsigned int ifi_flags; /* أعلام الجهاز */
unsigned int ifi_change; /* قناع التغيير */ };
يحتوي ifi_flags على أعلام الجهاز، انظر netdevice(7)؛ و ifi_index هو فهرس الواجهة الفريد (منذ لينكس 3.7، يمكن تقديم قيمة غير صفرية مع رسالة RTM_NEWLINK، وبالتالي إنشاء وصلة بـ ifindex المعطى)؛ و ifi_change هو قناع يحدد أي بتات من ifi_flags يجب تطبيقها على الجهاز.
سمات التوجيه
rta_type نوع القيمة الوصف
IFLA_UNSPEC - غير محدد
IFLA_ADDRESS عنوان العتاد عنوان الطبقة الثانية (L2) للواجهة
IFLA_BROADCAST عنوان العتاد عنوان بث الطبقة الثانية (L2)
IFLA_IFNAME سلسلة asciiz اسم الجهاز
IFLA_MTU unsigned int وحدة النقل القصوى (MTU) للجهاز
IFLA_LINK int نوع الوصلة
IFLA_QDISC سلسلة asciiz انضباط الجدولة
IFLA_STATS انظر أدناه إحصائيات الواجهة
IFLA_PERM_ADDRESS عنوان العتاد عنوان العتاد المقدم من الجهاز (منذ لينكس 5.5)
نوع القيمة لـ IFLA_STATS هو struct rtnl_link_stats (في لينكس 2.4 وما قبله كان struct net_device_stats).
إضافة أو إزالة أو تلقي معلومات حول عنوان IP مرتبط بواجهة. في لينكس 2.2، يمكن للواجهة أن تحمل عناوين IP متعددة، وهذا يحل محل مفهوم جهاز الاسم المستعار (alias device) في لينكس 2.0. في لينكس 2.2، تدعم هذه الرسائل عناوين IPv4 و IPv6. وهي تحتوي على هيكل ifaddrmsg، تتبعه اختياريًا سمات توجيه rtattr.
struct ifaddrmsg {

unsigned char ifa_family; /* نوع العنوان */
unsigned char ifa_prefixlen; /* طول بادئة العنوان */
unsigned char ifa_flags; /* أعلام العنوان */
unsigned char ifa_scope; /* نطاق العنوان */
unsigned int ifa_index; /* فهرس الواجهة */ };
ifa_family هو نوع عائلة العناوين (حاليًا AF_INET أو AF_INET6)، و ifa_prefixlen هو طول قناع العنوان إذا كان محددًا للعائلة (مثل IPv4)، و ifa_scope هو نطاق العنوان، و ifa_index هو فهرس الواجهة التي يرتبط بها العنوان. ifa_flags هي كلمة أعلام تتضمن IFA_F_SECONDARY للعنوان الثانوي (واجهة الاسم المستعار القديمة)، و IFA_F_PERMANENT لعنوان دائم ضبطه المستخدم، وأعلام أخرى غير موثقة.
سمات
rta_type نوع القيمة الوصف
IFA_UNSPEC - غير محدد
IFA_ADDRESS عنوان البروتوكول الخام عنوان الواجهة
IFA_LOCAL عنوان البروتوكول الخام عنوان محلي
IFA_LABEL سلسلة asciiz اسم الواجهة
IFA_BROADCAST عنوان البروتوكول الخام عنوان البث
IFA_ANYCAST عنوان البروتوكول الخام عنوان البث لأي وجهة (anycast)
IFA_CACHEINFO struct ifa_cacheinfo معلومات العنوان
struct ifa_cacheinfo {

__u32 ifa_prefered; // العمر المفضل المتبقي، بالثواني
__u32 ifa_valid; // العمر الصالح المتبقي، بالثواني
__u32 cstamp; // طابع وقت الإنشاء، بأجزاء المئة من الثانية
__u32 tstamp; // طابع وقت التحديث، بأجزاء المئة من الثانية };
لا يمكن أن يكون ifa_valid صفرًا، ولا يمكن أن يكون ifa_prefered أكبر من ifa_valid. تمثل القيمة UINT32_MAX عمرًا غير محدود.
إنشاء مسار شبكة أو إزالته أو تلقي معلومات عنه. تحتوي هذه الرسائل على هيكل rtmsg متبوعًا بتسلسل اختياري من هياكل rtattr. بالنسبة لـ RTM_GETROUTE، فإن ضبط rtm_dst_len و rtm_src_len على 0 يعني الحصول على جميع المدخلات لجدول التوجيه المحدد. أما الحقول الأخرى، باستثناء rtm_table و rtm_protocol، فإن 0 يعمل كرمز بديل (wildcard).
struct rtmsg {

unsigned char rtm_family; /* عائلة عناوين المسار */
unsigned char rtm_dst_len; /* طول الوجهة */
unsigned char rtm_src_len; /* طول المصدر */
unsigned char rtm_tos; /* مرشح نوع الخدمة (TOS) */
unsigned char rtm_table; /* معرف جدول التوجيه؛
انظر RTA_TABLE أدناه */
unsigned char rtm_protocol; /* بروتوكول التوجيه؛ انظر أدناه */
unsigned char rtm_scope; /* انظر أدناه */
unsigned char rtm_type; /* انظر أدناه */
unsigned int rtm_flags; };
rtm_type نوع المسار
RTN_UNSPEC مسار غير معروف
RTN_UNICAST بوابة أو مسار مباشر
RTN_LOCAL مسار واجهة محلي
RTN_BROADCAST مسار بث محلي (يُرسل كبث)
RTN_ANYCAST مسار بث محلي (يُرسل كبث لوجهة محددة/unicast)
RTN_MULTICAST مسار بث مجموعاتي
RTN_BLACKHOLE مسار لإسقاط الحزم
RTN_UNREACHABLE وجهة لا يمكن الوصول إليها
RTN_PROHIBIT مسار لرفض الحزم
RTN_THROW مواصلة البحث عن المسار في جدول آخر
RTN_NAT قاعدة لترجمة عناوين الشبكة
RTN_XRESOLVE الإحالة إلى محلل خارجي (غير مُنفذ)
rtm_protocol أصل المسار
RTPROT_UNSPEC unknown
RTPROT_REDIRECT بواسطة إعادة توجيه ICMP (غير مستخدم حاليًا)
RTPROT_KERNEL بواسطة النواة
RTPROT_BOOT أثناء الإقلاع
RTPROT_STATIC بواسطة المدير
القيم الأكبر من RTPROT_STATIC لا تفسرها النواة، بل هي لمجرد إخبار المستخدم. ويمكن استخدامها لوسم مصدر معلومات التوجيه أو للتمييز بين شياطين توجيه متعددة. انظر <linux/rtnetlink.h> لمعرفات شياطين التوجيه المعينة مسبقًا.
rtm_scope هي المسافة إلى الوجهة:
RT_SCOPE_UNIVERSE مسار عام
RT_SCOPE_SITE مسار داخلي في النظام الذاتي المحلي
RT_SCOPE_LINK مسار على هذه الوصلة
RT_SCOPE_HOST مسار على الحاسوب المحلي
RT_SCOPE_NOWHERE الوجهة غير موجودة
القيم بين RT_SCOPE_UNIVERSE و RT_SCOPE_SITE متاحة للمستخدم.
تمتلك rtm_flags المعاني التالية:
RTM_F_NOTIFY إذا تغير المسار، أخطر المستخدم عبر rtnetlink
RTM_F_CLONED المسار منسوخ من مسار آخر
RTM_F_EQUALIZE موازن متعدد المسارات (لم يُنفذ بعد)
تحدد rtm_table جدول التوجيه
RT_TABLE_UNSPEC جدول توجيه غير محدد
RT_TABLE_DEFAULT الجدول المبدئي
RT_TABLE_MAIN الجدول الرئيس
RT_TABLE_LOCAL الجدول المحلي
يمكن للمستخدم تعيين قيم عشوائية بين RT_TABLE_UNSPEC و RT_TABLE_DEFAULT.
سمات
rta_type نوع القيمة الوصف
RTA_UNSPEC - ignored
RTA_DST عنوان البروتوكول عنوان وجهة المسار
RTA_SRC عنوان البروتوكول عنوان مصدر المسار
RTA_IIF int فهرس واجهة الإدخال
RTA_OIF int فهرس واجهة الإخراج
RTA_GATEWAY عنوان البروتوكول بوابة المسار
RTA_PRIORITY int أولوية المسار
RTA_PREFSRC عنوان البروتوكول عنوان المصدر المفضل
RTA_METRICS مقاييس المسار (انظر أدناه).
RTA_MULTIPATH بيانات القفزة التالية متعددة المسارات (انظر أدناه).
RTA_PROTOINFO لم يعد مستخدماً
RTA_FLOW int مجال المسار
RTA_CACHEINFO struct rta_cacheinfo (انظر linux/rtnetlink.h)
RTA_SESSION لم يعد مستخدماً
RTA_MP_ALGO لم يعد مستخدماً
RTA_TABLE int معرف جدول التوجيه؛ إذا عُين، يُتجاهل rtm_table
RTA_MARK int
RTA_MFC_STATS struct rta_mfc_stats (انظر linux/rtnetlink.h)
RTA_VIA struct rtvia بوابة في عائلة عناوين (AF) مختلفة (انظر أدناه)
RTA_NEWDST عنوان البروتوكول تغيير عنوان وجهة الحزمة
RTA_PREF char تفضيل موجه IPv6 وفقًا لـ RFC4191 (انظر أدناه)
RTA_ENCAP_TYPE short نوع التغليف لـ الأنفاق خفيفة الوزن (lwtunnels) (انظر أدناه)
RTA_ENCAP مُعرَّف بواسطة RTA_ENCAP_TYPE
RTA_EXPIRES int وقت انتهاء صلاحية مسارات IPv6 (بالثواني)
تحتوي RTA_METRICS على مصفوفة من struct rtattr مع سماتها المقابلة:
سمات
rta_type نوع القيمة الوصف
RTAX_UNSPEC - غير محدد
RTAX_LOCK __u32 حقل بتات يشير إلى سمات RTAX_* الموصدة.
RTAX_MTU __u32 وحدة الإرسال القصوى لهذا المسار.
RTAX_WINDOW __u32 الحجم الأقصى لنافذة الاستقبال لهذا المسار.
RTAX_RTT __u32 وقت الذهاب والإياب المقدّر لهذا المسار.
RTAX_RTTVAR __u32 تباين وقت الذهاب والإياب المقدّر لهذا المسار.
RTAX_SSTHRESH __u32 عتبة البداية البطيئة لاستخدامها لهذا المسار.
RTAX_CWND __u32 الحجم الأقصى لنافذة الازدحام لهذا المسار.
RTAX_ADVMSS __u32 حجم القطعة الأقصى المُراد الإعلان عنه لهذا المسار.
RTAX_REORDERING __u32 مستوى إعادة ترتيب الحزم المبدئي لهذا المسار.
RTAX_HOPLIMIT __u32 حد القفزات (TTL) لاستخدامه لهذا المسار.
RTAX_INITCWND __u32 نافذة الازدحام المبدئية لاستخدامها لهذا المسار.
RTAX_FEATURES __u32 المزايا المراد تمكينها لهذا المسار على وجه التحديد.
RTAX_RTO_MIN __u32 مهلة إعادة الإرسال الدنيا لاستخدامها لهذا المسار.
RTAX_INITRWND __u32 الحجم المبدئي لنافذة الاستقبال لهذا المسار.
RTAX_QUICKACK __u32 استخدم الإقرار السريع (quick ack) لهذا المسار.
RTAX_CC_ALGO سلسلة asciiz خوارزمية التحكم في الازدحام لاستخدامها لهذا المسار.
RTAX_FASTOPEN_NO_COOKIE __u32 اسمح بفتح TCP السريع بدون ملف تعريف ارتباط (cookie).
المقاييس الموصدة بـ RTAX_LOCK لها الأسبقية على القيم التي تستخدمها الـ نواة عادةً (المحسوبة أو المخصصة بواسطة sysctl أو setsockopt(2)). لذا، فإن بعض المقاييس، مثل RTAX_RTO_MIN، ليس لها تأثير ما لم يُضبط البت الخاص بها في RTAX_LOCK.
تحتوي RTA_MULTIPATH على عدة حالات محزومة من struct rtnexthop مع RTAs متداخلة (RTA_GATEWAY):

struct rtnexthop {

unsigned short rtnh_len; /* طول البنية + طول
RTAs */
unsigned char rtnh_flags; /* أعلام (انظر
linux/rtnetlink.h) */
unsigned char rtnh_hops; /* أولوية القفزة التالية */
int rtnh_ifindex; /* فهرس الواجهة لهذه
القفزة التالية */ }

توجد مجموعة من ماكروهات RTNH_* المشابهة لماكروهات RTA_* و NLHDR_* المفيدة للتعامل مع هذه البنى.

struct rtvia {

unsigned short rtvia_family;
unsigned char rtvia_addr[0]; };

rtvia_addr هو العنوان، و rtvia_family هو نوع عائلته.
قد تحتوي RTA_PREF على القيم ICMPV6_ROUTER_PREF_LOW، و ICMPV6_ROUTER_PREF_MEDIUM، و ICMPV6_ROUTER_PREF_HIGH المُعرَّفة في <linux/icmpv6.h>.
قد تحتوي RTA_ENCAP_TYPE على القيم LWTUNNEL_ENCAP_MPLS، أو LWTUNNEL_ENCAP_IP، أو LWTUNNEL_ENCAP_ILA، أو LWTUNNEL_ENCAP_IP6 المُعرَّفة في <linux/lwtunnel.h>.
املأ هذه القيم!
أضف معلومات حول مدخل جدول مجاور (مثل مدخل ARP)، أو أزلها، أو استقبلها. تحتوي الرسالة على بنية ndmsg.
struct ndmsg {

unsigned char ndm_family;
int ndm_ifindex; /* فهرس الواجهة */
__u16 ndm_state; /* الحالة */
__u8 ndm_flags; /* أعلام */
__u8 ndm_type; }; struct nda_cacheinfo {
__u32 ndm_confirmed;
__u32 ndm_used;
__u32 ndm_updated;
__u32 ndm_refcnt; };
ndm_state هو قناع بتات للحالات التالية:
NUD_INCOMPLETE مدخل خبيئة يُحلّ حاليًا
NUD_REACHABLE مدخل خبيئة عامل ومؤكَّد
NUD_STALE مدخل خبيئة منتهي الصلاحية
NUD_DELAY مدخل ينتظر مؤقتًا
NUD_PROBE مدخل خبيئة يُعاد سبره حاليًا
NUD_FAILED مدخل خبيئة غير صالح
NUD_NOARP جهاز ليس له خبيئة وجهة
NUD_PERMANENT مدخل ساكن
أعلام ndm_flags الصالحة هي:
NTF_PROXY مدخل arp وكيل
NTF_ROUTER موجّه IPv6
بنية rtattr لها المعاني التالية لحقل rta_type:
NDA_UNSPEC نوع غير معروف
NDA_DST عنوان وجهة لطبقة الشبكة في خبيئة المجاورة
NDA_LLADDR عنوان لطبقة الوصلة في خبيئة المجاورة
NDA_CACHEINFO إحصائيات الـ خبيئة
إذا كان حقل rta_type هو NDA_CACHEINFO، فستتبعه ترويسة struct nda_cacheinfo.
أضف قاعدة توجيه، أو احذفها، أو استرجعها. تحمل struct rtmsg
أضف نظام جدولة طوابير (queueing discipline)، أو أزله، أو احصل عليه. تحتوي الرسالة على struct tcmsg وقد تتبعها سلسلة من السمات.
struct tcmsg {

unsigned char tcm_family;
int tcm_ifindex; /* فهرس الواجهة */
__u32 tcm_handle; /* مقبض Qdisc */
__u32 tcm_parent; /* Qdisc الأب */
__u32 tcm_info; };
سمات
rta_type نوع القيمة الوصف
TCA_UNSPEC - غير محدد
TCA_KIND سلسلة asciiz اسم نظام جدولة الطوابير
TCA_OPTIONS تسلسل بايتات تليها الخيارات الخاصة بـ Qdisc
TCA_STATS struct tc_stats إحصائيات Qdisc
TCA_XSTATS خاص بـ qdisc إحصائيات خاصة بالوحدة
TCA_RATE struct tc_estimator حد المعدل
بالإضافة إلى ذلك، تُسمح بسمات متنوعة أخرى خاصة بوحدات qdisc. لمزيد من المعلومات راجع ملفات التضمين المناسبة.
أضِف فئة حركة مرور، أو أزلها، أو احصل عليها. تحتوي هذه الرسائل على struct tcmsg كما هو موضح أعلاه.
أضِف مرشح حركة مرور، أو أزله، أو استلم معلومات عنه. تحتوي هذه الرسائل على struct tcmsg كما هو موضح أعلاه.

الإصدارات

تُعد rtnetlink ميزة جديدة في لينكس 2.2.

العلل

صفحة الدليل هذه غير مكتملة.

انظر أيضًا

cmsg(3)، وrtnetlink(3)، وip(7)، وnetlink(7)

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

8 فبراير 2026 صفحات دليل لينكس (لم تصدر بعد)