SoWhatIn22 | nikosaka a écrit :
bonjour tout le monde.
je suis sous Linux et j'aimerais écrire en C une fonction pour récupérer l'adresse MAC de ma carte réseau eth0. ça doit être possible avec ioctl mais pour l'instant j'y comprend rien I need HELP please
|
personellement, voici comment je fais:
Code :
- char buffer[6];
- int s;
- struct ifreq ifr;
- memset( buffer, 0, 6 );
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if(s==-1)
- return -1;
- snprintf(ifr.ifr_name, IFNAMSIZ-1, "%s", "/dev/eth0" );
- if (ioctl(s, SIOCGIFFLAGS, &ifr)==0) {
- if (ioctl(s, SIOCGIFHWADDR, &ifr) == 0)
- memcpy( buffer, ifr.ifr_hwaddr.sa_data, 6);
- close(s);
|
je ne sais plus s'il faut mettre "eth0" ou "/dev/eth0". Je crois que c'est /dev/eth0. La liste des devices reseau est dans /proc/net/dev.
Je te laisse chercher plus d'info sur ioctl et SIOCGIFHWADDR pour en savoir plus. |