IP & Etherdevice ermitteln
-
Hi !
Mit welchen C-Funktion kann ich:
1. die MAC Adresse ermitteln ?
2. die IP Adresse die diese Ethernet Gerät zugewiesen bekam ?Also so zB:
struct ether_addr* gib_mir_mac_von( char* dev_name ); //zB dev_name = "eth1" struct in_addr* gib_mir_ip_von( char* dev_name );
oder sowas in der Art.
-
-
Yeah, cool funktioniert wunderbar.
Hardwareadresse ermitteln:
int sock_fd = socket( AF_INET , SOCK_DGRAM , 0 ); if( sock_fd == -1 ) { printf("Error: creating socket.\n"); exit(1); } struct ifreq ifr; strcpy( ifr.ifr_name , "eth1" ); if( ioctl( sock_fd , SIOCGIFHWADDR , &ifr ) == -1 ) { printf("problems with ioctl.\n"); exit(1); } printf("%s\n" , ether_ntoa( (struct ether_addr*) ifr.ifr_hwaddr.sa_data ) ); close( sock_fd );
IP Adresse ermitteln:
int sock_fd = socket( AF_INET , SOCK_DGRAM , 0 ); if( sock_fd == -1 ) { printf("Error: creating socket.\n"); exit(1); } struct ifreq ifr; strcpy( ifr.ifr_name , interface ); if( ioctl( sock_fd , SIOCGIFADDR , &ifr ) == -1 ) { printf("problems with ioctl.\n"); exit(1); } ip->saddr = inet_addr( inet_ntoa( ((struct sockaddr_in *) (&ifr.ifr_addr))->sin_addr ) ); close( sock_fd );