Man page - rtnetlink(7)

Packages contains this manual

Available languages:

en fr ja ru

Manual

rtnetlink

NOM
SYNOPSIS
DESCRIPTION
Attributs de routage
Messages
VERSIONS
BOGUES
VOIR AUSSI
TRADUCTION

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.

Image grohtml-3847072-1.png

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.

Image grohtml-3847072-2.png

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’adresses 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 de routage ;
voir RTA_TABLE ci-dessous */
unsigned char rtm_protocol; /* Protocole de routage ;
voir ci-dessous */
unsigned char rtm_scope; /* Voir ci-dessous */
unsigned char rtm_type; /* Voir ci-dessous */
unsigned int rtm_flags;
};

Image grohtml-3847072-3.png

Image grohtml-3847072-4.png

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 vers la destination :

Image grohtml-3847072-5.png

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

Le champ rtm_flags prend les significations suivantes :

Image grohtml-3847072-6.png

rtm_table indique la table de routage

Image grohtml-3847072-7.png

L’utilisateur peut affecter Ă  son grĂ© les valeurs entre RT_TABLE_UNSPEC et RT_TABLE_DEFAULT .

Image grohtml-3847072-8.png

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.
des 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 une série de macros RTNH_* similaires aux macros RTA_* et NLHDR_* utiles pour manipuler 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 (par exemple : une entrĂ©e ARP). Le message contient une structure ndmsg .

struct ndmsg {
unsigned char ndm_family;
int ndm_ifindex; /* Indice d’interface */
__u16 ndm_state; /* État */
__u8 ndm_flags; /* Indicateurs */
__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 :

Image grohtml-3847072-9.png

Les valeurs autorisées pour ndm_flags sont :

Image grohtml-3847072-10.png

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

Image grohtml-3847072-11.png

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;
};

Image grohtml-3847072-12.png

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