Scroll to navigation

netdevice(7) Miscellaneous Information Manual netdevice(7)

الاسم

netdevice - وصول منخفض المستوى إلى أجهزة الشبكة في لينكس

موجز

#include <sys/ioctl.h>
#include <net/if.h>

الوصف

تصف صفحة الدليل هذه واجهة المقابس المستخدمة لتكوين أجهزة الشبكة.

يدعم لينكس بعض أوامر ioctl القياسية لتكوين أجهزة الشبكة. يمكن استخدامها على أي واصف ملف لمقبس بغض النظر عن العائلة أو النوع. تمرر معظمها بنية ifreq:


struct ifreq {

char ifr_name[IFNAMSIZ]; /* Interface name */
union {
struct sockaddr ifr_addr;
struct sockaddr ifr_dstaddr;
struct sockaddr ifr_broadaddr;
struct sockaddr ifr_netmask;
struct sockaddr ifr_hwaddr;
short ifr_flags;
int ifr_ifindex;
int ifr_metric;
int ifr_mtu;
struct ifmap ifr_map;
char ifr_slave[IFNAMSIZ];
char ifr_newname[IFNAMSIZ];
char *ifr_data;
}; };

يشكل AF_INET6 استثناءً. يمرر بنية in6_ifreq:


struct in6_ifreq {

struct in6_addr ifr6_addr;
u32 ifr6_prefixlen;
int ifr6_ifindex; /* Interface index */ };

عادةً، يحدد المستخدم الجهاز المراد التأثير عليه بتعيين ifr_name إلى اسم الواجهة أو ifr6_ifindex إلى فهرس الواجهة. قد تشارك جميع الأعضاء الأخرى في البنية الذاكرة.

Ioctls

إذا تم وضع علامة على ioctl كامتياز، فإن استخدامه يتطلب معرف مستخدم فعال بقيمة 0 أو إمكانية CAP_NET_ADMIN. إذا لم يكن الأمر كذلك، يُرجع EPERM.

بإعطاء ifr_ifindex، يُرجع اسم الواجهة في ifr_name. هذا هو ioctl الوحيد الذي يُرجع نتيجته في ifr_name.
يسترجع فهرس الواجهة إلى ifr_ifindex.
يحصل أو يعين كلمة العلم النشطة للجهاز. يحتوي ifr_flags على قناع بت للقيم التالية:
أعلام الجهاز
IFF_UP الواجهة قيد التشغيل.
IFF_BROADCAST تم تعيين عنوان بث صالح.
IFF_DEBUG علم تصحيح داخلي.
IFF_LOOPBACK الواجهة هي واجهة استرجاع.
IFF_POINTOPOINT الواجهة هي وصلة نقطة إلى نقطة.
IFF_RUNNING الموارد مخصصة.
IFF_NOARP لا يوجد بروتوكول ARP، عنوان الوجهة من الطبقة 2 غير مضبوط.
IFF_PROMISC الواجهة في وضع الاختلاط.
IFF_NOTRAILERS تجنب استخدام المقطورات.
IFF_ALLMULTI استقبال جميع حزم الإرسال المتعدد.
IFF_MASTER رئيس حزمة موازنة الحمل.
IFF_SLAVE تابع حزمة موازنة الحمل.
IFF_MULTICAST يدعم الإرسال المتعدد
IFF_PORTSEL قادر على اختيار نوع الوسائط عبر ifmap.
IFF_AUTOMEDIA اختيار الوسائط آلي نشط.
IFF_DYNAMIC العناوين تُفقد عند إيقاف الواجهة.
برنامج التشغيل يشير إلى L1 نشط (منذ Linux 2.6.17) إشارة برنامج التشغيل L1 (بدءًا من Linux 2.6.17)
برنامج التشغيل يشير إلى خمول (منذ Linux 2.6.17) إشارات برنامج التشغيل معطلة (منذ إصدار Linux 2.6.17)
صدى الحزم المرسلة (منذ Linux 2.6.25) حزم البيانات المرسلة بواسطة Echo (بدءًا من Linux 2.6.25)

