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.

SIOCGIFNAME
    بإعطاء ifr_ifindex، يُرجع اسم الواجهة في ifr_name. هذا هو ioctl الوحيد الذي يُرجع نتيجته في ifr_name.

SIOCGIFINDEX
    يسترجع فهرس الواجهة إلى ifr_ifindex.

SIOCGIFFLAGS
SIOCSIFFLAGS
    يحصل أو يعين كلمة العلم النشطة للجهاز. يحتوي 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)

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

SIOCGIFPFLAGS
SIOCSIFPFLAGS
    الحصول على أو تعيين الأعلام الموسعة (الخاصة) للجهاز. 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.

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

SIOCGIFADDR
SIOCSIFADDR
SIOCDIFADDR
    احصل على عنوان الجهاز أو اضبطه أو احذفه باستخدام ifr_addr، أو ifr6_addr مع ifr6_prefixlen. ضبط أو حذف عنوان الواجهة هو عملية مميزة. للتوافق، يُرجع SIOCGIFADDR عناوين AF_INET فقط، ويقبل SIOCSIFADDR عناوين AF_INET وAF_INET6، ويحذف SIOCDIFADDR عناوين AF_INET6 فقط. يمكن حذف عنوان AF_INET بضبطه على الصفر عبر SIOCSIFADDR.

SIOCGIFDSTADDR
SIOCSIFDSTADDR
    احصل على عنوان الوجهة لجهاز نقطة إلى نقطة أو اضبطه باستخدام ifr_dstaddr. للتوافق، تُقبل أو تُرجع عناوين AF_INET فقط. ضبط عنوان الوجهة هو عملية مميزة.

SIOCGIFBRDADDR
SIOCSIFBRDADDR
    احصل على عنوان البث لجهاز أو اضبطه باستخدام ifr_brdaddr. للتوافق، تُقبل أو تُرجع عناوين AF_INET فقط. ضبط عنوان البث هو عملية مميزة.

SIOCGIFNETMASK
SIOCSIFNETMASK
    احصل على قناع الشبكة لجهاز أو اضبطه باستخدام ifr_netmask. للتوافق، تُقبل أو تُرجع عناوين AF_INET فقط. ضبط قناع الشبكة هو عملية مميزة.

SIOCGIFMETRIC
SIOCSIFMETRIC
    احصل على مقياس الجهاز أو اضبطه باستخدام ifr_metric. هذا غير مطبق حاليًا؛ يضبط ifr_metric على 0 إذا حاولت قراءته ويُرجع EOPNOTSUPP إذا حاولت ضبطه.

SIOCGIFMTU
SIOCSIFMTU
    احصل على MTU (وحدة النقل القصوى) لجهاز أو اضبطه باستخدام ifr_mtu. ضبط MTU هو عملية مميزة. ضبط MTU على قيم صغيرة جدًا قد يسبب تعطل النواة.

SIOCGIFHWADDR
SIOCSIFHWADDR
    احصل على عنوان الأجهزة لجهاز أو اضبطه باستخدام ifr_hwaddr. يُحدد عنوان الأجهزة في هيكل sockaddr. يحتوي sa_family على نوع الجهاز ARPHRD_*، وsa_data على عنوان الأجهزة من الطبقة 2 بدءًا من البايت 0. ضبط عنوان الأجهزة هو عملية مميزة.

SIOCSIFHWBROADCAST
    ضبط عنوان البث العتادي لجهاز من ifr_hwaddr. هذه عملية مميزة.

SIOCGIFMAP
SIOCSIFMAP
    جلب أو ضبط معاملات العتاد للواجهة باستخدام 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 يعتمد على برنامج تشغيل الجهاز والبنية.

SIOCADDMULTI
SIOCDELMULTI
    إضافة عنوان إلى أو حذف عنوان من مرشحات البث المتعدد لطبقة الوصل للجهاز باستخدام ifr_hwaddr. هذه عمليات مميزة. انظر أيضًا packet(7) لبديل.

SIOCGIFTXQLEN
SIOCSIFTXQLEN
    جلب أو ضبط طول طابور الإرسال لجهاز باستخدام ifr_qlen. ضبط طول طابور الإرسال عملية مميزة.

SIOCSIFNAME
    تغيير اسم الواجهة المحددة في ifr_name إلى ifr_newname. هذه عملية مميزة. يُسمح بها فقط عندما لا تكون الواجهة نشطة.

SIOCGIFCONF
    إرجاع قائمة بعناوين الواجهة (طبقة الشبكة). هذا يعني حاليًا عناوين عائلة 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 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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