libnetlink(3)

الاسم
libnetlink - مكتبة للوصول إلى خدمة netlink

موجز
#include <asm/types.h>
#include <libnetlink.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>

int rtnl_open(struct rtnl_handle *rth, unsigned subscriptions)

int rtnl_wilddump_request(struct rtnl_handle *rth, int family, int type)

int rtnl_send(struct rtnl_handle *rth, char *buf, int len)

int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len)

int rtnl_dump_filter(struct rtnl_handle *rth,
		     int (*filter)(struct sockaddr_nl *, struct nlmsghdr *n, void *),
		     void *arg1,
		     int (*junk)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
		     void *arg2)

int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
	      unsigned groups, struct nlmsghdr *answer,
	      int (*junk)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
	      void *jarg)

int rtnl_listen(struct rtnl_handle *rtnl,
	      int (*handler)(struct sockaddr_nl *, struct rtnl_ctrl_data *,
			     struct nlmsghdr *n, void *),
	      void *jarg)

int rtnl_from_file(FILE *rtnl,
	      int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
	      void *jarg)

int addattr32(struct nlmsghdr *n, int maxlen, int type, __u32 data)

int addattr_l(struct nlmsghdr *n, int maxlen, int type, void *data, int alen)

int rta_addattr32(struct rtattr *rta, int maxlen, int type, __u32 data)

int rta_addattr_l(struct rtattr *rta, int maxlen, int type, void *data, int alen)

الوصف
توفّر libnetlink واجهة ذات مستوى أعلى لـ rtnetlink(7). تُعيد دوال القراءة 0 عند النجاح وقيمة errno سالبة عند الفشل. تُعيد دوال الإرسال كمية البيانات المُرسلة، أو -1 عند الخطأ.

rtnl_open
    يُفتح مقبس rtnetlink ويُحفظ الحالة في مقبض rth. يُمرر هذا المقبض إلى جميع الاستدعاءات اللاحقة. subscriptions هي خريطة بتات لمجموعات البث المتعدد rtnetlink التي سيكون المقبس عضوًا فيها.

rtnl_wilddump_request
    يُطلب تفريغ كامل لقاعدة بيانات type لعناوين family. type هو نوع رسالة rtnetlink.

rtnl_dump_request
    يُطلب تفريغ كامل لمخزن بيانات type في buf بطول أقصى len. type هو نوع رسالة rtnetlink.

rtnl_dump_filter
    تُستقبل بيانات netlink بعد طلب وتُصفى. يتحقق رد الاتصال filter مما إذا كانت الرسالة المستلمة مرغوبة. يتلقى عنوان مصدر الرسالة والرسالة نفسها وarg1 كوسائط. القيمة 0 كإرجاع تعني نجاح المرشح، وتُرجع rtnl_dump_filter قيمة سالبة في حالة الخطأ. NULL لـ filter تعني عدم استخدام مرشح. يُستخدم junk لتصفية الرسائل غير الموجهة إلى المقبس المحلي. تُستقبل حزمة رسائل واحدة فقط. إذا كانت هناك رسالة معلقة، لا تحجب هذه الدالة.

rtnl_listen
    تُستقبل بيانات netlink بعد طلب وتُمرر إلى handler. handler هو رد اتصال يتلقى عنوان مصدر الرسالة، والبيانات المساعدة، والرسالة نفسها، وملف تعريف الارتباط jarg كوسائط. يُستدعى لجميع الرسائل المستلمة. تُستقبل حزمة رسائل واحدة فقط. إذا كانت هناك رسالة معلقة، لا تحجب هذه الدالة.

rtnl_from_file
    تعمل مثل rtnl_listen، لكنها تقرأ حزمة رسائل netlink من الملف file وتُمرر الرسائل إلى handler للتحليل. يجب أن يحتوي الملف على بيانات خام كما وردت من مقبس rtnetlink.

الدوال التالية مفيدة لبناء رسائل rtnetlink مخصصة. لتفريغ قاعدة بيانات بسيط مع تصفية، من الأفضل استخدام الدوال عالية المستوى أعلاه. انظر rtnetlink(3) وnetlink(3) حول كيفية توليد رسالة rtnetlink. تتطلب دوال المساعدة التالية مخزنًا متصلًا يحتوي بالفعل على رأس رسالة netlink وطلب rtnetlink.

rtnl_send
    تُرسل رسالة rtnetlink في buf بطول len إلى مقبض rth.

addattr32
    تُضيف سمة __u32 من النوع type وبالقيمة data إلى رسالة netlink n، وهي جزء من مخزن بطول maxlen.

addattr_l
    تُضيف سمة متغيرة الطول من النوع type وبالقيمة data وطول alen إلى رسالة netlink n، وهي جزء من مخزن بطول maxlen. تُنسخ data.

rta_addattr32
    هيئ سمة rtnetlink rta بقيمة بيانات من نوع __u32.

rta_addattr32
    هيئ سمة rtnetlink rta بقيمة بيانات متغيرة الطول.

العلل
هذه المكتبة مخصصة للاستخدام الداخلي، استخدم libmnl للبرامج الجديدة.

تستخدم الدوال أحيانًا fprintf و exit عند حدوث خطأ فادح. ينبغي تسمية هذه المكتبة librtnetlink.

المؤلفون
صمم وكتب netlink/rtnetlink بواسطة Alexey Kuznetsov. وكتب Andi Kleen صفحة الدليل.

انظر أيضًا
netlink(7)، rtnetlink(7)
/usr/include/linux/rtnetlink.h

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

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

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