libnetlink(3)

NUME
libnetlink - o bibliotecă pentru accesarea serviciului netlink

SINOPSIS
#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)

DESCRIERE
libnetlink oferă o interfață de nivel superior pentru rtnetlink(7). Funcțiile de citire returnează 0 în caz de succes și o valoare errno negativă în caz de eșec. Funcțiile de trimitere returnează cantitatea de date trimise sau -1 în caz de eroare.

rtnl_open
    Deschide un soclu rtnetlink și salvează starea în gestionarul rth. Acest gestionar este transmis la toate apelurile ulterioare. subscriptions este o hartă de biți a grupurilor multicast rtnetlink din care va face parte soclul.

rtnl_wilddump_request
    Solicită o descărcare completă a bazei de date type pentru adresele familie. type este un tip de mesaj rtnetlink.

rtnl_dump_request
    Solicită o descărcare completă a tamponului de date type în buf cu lungimea maximă de len. type este un tip de mesaj rtnetlink.

rtnl_dump_filter
    Primește date netlink după o cerere și le filtrează. Reapelarea filter verifică dacă mesajul primit este dorit. Aceasta primește ca argumente adresa sursă a mesajului, mesajul în sine și arg1. 0 ca returnare înseamnă că filtrul a trecut, o valoare negativă este returnată de rtnl_dump_filter în caz de eroare. NULL pentru filter înseamnă să nu se utilizeze un filtru. junk este utilizat pentru a filtra mesajele care nu sunt destinate soclului local. Se primește un singur pachet de mesaje. Dacă există un mesaj în așteptare, această funcție nu se blochează.

rtnl_listen
    Primește datele netlink după o cerere și le transmite către handler (gestionar). Gestionarul handler este un apel care primește ca argumente adresa sursei mesajului, datele anscillare, mesajul în sine și cookie-ul jarg. Acesta va fi apelat pentru toate mesajele primite. Se primește un singur pachet de mesaje. Dacă există un mesaj în așteptare, această funcție nu se blochează.

rtnl_from_file
    Funcționează ca rtnl_listen, dar citește un pachet de mesaje netlink din fișierul file și transmite mesajele către handler pentru analiză. Fișierul trebuie să conțină date brute așa cum sunt primite de la un soclu rtnetlink.

Următoarele funcții sunt utile pentru a construi mesaje rtnetlink personalizate. Pentru descărcarea simplă a bazei de date cu filtrare, este mai bine să utilizați funcțiile de nivel superior de mai sus. Consultați rtnetlink(3) și netlink(3) pentru a afla cum se generează un mesaj rtnetlink.Următoarele funcții utilitare necesită un tampon continuu care conține deja un antet de mesaj netlink și o cerere rtnetlink.

rtnl_send
    Trimite mesajul rtnetlink în buf de lungime len către gestionarul rth.

addattr32
    Adaugă un atribut __u32 de tip type și cu valoarea data la mesajul netlink n, care face parte dintr-un tampon de lungime maxlen.

addattr_l
    Adaugă un atribut de lungime variabilă de tip type și cu valoarea data și lungimea alen la mesajul netlink n, care face parte dintr-un tampon de lungime maxlen. data este copiat.

rta_addattr32
    Inițializează atributul rtnetlink rta cu o valoare de date __u32.

rta_addattr32
    Inițializează atributul rtnetlink rta cu o valoare de date de lungime variabilă.

ERORI
Această bibliotecă este destinată utilizării interne, utilizați libmnl pentru programe noi. Funcțiile utilizează uneori fprintf și ies atunci când apare o eroare fatală. Această bibliotecă ar trebui să fie numită librtnetlink.

AUTORI
netlink/rtnetlink a fost conceput și scris de Alexey Kuznetsov. Andi Kleen a scris pagina de manual.

CONSULTAȚI ȘI
netlink(7), rtnetlink(7)
/usr/include/linux/rtnetlink.h

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.