تعيين كلمة العلم النشط هي عملية مميزة، لكن أي عملية قد تقرأها.

الحصول على أو تعيين الأعلام الموسعة (الخاصة) للجهاز. ifr_flags يحتوي على قناع بت للقيم التالية:
الأعلام الخاصة
IFF_802_1Q_VLAN الواجهة هي جهاز VLAN 802.1Q.
IFF_EBRIDGE الواجهة هي جهاز جسر إيثرنت.
IFF_SLAVE_INACTIVE الواجهة هي تابع ربط غير نشط.
IFF_MASTER_8023AD الواجهة هي رئيس ربط 802.3ad.
IFF_MASTER_ALB الواجهة هي رئيس ربط متوازن-alb.
IFF_BONDING الواجهة هي رئيس أو تابع ربط.
IFF_SLAVE_NEEDARP الواجهة تحتاج ARPs للتحقق.
IFF_ISATAP الواجهة هي واجهة ISATAP وفقًا لـ RFC4214.

ضبط أعلام الواجهة الموسعة (الخاصة) هو عملية مميزة.

احصل على عنوان الجهاز أو اضبطه أو احذفه باستخدام ifr_addr، أو ifr6_addr مع ifr6_prefixlen. ضبط أو حذف عنوان الواجهة هو عملية مميزة. للتوافق، يُرجع SIOCGIFADDR عناوين AF_INET فقط، ويقبل SIOCSIFADDR عناوين AF_INET وAF_INET6، ويحذف SIOCDIFADDR عناوين AF_INET6 فقط. يمكن حذف عنوان AF_INET بضبطه على الصفر عبر SIOCSIFADDR.
احصل على عنوان الوجهة لجهاز نقطة إلى نقطة أو اضبطه باستخدام ifr_dstaddr. للتوافق، تُقبل أو تُرجع عناوين AF_INET فقط. ضبط عنوان الوجهة هو عملية مميزة.
احصل على عنوان البث لجهاز أو اضبطه باستخدام ifr_brdaddr. للتوافق، تُقبل أو تُرجع عناوين AF_INET فقط. ضبط عنوان البث هو عملية مميزة.
احصل على قناع الشبكة لجهاز أو اضبطه باستخدام ifr_netmask. للتوافق، تُقبل أو تُرجع عناوين AF_INET فقط. ضبط قناع الشبكة هو عملية مميزة.
احصل على مقياس الجهاز أو اضبطه باستخدام ifr_metric. هذا غير مطبق حاليًا؛ يضبط ifr_metric على 0 إذا حاولت قراءته ويُرجع EOPNOTSUPP إذا حاولت ضبطه.
احصل على MTU (وحدة النقل القصوى) لجهاز أو اضبطه باستخدام ifr_mtu. ضبط MTU هو عملية مميزة. ضبط MTU على قيم صغيرة جدًا قد يسبب تعطل النواة.
احصل على عنوان الأجهزة لجهاز أو اضبطه باستخدام ifr_hwaddr. يُحدد عنوان الأجهزة في هيكل sockaddr. يحتوي sa_family على نوع الجهاز ARPHRD_*، وsa_data على عنوان الأجهزة من الطبقة 2 بدءًا من البايت 0. ضبط عنوان الأجهزة هو عملية مميزة.
ضبط عنوان البث العتادي لجهاز من ifr_hwaddr. هذه عملية مميزة.
جلب أو ضبط معاملات العتاد للواجهة باستخدام ifr_map. ضبط المعاملات عملية مميزة.

struct ifmap {

unsigned long mem_start;
unsigned long mem_end;
unsigned short base_addr;
unsigned char irq;
unsigned char dma;
unsigned char port; };

