Provided by: manpages-fr_4.23.1-1_all bug

NOM

       rtnetlink – Socket de routage de Linux

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 à divers
       sous-systèmes du noyau de communiquer entre eux, bien que cette utilisation  ne  soit  pas
       documentée  ici, et de communiquer avec les programmes de l'espace utilisateur. Les routes
       réseau, les adresses IP, les paramètres de liaison,  la  configuration  du  voisinage,  la
       discipline  de file d’attente, les classes de trafic et les classes de paquet peuvent être
       configurés par le biais  des  sockets  NETLINK_ROUTE.  Cela  est  basé  sur  des  messages
       netlink ; consultez netlink(7) pour plus d'informations.

   Attributs de routage
       Certains messages rtnetlink ont des attributs facultatifs après l'en-tête initial :

           struct rtattr {
               unsigned short rta_len;    /* Longueur d’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
       standard) :

       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;  /* Indice interface */
                  unsigned int   ifi_flags;  /* Attributs périphérique */
                  unsigned int   ifi_change; /* Masque modificateur */
              };

              ifi_flags   contient   les  attributs  du  périphérique ;  consultez  netdevice(7).
              ifi_index est l'indice unique de l'interface (depuis Linux 3.7, il est possible  de
              fournir  une  valeur  non  nulle  avec  le message RTM_NEWLINK, créant un lien avec
              l’ifindex) donné. 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 précisé
              IFLA_ADDRESS        adresse matérielle   adresse L2 d’interface
              IFLA_BROADCAST      adresse matérielle   adresse L2 de diffusion
              IFLA_IFNAME         chaîne ASCIIZ        nom de périphérique
              IFLA_MTU            entier non signé     MTU du périphérique
              IFLA_LINK           int                  type de lien
              IFLA_QDISC          chaîne ASCIIZ        mécanismes de file d'attente
              IFLA_STATS          voir ci‐dessous      statistiques d’interface
              IFLA_PERM_ADDRESS   adresse matérielle   hardware address provided by
                                                       device (since Linux 5.5)

              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  périphérique  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; /* Longueur préfixe adresse */
                  unsigned char ifa_flags;     /* Attributs adresse */
                  unsigned char ifa_scope;     /* Portée adresse */
                  unsigned int  ifa_index;     /* Indice interface */
              };

              ifa_family  est  le  type de famille d'adresses (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'indice 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  permanente  configurée  par  l'utilisateur  et
              d'autres indicateurs non documentés.

                                           Attributs
              rta_type        Type de valeur               Description
              ────────────────────────────────────────────────────────────────────
              IFA_UNSPEC      -                            non précisé
              IFA_ADDRESS     adresse brute de protocole   adresse d’interface
              IFA_LOCAL       adresse brute de protocole   adresse locale
              IFA_LABEL       chaîne ASCIIZ                nom de l'interface
              IFA_BROADCAST   adresse brute de protocole   adresse de diffusion
              IFA_ANYCAST     adresse brute de protocole   adresse anycast
              IFA_CACHEINFO   struct ifa_cacheinfo         informations d’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;   /* Address family of route */
                  unsigned char rtm_dst_len;  /* Length of destination */
                  unsigned char rtm_src_len;  /* Length of source */
                  unsigned char rtm_tos;      /* TOS filter */
                  unsigned char rtm_table;    /* Routing table ID;
                                                 see RTA_TABLE below */
                  unsigned char rtm_protocol; /* Routing protocol; see below */
                  unsigned char rtm_scope;    /* See below */
                  unsigned char rtm_type;     /* See below */

                  unsigned int  rtm_flags;
              };

              rtm_type          Type de route
              ─────────────────────────────────────────────────────────────────────────
              RTN_UNSPEC        route inconnue
              RTN_UNICAST       passerelle ou route directe
              RTN_LOCAL         route d’interface locale
              RTN_BROADCAST     route de diffusion locale (envoi en broadcast)
              RTN_ANYCAST       route de diffusion 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         continuer la recherche de routage dans une autre table
              RTN_NAT           règle de traduction d'adresse réseau
              RTN_XRESOLVE      référence à une résolution externe (non implémentée)

              rtm_protocol      Origine de la route
              ───────────────────────────────────────────────────
              RTPROT_UNSPEC     inconnue
              RTPROT_REDIRECT   définie par une redirection ICMP
                                (inutilisée 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
              l’information  de  routage  ou  de  faire une distinction entre plusieurs démons de
              routage. Consultez <linux/rtnetlink.h>  pour  les  identificateurs  des  démons  de
              routage déjà affectés.

              rtm_scope est la distance à la destination :

              RT_SCOPE_UNIVERSE   route globale
              RT_SCOPE_SITE       route  interne  dans  le système
                                  autonome local
              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 à
                               l’aide de 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   table par défaut
              RT_TABLE_MAIN      table principale
              RT_TABLE_LOCAL     table locale

              L'utilisateur peut  affecter  à  son  gré  les  valeurs  entre  RT_TABLE_UNSPEC  et
              RT_TABLE_DEFAULT.
                                             Attributs
              rta_type        Type de valeur        Description
              ─────────────────────────────────────────────────────────────────────────
              RTA_UNSPEC      -                     ignoré
              RTA_DST         adresse de protocole  adresse de destination de la route
              RTA_SRC         adresse de protocole  adresse de source de la route
              RTA_IIF         int                   indice de l’interface d'entrée
              RTA_OIF         int                   indice de l’interface de sortie
              RTA_GATEWAY     adresse de protocole  passerelle de la route
              RTA_PRIORITY    int                   priorité de la route
              RTA_PREFSRC     adresse de protocole  adresse de la route préférée
              RTA_METRICS     int                   métrique de la route
              RTA_MULTIPATH                         données  multichemin nexthop (voir
                                                    ci-dessous)
              RTA_PROTOINFO                         abandonné
              RTA_FLOW        int                   domaine de route
              RTA_CACHEINFO   struct rta_cacheinfo  (voir linux/rtnetlink.h)
              RTA_SESSION                           abandonné
              RTA_MP_ALGO                           abandonné
              RTA_TABLE       int                   ID de table de routage ; si défini
                                                    rtm_table est ignoré
              RTA_MARK        int
              RTA_MFC_STATS   struct rta_mfc_stats  (voir linux/rtnetlink.h)
              RTA_VIA         struct rtvia          passerelle dans  un  AF  différent
                                                    (voir ci-dessous)
              RTA_NEWDST      adresse de protocole  modification       adresse      de
                                                    destination de paquet
              RTA_PREF        char                  préférence de routeur IPv6 RFC4191
                                                    (voir ci-dessous)
              RTA_ENCAP_TYPE  short                 type d’encapsulation pour
                                                    lwtunnels (voir ci-dessous)
              RTA_ENCAP                             défini par RTA_ENCAP_TYPE
              RTA_EXPIRES     int                   délai  d’expiration de routes IPv6
                                                    (en seconde)
              RTA_MULTIPATH contient plusieurs instances groupées de struct  rtnexthop  avec  des
              RTA imbriqués (RTA_GATEWAY) :

                  struct rtnexthop {
                      unsigned short rtnh_len;     /* Long. de struct. + long.
                                                      de RTA */
                      unsigned char  rtnh_flags;   /* Indicateurs (voir
                                                      linux/rtnetlink.h) */
                      unsigned char  rtnh_hops;    /* Priorité nexthop */
                      int            rtnh_ifindex; /* Indice interface pour
                                                      ce nexthop */
                  }

              Il  existe  un  tas  de macros RTNH_* similaires aux macros RTA_* et NLHDR_* utiles
              pour gérer ces structures.

                  struct rtvia {
                      unsigned short rtvia_family;
                      unsigned char  rtvia_addr[0];
                  };

              rtvia_addr est l’adresse, rtvia_family est son type de famille.

              RTA_PREF      peut      contenir      les      valeurs      ICMPV6_ROUTER_PREF_LOW,
              ICMPV6_ROUTER_PREF_MEDIUM      et     ICMPV6_ROUTER_PREF_HIGH     définies     dans
              <linux/icmpv6.h>.

              RTA_ENCAP_TYPE peut contenir les  valeurs  LWTUNNEL_ENCAP_MPLS,  LWTUNNEL_ENCAP_IP,
              LWTUNNEL_ENCAP_ILA ou LWTUNNEL_ENCAP_IP6 définies dans <linux/lwtunnel.h>.

              Fournissez ces valeurs !

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

              struct ndmsg {
                  unsigned char ndm_family;
                  int           ndm_ifindex;  /* Interface index */
                  __u16         ndm_state;    /* State */
                  __u8          ndm_flags;    /* Flags */
                  __u8          ndm_type;
              };

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

              ndm_state est un masque de bits des états suivants :

              NUD_INCOMPLETE   une entrée de cache en cours de résolution

              NUD_REACHABLE    une entrée de cache en vigueur confirmée
              NUD_STALE        une entrée de cache expirée
              NUD_DELAY        une entrée de cache en attente de temporisateur
              NUD_PROBE        une entrée de cache en cours d’examen

              NUD_FAILED       une entrée de cache non valable
              NUD_NOARP        un périphérique sans cache de destination
              NUD_PERMANENT    une entrée statique

              Les valeurs autorisées pour ndm_flags sont :

              NTF_PROXY    une entrée ARP de mandataire
              NTF_ROUTER   un routeur IPv6

              La structure rtattr prend les significations suivantes pour le champ rta_type :

              NDA_UNSPEC      type inconnu
              NDA_DST         une adr. de dest. de la couche de réseau du cache de voisinage
              NDA_LLADDR      une adresse de couche de liaison du cache de 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 qui peut être suivie par une série d'attributs.

              struct tcmsg {
                  unsigned char    tcm_family;
                  int              tcm_ifindex;   /* Indice d’interface */
                  __u32            tcm_handle;    /* Gestion qdisc */
                  __u32            tcm_parent;    /* Qdisc parent */
                  __u32            tcm_info;
              };

                                             Attributs

              rta_type     Type de valeur       Description
              ─────────────────────────────────────────────────────────────────────────
              TCA_UNSPEC   -                    non précisé
              TCA_KIND     chaîne ASCIIZ        nom de la discipline de file d'attente
              TCA_OPTIONS  séquence d’octets    options spécifiques qdisc suivent
              TCA_STATS    struct tc_stats      statistiques qdisc
              TCA_XSTATS   spécifique qdisc     statistiques spécifiques au module
              TCA_RATE     struct tc_estimator  limite de 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é de Linux 2.2.

BOGUES

       Cette page de manuel est incomplète.

VOIR AUSSI

       cmsg(3), rtnetlink(3), ip(7), netlink(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-Paul  Guillonneau
       <guillonneau.jeanpaul@free.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⟩.