Provided by: manpages-fr-dev_2.64.1-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(PF_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-tête de message
       netlink(7) et des attributs. Ceux-ci ne devraient  être  manipulés  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, même si attrlen n’est pas nulle.

       RTA_DATA(rta) renvoie un pointeur sur  le  début  des  données  de  cet
       attribut.

       RTA_PAYLOAD(rta) renvoie la longueur des données de cet attribut.

       RTA_NEXT(rta,  attrlen) renvoie le premier attribut après rta. Un appel
       à cette macro met à jour attrlen. Vous  devriez  utiliser  RTA_OK  pour
       vérifier la validité du pointeur retourné.

       RTA_LENGTH(len)  renvoie la longueur requise pour len octets de données
       plus l’en-tête.

       RTA_SPACE(len) renvoie  la  quantité  de  mémoire  nécessaire  pour  un
       message composé de len octets de données.

CONFORMITÉ

       Ces macros sont des extensions de Linux non standard.

BOGUES

       Cette page de manuel est incomplète.

EXEMPLE

       Créer un message rtnetlink pour choisir le MTU d’un périphérique.

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

           struct rtattr *rta;
           unsigned int mtu = 1000;

           int rtnetlink_sk = socket(PF_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 = RTML_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(n->nlmsg_len));
           rta->rta_type = IFLA_MTU;
           rta->rta_len = sizeof(unsigned int);
           req.n.nlmsg_len = NLMSG_ALIGN(req.n.nlmsg_len) +
                                         RTA_LENGTH(sizeof(mtu));
           memcpy(RTA_DATA(rta), &mtu, sizeof(mtu));
           send(rtnetlink_sk, &req, req.n.nlmsg_len);

VOIR AUSSI

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

TRADUCTION

       Cette  page  de  manuel a été traduite par Thierry Vignaud <tvignaud AT
       mandriva DOT com> en 2002, puis a été mise  à  jour  par  Alain  Portal
       <aportal  AT  univ-montp2  DOT fr> jusqu’en 2006, et mise à disposition
       sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

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

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».