rtnetlink   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 14 mai 1999
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
rtnetlink - Macros manipulant des messages rtnetlink  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <asm/types.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <sys/socket.h>

rtnetlink_socket = socket(PF_NETLINK, int socket_type, 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Tous les messages rtnetlink(7) consistent en un entête de message netlink(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 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 attribut 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 attribut.

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'entête.

RTA_SPACE(len) renvoie la quantite de mémoire nécessaire pour un message composé de len octets de données.  




CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Ces fonctions sont des extensions Linux non standards.  



BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Cette page de manuel est incomplète.  



EXEMPLE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Créer un message rtnetlink pour choisir le MTU d'un périphérique.


    struct {
        struct nlmsghdr  nh;
        struct ifinfomsg if;
        char             attrbuf[512];
    } req;
    struct rtattr *rta;
    unsigned int mtu = 1000;
    int rtnetlink_sk = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);

    memset(&req, 0, sizeof(req));
    req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg));
    req.nh.nlmsg_flags = NLM_F_REQUEST;
    req.nh.nlmsg_type = RTML_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(n->nlmsg_len));
    rta->rta_type = IFLA_MTU;
    rta->rta_len = sizeof(unsigned int);
    req.n.nlmsg_len = NLMSG_ALIGN(req.n.nlmsg_len) +
                        RTA_LENGTH(sizeof(mtu));
    memcpy(RTA_DATA(rta), &mtu, sizeof(mtu));
    send(rtnetlink_sk, &req, req.n.nlmsg_len);
 



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
netlink(3), netlink(7), rtnetlink(7)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Thierry Vignaud <tvignaud AT mandriva DOT com> en 2000 et révisée le 8 janvier 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 rtnetlink ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
CONFORMITÉ
BOGUES
EXEMPLE
VOIR AUSSI
TRADUCTION

Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:55:11, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional