Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       rtnetlink - Macros manipulant des messages rtnetlink

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

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

       rtnetlink_socket = socket(AF_NETLINK, int type_socket, 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.

STANDARDS

       Ces macros sont des extensions de Linux non standard.

BOGUES

       Cette page de manuel est incomplète.

EXEMPLES

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

           #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(req.if));
           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 = RTA_LENGTH(sizeof(mtu));
           req.nh.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, 0);

VOIR AUSSI

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

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre  Giraud
       <jean-pierregiraud@neuf.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.