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 );
    

Anmelden zum Antworten