Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       rtnetlink - Macros manipulant des messages rtnetlink

SYNOPSIS

       #include <asm/types.h>
       #include <linux/netlink.h>
       #include <linux/rtnetlink.h>
       #include <sys/socket.h>

       rtnetlink_socket = socket(AF_NETLINK, int socket_type, NETLINK_ROUTE);

       int RTA_OK(struct rtattr *rta, int rtabuflen);

       void *RTA_DATA(struct rtattr *rta);

       unsigned int RTA_PAYLOAD(struct rtattr *rta);

       struct rtattr *RTA_NEXT(struct rtattr *rta, unsigned int rtabuflen);

       unsigned int RTA_LENGTH(unsigned int length);

       unsigned int RTA_SPACE(unsigned int length);

DESCRIPTION

       Tous  les  messages  rtnetlink(7)  consistent  en un en-tete de message
       netlink(7) et des attributs. Ceux-ci ne devraient  etre  manipules  que
       par les macros fournies ici.

       RTA_OK(rta,  attrlen)  renvoie  vrai  si  rta pointe sur un attribut de
       routage  valide ;  attrlen  est  la   longueur   courante   du   tampon
       d'attributs.  Si  elle  renvoie  0, vous devez supposer qu'il n'y a pas
       d'autre attributs dans le message, meme si attrlen n'est pas nulle.

       RTA_DATA(rta) renvoie un pointeur sur  le  debut  des  donnees  de  cet
       attribut.

       RTA_PAYLOAD(rta) renvoie la longueur des donnees de cet attribut.

       RTA_NEXT(rta,  attrlen) renvoie le premier attribut apres rta. Un appel
       a cette macro met a jour attrlen. Vous  devriez  utiliser  RTA_OK  pour
       verifier la validite du pointeur retourne.

       RTA_LENGTH(len)  renvoie la longueur requise pour len octets de donnees
       plus l'en-tete.

       RTA_SPACE(len) renvoie  la  quantite  de  memoire  necessaire  pour  un
       message compose de len octets de donnees.

CONFORMIT'E

       Ces macros sont des extensions de Linux non standard.

BOGUES

       Cette page de manuel est incomplete.

EXEMPLE

       Creer un message rtnetlink pour choisir le MTU d'un peripherique.
           #include <linux/rtnetlink.h>

           ...

           struct {
               struct nlmsghdr  nh;
               struct ifinfomsg if;
               char             attrbuf[512];
           } req;

           struct rtattr *rta;
           unsigned int mtu = 1000;

           int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);

           memset(&req, 0, sizeof(req));
           req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg));
           req.nh.nlmsg_flags = NLM_F_REQUEST;
           req.nh.nlmsg_type = RTM_NEWLINK;
           req.if.ifi_family = AF_UNSPEC;
           req.if.ifi_index = INTERFACE_INDEX;
           req.if.ifi_change = 0xffffffff; /* ??? */
           rta = (struct rtattr *)(((char *) &req) +
                                    NLMSG_ALIGN(req.nh.nlmsg_len));
           rta->rta_type = IFLA_MTU;
           rta->rta_len = sizeof(unsigned int);
           req.n.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) +
                                         RTA_LENGTH(sizeof(mtu));
           memcpy(RTA_DATA(rta), &mtu, sizeof(mtu));
           send(rtnetlink_sk, &req, req.nh.nlmsg_len);

VOIR AUSSI

       netlink(3), netlink(7), rtnetlink(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Thierry          Vignaud          (2002),          Alain         Portal
       <URL:http://manpagesfr.free.fr/> (2006).  Nicolas Francois et  l'equipe
       francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.