NETLINK
Section : Manuel de l'administrateur Linux (
7)
Mise à jour de la version anglaise : 27 décembre 2005
Index
Menu principal
NOM
netlink, PF_NETLINK - Communication entre noyau et utilisateur
SYNOPSIS
#include <asm/types.h>
#include <sys/socket.h>
#include <linux/netlink.h>
netlink_socket = socket(PF_NETLINK, socket_type, netlink_family);
DESCRIPTION
Netlink sert à transférer des informations entre le noyau et les
processus de l'espace utilisateur.
Il consiste en une interface basée sur les sockets standard pour les
processus utilisateur et d'une API interne pour les modules du noyau.
Cette interface n'est pas documentée dans cette page de manuel.
Il existe aussi une interface obsolète via un périphérique caractère
netlink, réservée pour compatibilité et non documentée ici.
Netlink est un service orienté datagramme.
Les deux types
SOCK_RAW
et
SOCK_DGRAM
sont des valeurs possibles pour
socket_type.
Toutefois, le protocole netlink ne distingue pas les sockets raw et
datagrammes.
netlink_family
sélectionne le module du noyau ou le groupe netlink avec qui communiquer.
Les familles netlink actuellement affectées sont :
- NETLINK_ROUTE
-
Reçoit les modifications de routage et de liens et peut être utilisé pour
mettre à jour les tables de routage (IPv4 et IPv6), les adresses IP,
les paramètres de liens, les configurations voisines, les disciplines de
mise en file d'attente, les classes de trafic, et les classificateurs de
paquets (voir
rtnetlink(7)).
- NETLINK_W1
-
Messages de sous-systèmes 1-fil.
- NETLINK_ARPD
-
Pour gérer la table Arp dans l'espace utilisateur.
- NETLINK_USERSOCK
-
Réservé pour les futurs protocoles dans l'espace utilisateur.
- NETLINK_FIREWALL
-
Transport de paquets IPv4 de netfilter vers l'espace utilisateur.
Utilisé par le module noyau
ip_queue.
- NETLINK_INET_DIAG
-
Surveillance de socket.
- NETLINK_NFLOG
-
Netfilter/iptables ULOG.
- NETLINK_XFRM
-
IPsec.
- NETLINK_SELINUX
-
Notifications d'événements SELinux.
- NETLINK_AUDIT
-
Audit.
- NETLINK_FIB_LOOKUP
-
Accès à la consultation FIB de l'espace utilisateur.
- NETLINK_CONNECTOR
-
Connecteur noyau.
Voir
Documentation/connector/*
dans les sources du noyau pour plus d'informations.
- NETLINK_NETFILTER
-
Sous-système Netfilter.
- NETLINK_IP6_FW
-
Transports des paquets IPv6 de netfilter vers l'espace utilisateur.
Utilisé par le module noyau
ip6_queue.
- NETLINK_DNRTMSG
-
Routage DECnet des messages.
- NETLINK_KOBJECT_UEVENT
-
Messages noyau vers espace utilisateur.
- NETLINK_GENERIC
-
Famille générique netlink pour simplifier l'utilisation netlink.
Les messages netlink consistent en un flux d'octets avec un ou plusieurs
entêtes
nlmsghdr
et les contenus associés.
Le flux d'octets ne doit être accédé qu'à travers les macros standard
NLMSG_*.
Voir
netlink(3)
pour plus d'informations.
Dans les messages multiparties (entêtes
nlmsghdr
multiples avec données utiles associées dans un flux d'octets) le premier
et tous les entêtes suivants
ont l'attribut
NLM_F_MULTI
actif, sauf le dernier entête qui a le type
NLMSG_DONE.
Après chaque
nlmsghdr,
les données utiles suivent.
struct nlmsghdr {
__u32 nlmsg_len; /* Longueur y compris entête */
__u16 nlmsg_type; /* Contenu message */
__u16 nlmsg_flags; /* Attributs supplémentaires */
__u32 nlmsg_seq; /* Numéro de séquence */
__u32 nlmsg_pid; /* PID du créateur socket */
};
nlmsg_type
peut être l'un des types standard de message :
NLMSG_NOOP
message à ignorer,
NLMSG_ERROR
message indiquant une erreur, son contenu est une structure
nlmsgerr,
NLMSG_DONE
message final d'un ensemble multiparties.
struct nlmsgerr
{
int error; /* errno négatif ou 0 pour acquittement */
struct nlmsghdr msg; /* entête message causant l'erreur */
};
Une famille netlink contient des types supplémentaires de message,
voir la page de manuel appropriée, par exemple
rtnetlink