/** fichier libnet.c **/ /************************************************************/ /** Ce fichier contient des fonctions reseau. **/ /************************************************************/ /**** Fichiers d'inclusion ****/ #include #include #include #include #include #include #include #include #include #include "libnet.h" /**** Constantes ****/ #define TAP_PRINCIPAL "/dev/net/tun" /**** Variables globales *****/ /**** Fonctions de gestion des sockets ****/ /**** Fonctions de gestion des interfaces virtuelles ****/ /** Ouverture d'une interface Ethernet virtuelle **/ int creationInterfaceVirtuelle(char *nom) { struct ifreq interface; int fd,erreur; /* Ouverture du peripherique principal */ if((fd=open(TAP_PRINCIPAL,O_RDWR))<0) return fd; printf("Je suis ici\n"); /* Preparation de la structure */ memset(&interface,0,sizeof(interface)); interface.ifr_flags=IFF_TAP|IFF_NO_PI; if(nom!=NULL) strncpy(interface.ifr_name,nom,IFNAMSIZ); printf("Je suis la\n"); /* Creation de l'interface */ if((erreur=ioctl(fd,TUNSETIFF,(void *)&interface))<0){ close(fd); return erreur; } printf("Je suis ici bas %s\n", interface.ifr_name); /* Recuperation du nom de l'interface */ //if(nom!=NULL) strncpy(nom,interface.ifr_name, IFNAMSIZ); //MAIS PK ?? printf("La je suis\n"); return fd; }