if_nameindex(3)

الاسم
if_nameindex, if_freenameindex - الحصول على أسماء وفهارس واجهات الشبكة

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <net/if.h>

struct if_nameindex *if_nameindex(void);
void if_freenameindex(struct if_nameindex *ptr);

الوصف
ترجع الدالة if_nameindex() مصفوفة من تراكيب if_nameindex، يحتوي كل منها على معلومات عن إحدى واجهات الشبكة في النظام المحلي. يحتوي التركيب if_nameindex على الأقل على المدخلات التالية:

    unsigned int if_index;  /* Index of interface (1, 2, ...) */
    char        *if_name;   /* Null-terminated name ("eth0", etc.) */

يحتوي الحقل if_index على فهرس الواجهة. يشير الحقل if_name إلى اسم الواجهة المنتهي بصفر. يُشار إلى نهاية المصفوفة بمدخل فيه if_index مضبوط على صفر و if_name مضبوط على NULL.

يُخصص تركيب البيانات الذي ترجعه if_nameindex() ديناميكيًا ويجب تحريره باستخدام if_freenameindex() عند عدم الحاجة إليه.

قيمة الإرجاع
عند النجاح، ترجع if_nameindex() مؤشرًا إلى المصفوفة؛ عند الخطأ، يُرجع NULL، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء
قد تفشل if_nameindex() وتضبط errno إذا:

ENOBUFS
    موارد غير كافية متاحة.

قد تفشل if_nameindex() أيضًا لأي من الأخطاء المحددة لـ socket(2)، bind(2)، ioctl(2)، getsockname(2)، recvmsg(2)، sendto(2)، أو malloc(3).

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
if_nameindex(), if_freenameindex() | سلامة الخيوط | MT-Safe

المعايير
POSIX.1-2008, RFC 3493.

التاريخ
glibc 2.1. POSIX.1-2001. BSDi.

قبل glibc 2.3.4، دعم التنفيذ فقط الواجهات بعناوين IPv4. دعم الواجهات التي لا تحتوي على عناوين IPv4 متاح فقط على الأنوية التي تدعم netlink.

أمثلة
يُظهر البرنامج أدناه استخدام الدوال الموصوفة في هذه الصفحة. مثال على المخرجات التي قد ينتجها هذا البرنامج هو التالي:

    $ ./a.out;
    1: lo
    2: wlan0
    3: em1

  مصدر البرنامج
    #include <net/if.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>

    int
    main(void)
    {
        struct if_nameindex *if_ni, *i;

        if_ni = if_nameindex();
        if (if_ni == NULL) {
            perror("if_nameindex");
            exit(EXIT_FAILURE);
        }

        for (i = if_ni; !(i->if_index == 0 && i->if_name == NULL); i++)
            printf("%u: %s\n", i->if_index, i->if_name);

        if_freenameindex(if_ni);

        exit(EXIT_SUCCESS);
    }

انظر أيضًا
getsockopt(2), setsockopt(2), getifaddrs(3), if_indextoname(3), if_nametoindex(3), ifconfig(8)

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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