Provided by: manpages-fr_3.65d1p1-1_all bug

NOM

       rtnetlink - Socket de routage Linux IPv4

SYNOPSIS

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

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

DESCRIPTION

       Rtnetlink permet de lire et modifier les tables de routage du noyau. Cela permet des communications entre
       divers  sous-systèmes  du  noyau,  bien  que  cette  utilisation  ne soit pas documentée ici, et pour les
       communications avec les programmes de l'espace utilisateur. Les  routes  réseau,  les  adresses  IP,  les
       paramètres  de liaison, la configuration du voisinage, les files, les classes de trafic et les classes de
       paquets peuvent être configurés par le biais  des  sockets  NETLINK_ROUTE.  Elles  sont  basées  sur  des
       messages netlink, consultez netlink(7) pour plus d'informations.

   Attributs de routage
       Certains messages netlink ont des attributs supplémentaires après l'en-tête initial :

           struct rtattr {
               unsigned short rta_len;    /* Longueur option */
               unsigned short rta_type;   /* Type d'option */
               /* Les données suivent... */
           };

       Ces  attributs  ne  doivent  être  manipulés  qu'en  utilisant  les macros RTA_* ou libnetlink, consultez
       rtnetlink(3).

   Messages
       Rtnetlink est constitué de trois types de messages (en plus des messages netlink standards) :

       RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK
              Créer, supprimer, ou obtenir des informations à propos  d'une  interface  réseau  spécifique.  Ces
              messages contiennent une structure ifinfomsg suivie d'une série de structures rtattr.

              struct ifinfomsg {
                  unsigned char  ifi_family; /* AF_UNSPEC */
                  unsigned short ifi_type;   /* Type périphérique */
                  int            ifi_index;  /* Index interface */
                  unsigned int   ifi_flags;  /* Attributs périph. */
                  unsigned int   ifi_change; /* Masque modificat. */
              };

              ifi_flags  contient  les attributs du périphérique, consultez netdevice(7) ; ifi_index est l'index
              unique de l'interface (depuis Linux 3.7, il est  possible  de  fournir  une  valeur  non-nulle  au
              message  RTM_NEWLINK,  créant  un  lien  d'index  ifindex) ;  ifi_change est réservé pour un usage
              ultérieur et doit toujours valoir 0xFFFFFFFF.
                                  Attributs de routage
              rta_type         type de valeur       description
              ──────────────────────────────────────────────────────────────
              IFLA_UNSPEC      -                    non-spécifié.
              IFLA_ADDRESS     adresse matérielle   Adresse L2 interface.
              IFLA_BROADCAST   adresse matérielle   Adresse L2 Broadcast.
              IFLA_IFNAME      chaîne ACSIIZ        Nom périphérique.
              IFLA_MTU         unsigned int         MTU du périphérique.
              IFLA_LINK        int                  Type liaison.
              IFLA_QDISC       chaîne ACSIIZ        Mécanismes files.
              IFLA_STATS       voir ci‐dessous      Statistiques interface.

              Le type de données pour IFLA_STATS est struct rtnl_link_stats (struct  net_device_stats  dans  les
              noyaux Linux 2.4 et antérieurs).

       RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR
              Ajouter,  supprimer  ou obtenir des informations sur une adresse IP associée à une interface. Sous
              Linux 2.2, une interface peut gérer plusieurs adresses IP, ce qui remplace le concept  d'alias  de
              Linux 2.0.  Dans  Linux 2.2,  ces  messages  prennent  en  charge  les  adresses IPv4 et IPv6. Ils
              contiennent une structure ifaddrmsg, suivie éventuellement par des attributs de routage rtattr.

              struct ifaddrmsg {
                  unsigned char ifa_family;    /* Type adresse */
                  unsigned char ifa_prefixlen; /* Lg préfixe adresse */
                  unsigned char ifa_flags;     /* Attributs adresse */
                  unsigned char ifa_scope;     /* Portée adresse */
                  int           ifa_index;     /* Index interface */
              };

              ifa_family est le type de famille d'adresse (actuellement AF_INET ou AF_INET6), ifa_prefixlen  est
              la  longueur du masque d'adresse, s'il est défini pour la famille (comme avec IPv4), ifa_scope est
              la portée de l'adresse, ifa_index est l'index de l'interface associée à l'adresse.  ifa_flags  est
              un   attribut   composé  de  IFA_F_SECONDARY  pour  une  adresse  secondaire  (les  anciens  alias
              d'interface), IFA_F_PERMANENT pour une adresse configurée par l'utilisateur, et d'autres attributs
              non documentés.
                                       Attributes
              rta_type        type de valeur          description
              ──────────────────────────────────────────────────────────────
              IFA_UNSPEC      -                       non-spécifié.
              IFA_ADDRESS     Adresse protocole raw   Adresse interface.
              IFA_LOCAL       Adresse protocole raw   Adresse locale.
              IFA_LABEL       Chaîne ACSIIZ           Nom de l'interface.
              IFA_BROADCAST   Adresse protocole raw   Adresse broadcast.
              IFA_ANYCAST     Adresse protocole raw   Adresse anycast.
              IFA_CACHEINFO   struct ifa_cacheinfo    Informations adresse.

       RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE
              Créer, supprimer ou obtenir des informations à propos d'une route réseau. Ces messages contiennent
              une structure rtmsg suivie d'une séquence éventuelle  de  structures  rtattr.  Pour  RTM_GETROUTE,
              mettre rtm_dst_len et rtm_src_len à 0 signifie obtenir toutes les entrées pour la table de routage
              indiquée.  Pour  les  autres  champs,  sauf  rtm_table et rtm_protocol, 0 est le symbole générique
              signifiant « toutes valeurs ».

              struct rtmsg {
                  unsigned char rtm_family;   /* Famille d'adresse de la route */
                  unsigned char rtm_dst_len;  /* Longueur destination */
                  unsigned char rtm_src_len;  /* Longueur source */
                  unsigned char rtm_tos;      /* Filtre TOS */

                  unsigned char rtm_table;    /* ID table routage */
                  unsigned char rtm_protocol; /* Protocole route, cf plus bas */
                  unsigned char rtm_scope;    /* Cf plus bas */
                  unsigned char rtm_type;     /* Cf plus bas */

                  unsigned int  rtm_flags;
              };
              rtm_type          Type route
              ────────────────────────────────────────────────────────
              RTN_UNSPEC        Route inconnue
              RTN_UNICAST       Passerelle ou route directe
              RTN_LOCAL         Route interface locale
              RTN_BROADCAST     Route  broadcast  locale  (envoi   en
                                broadcast)
              RTN_ANYCAST       Route   broadcast  locale  (envoi  en
                                unicast)
              RTN_MULTICAST     Route multicast
              RTN_BLACKHOLE     Route d'abandon de paquets
              RTN_UNREACHABLE   Destination inaccessible
              RTN_PROHIBIT      Route de rejet de paquets
              RTN_THROW         Routage prolongé dans une autre table
              RTN_NAT           Route de traduction d'adresse
              RTN_XRESOLVE      Référence à  une  résolution  externe
                                (non implémenté)
              rtm_protocol      Origine de la route.
              ────────────────────────────────────────────────────────
              RTPROT_UNSPEC     inconnue
              RTPROT_REDIRECT   redirection      ICMP      (inutilisé
                                actuellement)
              RTPROT_KERNEL     définie par le noyau
              RTPROT_BOOT       obtenue pendant le démarrage
              RTPROT_STATIC     définie par l'administrateur

              Les valeurs plus grandes que RTPROT_STATIC ne sont pas  interprétées  par  le  noyau,  et  servent
              d'information  utilisateur.  Elles  permettent  de  marquer  la source de la route ou de faire une
              distinction  entre  plusieurs  démons  de  routage.   Consultez   <linux/rtnetlink.h>   pour   les
              identificateurs de démons de routage déjà affectés.

              rtm_scope est la distance à la destination :
              RT_SCOPE_UNIVERSE   route globale
              RT_SCOPE_SITE       route   locale   interne  au  système
                                  autonome
              RT_SCOPE_LINK       route sur ce lien
              RT_SCOPE_HOST       route sur l'hôte local
              RT_SCOPE_NOWHERE    destination inexistante

              Les valeurs entre RT_SCOPE_UNIVERSE et RT_SCOPE_SITE sont disponibles pour l'utilisateur.

              Le champ rtm_flags prend les significations suivantes :
              RTM_F_NOTIFY     si la route change, notifier l'utilisateur
                               via rtnetlink
              RTM_F_CLONED     la route est clonée depuis une autre route
              RTM_F_EQUALIZE   répartiteur   multichemin   (pas    encore
                               implémenté)

              rtm_table indique la table de routage
              RT_TABLE_UNSPEC    table de routage non spécifiée
              RT_TABLE_DEFAULT   la table par défaut
              RT_TABLE_MAIN      la table principale
              RT_TABLE_LOCAL     la table locale

              L'utilisateur peut affecter à son gré les valeurs entre RT_TABLE_UNSPEC et RT_TABLE_DEFAULT.
                                         Attributes
              rta_type        type de valeur      description
              ─────────────────────────────────────────────────────────────────
              RTA_UNSPEC      -                   ignoré.
              RTA_DST         Adresse protocole   Adresse    de    la    route
                                                  destination.
              RTA_SRC         Adresse protocole   Adresse de la route source.
              RTA_IIF         int                 Index interface d'entrée.
              RTA_OIF         int                 Index interface de sortie.
              RTA_GATEWAY     Adresse protocole   Passerelle de la route.
              RTA_PRIORITY    int                 Priorité de la route.
              RTA_PREFSRC
              RTA_METRICS     int                 Métrique de la route.
              RTA_MULTIPATH
              RTA_PROTOINFO
              RTA_FLOW
              RTA_CACHEINFO

              Remplir ces valeurs !

       RTM_NEWNEIGH, RTM_DELNEIGH, RTM_GETNEIGH
              Ajouter, supprimer ou obtenir des informations sur les voisinage d'un élément  de  table  (p.ex. :
              entrée ARP). Le message contient une structure ndmsg.

              struct ndmsg {
                  unsigned char ndm_family;
                  int           ndm_ifindex;  /* Index interface */
                  __u16         ndm_state;    /* États */
                  __u8          ndm_flags;    /* Attributs */
                  __u8          ndm_type;
              };

              struct nda_cacheinfo {
                  __u32         ndm_confirmed;
                  __u32         ndm_used;
                  __u32         ndm_updated;
                  __u32         ndm_refcnt;
              };

              ndm_state est un masque contenant les bits suivants :
              NUD_INCOMPLETE   une entrée de cache non résolue.
              NUD_REACHABLE    une entrée de cache confirmée correcte.
              NUD_STALE        une entrée de cache expirée.
              NUD_DELAY        une entrée de cache en attente de timer.
              NUD_PROBE        une entrée de cache en vérification.
              NUD_FAILED       une entrée de cache invalide.
              NUD_NOARP        un périphérique sans cache de destination.
              NUD_PERMANENT    une entrée statique.

              Les valeurs valides pour ndm_flags sont :
              NTF_PROXY    nne entrée proxy Arp.
              NTF_ROUTER   un routeur IPv6.

              La structure rtattr prend les significations suivantes pour le champ rta_type :
              NDA_UNSPEC      type inconnu
              NDA_DST         une  adresse  niveau  réseau  dans le
                              cache de voisinage
              NDA_LLADDR      une adresse niveau  liaison  dans  le
                              cache voisinage.
              NDA_CACHEINFO   statistiques sur le cache.

              Si le champ rta_type vaut NDA_CACHEINFO alors un en-tête struct nda_cacheinfo suit.

       RTM_NEWRULE, RTM_DELRULE, RTM_GETRULE
              Ajouter, supprimer ou rechercher une règle de routage. Utilise une struct rtmsg

       RTM_NEWQDISC, RTM_DELQDISC, RTM_GETQDISC
              Ajouter,  supprimer  ou  rechercher  une  discipline  de  file  d'attente. Le message contient une
              structure struct tcmsg et peut être suivi par une série d'attributs.

              struct tcmsg {
                  unsigned char    tcm_family;
                  int              tcm_ifindex;   /* Index interface */
                  __u32            tcm_handle;    /* Handle Qdisc */
                  __u32            tcm_parent;    /* Parent Qdisc */
                  __u32            tcm_info;
              };
                                        Attributes
              rta_type     Type valeur          Description
              ───────────────────────────────────────────────────────────────
              TCA_UNSPEC   -                    unspecified
              TCA_KIND     Chaîne ACSIIZ        Nom de la discipline de file
              TCA_OPTIONS  Séquence octets      Options  spécifiques   Qdisc
                                                suivent
              TCA_STATS    struct tc_stats      Statistiques Qdisc
              TCA_XSTATS   Spécifique Qdisc     Statistiques     spécifiques
                                                module
              TCA_RATE     struct tc_estimator  Limitation taux

              De plus, d'autres attributs spécifiques au module Qdisc sont possibles. Pour plus  d'informations,
              voir les fichiers d'en-tête appropriés.

       RTM_NEWTCLASS, RTM_DELTCLASS, RTM_GETTCLASS
              Ajouter,  supprimer  ou rechercher une classe de trafic. Ces messages contiennent une struct tcmsg
              décrite plus haut.

       RTM_NEWTFILTER, RTM_DELTFILTER, RTM_GETTFILTER
              Ajouter, supprimer ou obtenir des informations sur un filtre de trafic. Ces  messages  contiennent
              une struct tcmsg décrite plus haut.

VERSIONS

       rtnetlink est une nouveauté Linux 2.2.

BOGUES

       Cette page de manuel est incomplète.

VOIR AUSSI

       cmsg(3), rtnetlink(3), ip(7), netlink(7)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de  traduction de
       Debian (2006-2009).

       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> ».

Linux                                              5 mars 2013                                      RTNETLINK(7)