rtnetlink(7) Miscellaneous Information Manual rtnetlink(7) NOM rtnetlink - Socket de routage de Linux SYNOPSIS #include #include #include #include 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 a divers sous-systemes du noyau de communiquer entre eux, bien que cette utilisation ne soit pas documentee ici, et de communiquer avec les programmes de l'espace utilisateur. Les routes reseau, les adresses IP, les parametres de liaison, la configuration du voisinage, la discipline de file d'attente, les classes de trafic et les classes de paquet peuvent etre configures par le biais des sockets NETLINK_ROUTE. Cela est base sur des messages netlink ; consultez netlink(7) pour plus d'informations. Attributs de routage Certains messages rtnetlink ont des attributs facultatifs apres l'en-tete initial : struct rtattr { unsigned short rta_len; /* Longueur d'option */ unsigned short rta_type; /* Type d'option */ /* Les donnees suivent... */ }; Ces attributs ne doivent etre manipules qu'en utilisant les macros RTA_* ou libnetlink. Consultez rtnetlink(3). Messages rtnetlink est constitue de trois types de messages (en plus des messages netlink standard) : RTM_NEWLINK RTM_DELLINK RTM_GETLINK Creer, supprimer ou obtenir des informations a propos d'une interface reseau specifique. Ces messages contiennent une structure ifinfomsg suivie d'une serie de structures rtattr. struct ifinfomsg { unsigned char ifi_family; /* AF_UNSPEC */ unsigned short ifi_type; /* Type peripherique */ int ifi_index; /* Indice interface */ unsigned int ifi_flags; /* Attributs peripherique */ unsigned int ifi_change; /* Masque modificateur */ }; ifi_flags contient les attributs du peripherique ; 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, creant un lien avec l'ifindex) donne. ifi_change est reserve pour un usage ulterieur et doit toujours valoir 0xFFFFFFFF. Attributs de routage rta_type Type de valeur Description -------------------------------------------------------------------------- IFLA_UNSPEC - non precise IFLA_ADDRESS adresse materielle adresse L2 d'interface IFLA_BROADCAST adresse materielle adresse L2 de diffusion IFLA_IFNAME chaine ASCIIZ nom de peripherique IFLA_MTU entier non signe MTU du peripherique IFLA_LINK int type de lien IFLA_QDISC chaine ASCIIZ mecanismes de file d'attente IFLA_STATS voir ci-dessous statistiques d'interface IFLA_PERM_ADDRESS adresse materielle hardware address provided by device (since Linux 5.5) Le type de donnees pour IFLA_STATS est struct rtnl_link_stats (struct net_device_stats dans les noyaux Linux 2.4 et anterieurs). RTM_NEWADDR RTM_DELADDR RTM_GETADDR Ajouter, supprimer ou obtenir des informations sur une adresse IP associee a une interface. Sous Linux 2.2, une interface peut gerer plusieurs adresses IP, ce qui remplace le concept d'alias de peripherique de Linux 2.0. Dans Linux 2.2, ces messages prennent en charge les adresses IPv4 et IPv6. Ils contiennent une structure ifaddrmsg, suivie eventuellement par des attributs de routage rtattr. struct ifaddrmsg { unsigned char ifa_family; /* Type adresse */ unsigned char ifa_prefixlen; /* Longueur prefixe adresse */ unsigned char ifa_flags; /* Attributs adresse */ unsigned char ifa_scope; /* Portee 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 defini pour la famille (comme avec IPv4), ifa_scope est la portee de l'adresse, ifa_index est l'indice de l'interface associee a l'adresse. ifa_flags est un attribut compose de IFA_F_SECONDARY pour une adresse secondaire (les anciens alias d'interface), IFA_F_PERMANENT pour une adresse permanente configuree par l'utilisateur et d'autres indicateurs non documentes. Attributs rta_type Type de valeur Description -------------------------------------------------------------------- IFA_UNSPEC - non precise IFA_ADDRESS adresse brute de protocole adresse d'interface IFA_LOCAL adresse brute de protocole adresse locale IFA_LABEL chaine 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 Creer, supprimer ou obtenir des informations a propos d'une route reseau. Ces messages contiennent une structure rtmsg suivie d'une sequence eventuelle de structures rtattr. Pour RTM_GETROUTE, mettre rtm_dst_len et rtm_src_len a 0 signifie obtenir toutes les entrees pour la table de routage indiquee. Pour les autres champs, sauf rtm_table et rtm_protocol, 0 est le symbole generique 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 regle de traduction d'adresse reseau RTN_XRESOLVE reference a une resolution externe (non implementee) rtm_protocol Origine de la route ------------------------------------------------- RTPROT_UNSPEC inconnue RTPROT_REDIRECT definie par une redirection ICMP (inutilisee actuellement) RTPROT_KERNEL definie par le noyau RTPROT_BOOT obtenue pendant le demarrage RTPROT_STATIC definie par l'administrateur Les valeurs plus grandes que RTPROT_STATIC ne sont pas interpretees 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 demons de routage. Consultez pour les identificateurs des demons de routage deja affectes. rtm_scope est la distance a la destination : RT_SCOPE_UNIVERSE route globale RT_SCOPE_SITE route interne dans le systeme autonome local RT_SCOPE_LINK route sur ce lien RT_SCOPE_HOST route sur l'hote 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 a l'aide de rtnetlink RTM_F_CLONED la route est clonee depuis une autre route RTM_F_EQUALIZE repartiteur multichemin (pas encore implemente) rtm_table indique la table de routage RT_TABLE_UNSPEC table de routage non specifiee RT_TABLE_DEFAULT table par defaut RT_TABLE_MAIN table principale RT_TABLE_LOCAL table locale L'utilisateur peut affecter a son gre les valeurs entre RT_TABLE_UNSPEC et RT_TABLE_DEFAULT. Attributs rta_type Type de valeur Description ------------------------------------------------------------------------- RTA_UNSPEC - ignore 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'entree RTA_OIF int indice de l'interface de sortie RTA_GATEWAY adresse de protocole passerelle de la route RTA_PRIORITY int priorite de la route RTA_PREFSRC adresse de protocole adresse de la route preferee RTA_METRICS int metrique de la route RTA_MULTIPATH donnees multichemin nexthop (voir ci-dessous) RTA_PROTOINFO abandonne RTA_FLOW int domaine de route RTA_CACHEINFO struct rta_cacheinfo (voir linux/rtnetlink.h) RTA_SESSION abandonne RTA_MP_ALGO abandonne RTA_TABLE int ID de table de routage ; si defini rtm_table est ignore RTA_MARK int RTA_MFC_STATS struct rta_mfc_stats (voir linux/rtnetlink.h) RTA_VIA struct rtvia passerelle dans un AF different (voir ci-dessous) RTA_NEWDST adresse de protocole modification adresse de destination de paquet RTA_PREF char preference de routeur IPv6 RFC4191 (voir ci-dessous) RTA_ENCAP_TYPE short type d'encapsulation pour lwtunnels (voir ci-dessous) RTA_ENCAP defini par RTA_ENCAP_TYPE RTA_EXPIRES int delai d'expiration de routes IPv6 (en seconde) RTA_MULTIPATH contient plusieurs instances groupees de struct rtnexthop avec des RTA imbriques (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; /* Priorite nexthop */ int rtnh_ifindex; /* Indice interface pour ce nexthop */ } Il existe un tas de macros RTNH_* similaires aux macros RTA_* et NLHDR_* utiles pour gerer 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 definies dans . RTA_ENCAP_TYPE peut contenir les valeurs LWTUNNEL_ENCAP_MPLS, LWTUNNEL_ENCAP_IP, LWTUNNEL_ENCAP_ILA ou LWTUNNEL_ENCAP_IP6 definies dans . Fournissez ces valeurs ! RTM_NEWNEIGH RTM_DELNEIGH RTM_GETNEIGH Ajouter, supprimer ou obtenir des informations sur le voisinage d'un element de table (p.ex. : une entree 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 etats suivants : NUD_INCOMPLETE une entree de cache en cours de resolution NUD_REACHABLE une entree de cache en vigueur confirmee NUD_STALE une entree de cache expiree NUD_DELAY une entree de cache en attente de temporisateur NUD_PROBE une entree de cache en cours d'examen NUD_FAILED une entree de cache non valable NUD_NOARP un peripherique sans cache de destination NUD_PERMANENT une entree statique Les valeurs autorisees pour ndm_flags sont : NTF_PROXY une entree 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 reseau 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-tete struct nda_cacheinfo suit. RTM_NEWRULE RTM_DELRULE RTM_GETRULE Ajouter, supprimer ou rechercher une regle 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 etre suivie par une serie 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 precise TCA_KIND chaine ASCIIZ nom de la discipline de file d'attente TCA_OPTIONS sequence d'octets options specifiques qdisc suivent TCA_STATS struct tc_stats statistiques qdisc TCA_XSTATS specifique qdisc statistiques specifiques au module TCA_RATE struct tc_estimator limite de taux De plus, d'autres attributs specifiques au module Qdisc sont possibles. Pour plus d'informations, voir les fichiers d'en-tete appropries. RTM_NEWTCLASS RTM_DELTCLASS RTM_GETTCLASS Ajouter, supprimer ou rechercher une classe de trafic. Ces messages contiennent une struct tcmsg decrite 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 decrite plus haut. VERSIONS rtnetlink est une nouveaute de Linux 2.2. BOGUES Cette page de manuel est incomplete. VOIR AUSSI cmsg(3), rtnetlink(3), ip(7), netlink(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Paul Guillonneau Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 rtnetlink(7)