libnetlink(3) Library Functions Manual libnetlink(3) NUME libnetlink - o biblioteca pentru accesarea serviciului netlink SINOPSIS #include #include #include #include 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 ofera o interfaa de nivel superior pentru rtnetlink(7). Funciile de citire returneaza 0 in caz de succes i o valoare errno negativa in caz de eec. Funciile de trimitere returneaza cantitatea de date trimise sau -1 in caz de eroare. rtnl_open Deschide un soclu rtnetlink i salveaza starea in gestionarul rth. Acest gestionar este transmis la toate apelurile ulterioare. subscriptions este o harta de bii a grupurilor multicast rtnetlink din care va face parte soclul. rtnl_wilddump_request Solicita o descarcare completa a bazei de date type pentru adresele familie. type este un tip de mesaj rtnetlink. rtnl_dump_request Solicita o descarcare completa a tamponului de date type in buf cu lungimea maxima de len. type este un tip de mesaj rtnetlink. rtnl_dump_filter Primete date netlink dupa o cerere i le filtreaza. Reapelarea filter verifica daca mesajul primit este dorit. Aceasta primete ca argumente adresa sursa a mesajului, mesajul in sine i arg1. 0 ca returnare inseamna ca filtrul a trecut, o valoare negativa este returnata de rtnl_dump_filter in caz de eroare. NULL pentru filter inseamna sa nu se utilizeze un filtru. junk este utilizat pentru a filtra mesajele care nu sunt destinate soclului local. Se primete un singur pachet de mesaje. Daca exista un mesaj in ateptare, aceasta funcie nu se blocheaza. rtnl_listen Primete datele netlink dupa o cerere i le transmite catre handler (gestionar). Gestionarul handler este un apel care primete ca argumente adresa sursei mesajului, datele anscillare, mesajul in sine i cookie-ul jarg. Acesta va fi apelat pentru toate mesajele primite. Se primete un singur pachet de mesaje. Daca exista un mesaj in ateptare, aceasta funcie nu se blocheaza. rtnl_from_file Funcioneaza ca rtnl_listen, dar citete un pachet de mesaje netlink din fiierul file i transmite mesajele catre handler pentru analiza. Fiierul trebuie sa conina date brute aa cum sunt primite de la un soclu rtnetlink. Urmatoarele funcii sunt utile pentru a construi mesaje rtnetlink personalizate. Pentru descarcarea simpla a bazei de date cu filtrare, este mai bine sa utilizai funciile de nivel superior de mai sus. Consultai rtnetlink(3) i netlink(3) pentru a afla cum se genereaza un mesaj rtnetlink.Urmatoarele funcii utilitare necesita un tampon continuu care conine deja un antet de mesaj netlink i o cerere rtnetlink. rtnl_send Trimite mesajul rtnetlink in buf de lungime len catre gestionarul rth. addattr32 Adauga 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 Adauga un atribut de lungime variabila 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 Iniializeaza atributul rtnetlink rta cu o valoare de date __u32. rta_addattr32 Iniializeaza atributul rtnetlink rta cu o valoare de date de lungime variabila. ERORI Aceasta biblioteca este destinata utilizarii interne, utilizai libmnl pentru programe noi. Funciile utilizeaza uneori fprintf i ies atunci cand apare o eroare fatala. Aceasta biblioteca ar trebui sa fie numita librtnetlink. AUTORI netlink/rtnetlink a fost conceput i scris de Alexey Kuznetsov. Andi Kleen a scris pagina de manual. CONSULTAI I netlink(7), rtnetlink(7) /usr/include/linux/rtnetlink.h TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . libnetlink(3)