تفسير بنية ifmap يعتمد على برنامج تشغيل الجهاز والبنية.
إضافة عنوان إلى أو حذف عنوان من مرشحات البث المتعدد لطبقة الوصل للجهاز باستخدام ifr_hwaddr. هذه عمليات مميزة. انظر أيضًا packet(7) لبديل.
جلب أو ضبط طول طابور الإرسال لجهاز باستخدام ifr_qlen. ضبط طول طابور الإرسال عملية مميزة.
تغيير اسم الواجهة المحددة في ifr_name إلى ifr_newname. هذه عملية مميزة. يُسمح بها فقط عندما لا تكون الواجهة نشطة.
إرجاع قائمة بعناوين الواجهة (طبقة الشبكة). هذا يعني حاليًا عناوين عائلة AF_INET (IPv4) فقط للتوافق. على عكس الآخرين، يمرر هذا ioctl بنية ifconf:

struct ifconf {

int ifc_len; /* size of buffer */
union {
char *ifc_buf; /* buffer address */
struct ifreq *ifc_req; /* array of structures */
}; };

إذا كان ifc_req فارغًا، يُرجع SIOCGIFCONF حجم المخزن المؤقت اللازم بالبايتات لاستقبال جميع العناوين المتاحة في ifc_len. وإلا، يحتوي ifc_req على مؤشر لمصفوفة من بنى ifreq ليتم ملؤها بجميع عناوين واجهة L3 النشطة حاليًا. يحتوي ifc_len على حجم المصفوفة بالبايتات. داخل كل بنية ifreq، يستقبل ifr_name اسم الواجهة، و ifr_addr العنوان. يُرجع العدد الفعلي للبايتات المنقولة في ifc_len.
إذا كان الحجم المحدد بواسطة ifc_len غير كافٍ لتخزين جميع العناوين، يتجاوز النواة العناوين الزائدة ويعيد النجاح. لا توجد طريقة موثوقة لاكتشاف هذه الحالة بمجرد حدوثها. لذلك يُوصى إما بتحديد حجم المخزن المؤقت اللازم مسبقًا باستدعاء SIOCGIFCONF مع ضبط ifc_req على NULL، أو إعادة محاولة الاستدعاء بمخزن مؤقت أكبر كلما اختلف ifc_len عند الإرجاع بأقل من sizeof(struct ifreq) عن قيمته الأصلية.
إذا حدث خطأ في الوصول إلى بنى ifconf أو ifreq، يُرجع EFAULT.

تدعم معظم البروتوكولات ioctls الخاصة بها لتكوين خيارات الواجهة الخاصة بالبروتوكول. انظر صفحات دليل البروتوكول للوصف. لتكوين عناوين IP، انظر ip(7).

بالإضافة إلى ذلك، تدعم بعض الأجهزة ioctls خاصة. هذه غير موصوفة هنا.

ملاحظات

SIOCGIFCONF و ioctls الأخرى التي تقبل أو تعيد عناوين مقبس AF_INET فقط هي خاصة بـ IP وربما يجب توثيقها في ip(7).

يمكن العثور على أسماء الواجهات التي لا تحتوي على عناوين أو التي لا تحتوي على العلم IFF_RUNNING مضبوطًا عبر /proc/net/dev.

يمكن قراءة عناوين IPv6 من /proc/net/if_inet6 أو عبر rtnetlink(7). يمكن إضافة عنوان IPv6 جديد وحذف عنوان IPv6 موجود عبر SIOCSIFADDR و SIOCDIFADDR أو عبر rtnetlink(7). استرداد أو تغيير عناوين IPv6 الوجهة لواجهة نقطة-إلى-نقطة ممكن فقط عبر rtnetlink(7).

العلل

تفتقر glibc 2.1 إلى الماكرو ifr_newname في <net/if.h>. أضف ما يلي إلى برنامجك كحل بديل:


#ifndef ifr_newname
#define ifr_newname     ifr_ifru.ifru_slave
#endif

انظر أيضًا

proc(5)، capabilities(7)، ip(7)، rtnetlink(7)

ترجمة

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

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

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

8 فبراير 2026 صفحات دليل لينكس 6.18