rtnetlink(3) Library Functions Manual rtnetlink(3) NOM rtnetlink - Macros manipulant des messages rtnetlink BIBLIOTHÈQUE Bibliothèque C standard (libc, -lc) SYNOPSIS #include <asm/types.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> #include <sys/socket.h> 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-tête de message net- link(7) et des attributs. Ceux-ci ne devraient être manipulés que par les macros fournies ici. RTA_OK(rta, attrlen) renvoie vrai si rta pointe sur un attribut de rou- tage 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 attri- buts dans le message, même si attrlen n'est pas nulle. RTA_DATA(rta) renvoie un pointeur sur le début des données de cet at- tribut. RTA_PAYLOAD(rta) renvoie la longueur des données de cet attribut. RTA_NEXT(rta, attrlen) renvoie le premier attribut après rta. Un appel à cette macro met à jour attrlen. Vous devriez utiliser RTA_OK pour vé- rifier la validité du pointeur retourné. RTA_LENGTH(len) renvoie la longueur requise pour len octets de données plus l'en-tête. RTA_SPACE(len) renvoie la quantité de mémoire nécessaire pour un mes- sage composé de len octets de données. STANDARDS Ces macros sont des extensions de Linux non standard. BOGUES Cette page de manuel est incomplète. EXEMPLES Créer un message rtnetlink pour choisir le MTU d'un périphérique. #include <linux/rtnetlink.h> ... 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 française de cette page de manuel a été créée par Chris- tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste- phan.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.cou- lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centra- liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <si- mon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@de- bian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr> Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩. Pages du manuel de Linux 6.03 30 octobre 2022 rtnetlink(3)
Generated by dwww version 1.15 on Sat Jun 29 01:37:02 CEST 2024.