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 rtabuflen); void *RTA_DATA(struct rtattr *rta); unsigned int RTA_PAYLOAD(struct rtattr *rta); struct rtattr *RTA_NEXT(struct rtattr *rta, unsigned int rtabuflen); unsigned int RTA_LENGTH(unsigned int length); unsigned int RTA_SPACE(unsigned int length); 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, attrlen) renvoie vrai si rta pointe sur un attribut de routage valide ; attrlen est la longueur 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 attrlen n'est pas nulle. RTA_DATA(rta) renvoie un pointeur sur le debut des donnees de cet attribut. RTA_PAYLOAD(rta) renvoie la longueur des donnees de cet attribut. RTA_NEXT(rta, attrlen) renvoie le premier attribut apres rta. Un appel a cette macro met a jour attrlen. Vous devriez utiliser RTA_OK pour verifier la validite du pointeur retourne. RTA_LENGTH(len) renvoie la longueur requise pour len octets de donnees plus l'en-tete. RTA_SPACE(len) renvoie la quantite de memoire necessaire pour un message compose de len octets de donnees. STANDARDS 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; int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE); 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.06 31 octobre 2023 rtnetlink(3)