Dumbledore | Code :
- #include <netinet/in.h>
- #include <sys/socket.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #include <netdb.h>
- #include <net/if.h>
- #include <sys/ioctl.h>
- /*!
- * @brief Récupérer la configuration IP d'une interface de la machine
- * @param ip_type : Indique le type d'adresse à renvoyer :
- * -# SIOCGIFADDR = Adresse IP
- * -# SIOCGIFBRDADDR = Adresse de broadcast
- * -# SIOCGIFNETMASK = Masque de réseau
- * @param ifname : Nom de l'interface réseau donc il faut récupérer l'adresse (eth0, wifi0...)
- * @param addr_ip : Emplacement où sera stocké l'adresse IP (un buffer alloué)
- * @return 1 si l'adresse bien été récupérée, 0 sinon
- */
- int get_ip(int ip_type,char *ifname,char *addr_ip){
- if(ip_type != SIOCGIFADDR && ip_type != SIOCGIFBRDADDR && ip_type != SIOCGIFNETMASK){
- fprintf(stderr,"ERR : %s:%i : Type d'adresse indiqué non valide\n",__FILE__,__LINE__);
- return 0;
- }
- struct ifreq ifr;
- struct sockaddr_in *addrp = NULL;
- memset( &ifr, 0, sizeof( struct ifreq ) );
- strncpy(ifr.ifr_name,ifname,IFNAMSIZ);
- if( ioctl( sockfd, ip_type, &ifr ) == -1 ) {
- fprintf( stderr, "ERR : Ne peut obtenir l'adresse IP de %s\n",ifname);
- return 0;
- }
- else{
- addrp = (struct sockaddr_in *)&(ifr.ifr_addr);
- printf("DBG : %s:%i : Adresse de %s : %s\n",__FILE__,__LINE__,ifname,inet_ntoa(addrp->sin_addr));
- strcpy(addr_ip,inet_ntoa(addrp->sin_addr));
- return 1;
- }
- }
|
Par contre, je ne suis plus tout à fait sur des #includes
EDIT : en fouillant sur internet ou en lisant le code de ifconfig, tu devrais pouvoir trouver le nécessaire pour obtenir la liste de toutes tes interfaces réseau. (c'est comme ça que j'ai écrit ce bout de code) Message édité par Dumbledore le 14-12-2006 à 15:31:29
|