rtnetlink(3) Library Functions Manual rtnetlink(3) NOM rtnetlink - Macros manipulant des messages rtnetlink BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include #include #include #include rtnetlink_socket = socket(AF_NETLINK, int type_socket, NETLINK_ROUTE); int RTA_OK(struct rtattr *rta, int size); void *RTA_DATA(struct rtattr *rta); unsigned int RTA_PAYLOAD(struct rtattr *rta); struct rtattr *RTA_NEXT(struct rtattr *rta, unsigned int size); unsigned int RTA_LENGTH(unsigned int size); unsigned int RTA_SPACE(unsigned int size); DESCRIPTION Tous les messages rtnetlink(7) consistent en un en-tete de message netlink(7) et des attributs. Ceux-ci ne devraient etre manipules que par les macros fournies ici. RTA_OK(rta, size) renvoie vrai si rta pointe sur un attribut de routage valide ; size est la taille courante du tampon d'attributs. Si elle renvoie 0, vous devez supposer qu'il n'y a pas d'autre attributs dans le message, meme si size n'est pas nulle. RTA_DATA(rta) renvoie un pointeur sur le debut des donnees de cet attribut. RTA_PAYLOAD(rta) renvoie la taille des donnees de cet attribut. RTA_NEXT(rta, size) renvoie le premier attribut apres rta. Un appel a cette macro met a jour size. Vous devriez utiliser RTA_OK pour verifier la validite du pointeur renvoye. RTA_LENGTH(size) renvoie la taille requise pour size octets de donnees plus l'en-tete. RTA_SPACE(size) renvoie la quantite de memoire necessaire pour un message compose de size octets de donnees. NORMES Linux. BOGUES Cette page de manuel est incomplete. EXEMPLES Creer un message rtnetlink pour choisir le MTU d'un peripherique. #include ... struct { struct nlmsghdr nh; struct ifinfomsg if; char attrbuf[512]; } req; struct rtattr *rta; unsigned int mtu = 1000; memset(&req, 0, sizeof(req)); req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.if)); req.nh.nlmsg_flags = NLM_F_REQUEST; req.nh.nlmsg_type = RTM_NEWLINK; req.if.ifi_family = AF_UNSPEC; req.if.ifi_index = INTERFACE_INDEX; req.if.ifi_change = 0xffffffff; /* ??? */ rta = (struct rtattr *) ((char *) &req + NLMSG_ALIGN(req.nh.nlmsg_len)); rta->rta_type = IFLA_MTU; rta->rta_len = RTA_LENGTH(sizeof(mtu)); req.nh.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) + RTA_LENGTH(sizeof(mtu)); memcpy(RTA_DATA(rta), &mtu, sizeof(mtu)); send(rtnetlink_sk, &req, req.nh.nlmsg_len, 0); VOIR AUSSI netlink(3), netlink(7), rtnetlink(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-Pierre Giraud 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.18 8 fevrier 2026 rtnetlink(3)