| 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 القياسية):
- RTM_NEWLINK
- RTM_DELLINK
- RTM_GETLINK
- إنشاء واجهة شبكة محددة أو إزالتها أو الحصول على معلومات عنها. تحتوي هذه الرسائل على هيكل 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).
- RTM_NEWADDR
- RTM_DELADDR
- RTM_GETADDR
- إضافة أو إزالة أو تلقي معلومات حول عنوان 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 عمرًا غير محدود.
- RTM_NEWROUTE
- RTM_DELROUTE
- RTM_GETROUTE
- إنشاء مسار شبكة أو إزالته أو تلقي معلومات عنه. تحتوي هذه الرسائل على هيكل 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>.
- املأ هذه القيم!
- RTM_NEWNEIGH
- RTM_DELNEIGH
- RTM_GETNEIGH
- أضف معلومات حول مدخل جدول مجاور (مثل مدخل 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.
- RTM_NEWRULE
- RTM_DELRULE
- RTM_GETRULE
- أضف قاعدة توجيه، أو احذفها، أو استرجعها. تحمل struct rtmsg
- RTM_NEWQDISC
- RTM_DELQDISC
- RTM_GETQDISC
- أضف نظام جدولة طوابير (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. لمزيد من المعلومات راجع ملفات التضمين المناسبة.
- RTM_NEWTCLASS
- RTM_DELTCLASS
- RTM_GETTCLASS
- أضِف فئة حركة مرور، أو أزلها، أو احصل عليها. تحتوي هذه الرسائل على struct tcmsg كما هو موضح أعلاه.
- RTM_NEWTFILTER
- RTM_DELTFILTER
- RTM_GETTFILTER
- أضِف مرشح حركة مرور، أو أزله، أو استلم معلومات عنه. تحتوي هذه الرسائل على 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 | صفحات دليل لينكس (لم تصدر بعد) |