MAC-Adresse ermitteln wenn eth nicht verbunden?

Post Reply
Message
Author
ElBlues
Posts: 127
Joined: 25. Mar 2008 12:50
Contact:

MAC-Adresse ermitteln wenn eth nicht verbunden?

#1 Post by ElBlues »

Hi,

aktuell ermittle ich die MAC-Adressen meiner vorhandenen Netzwerkgeräte auf diesem Weg:

Code: Select all

s = socket(AF_INET, SOCK_DGRAM, 0);
if (s==-1) return false;

ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = buf;
ioctl(s, SIOCGIFCONF, &ifc);
 
IFR = ifc.ifc_req;
for (i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; IFR++) 
{
   strcpy(ifr.ifr_name, IFR->ifr_name);
   if (ioctl(s, SIOCGIFFLAGS, &ifr) == 0) 
   {
      if (! (ifr.ifr_flags & IFF_LOOPBACK)) 
      {
         if (ioctl(s, SIOCGIFHWADDR, &ifr) == 0)
         {
            bcopy(ifr.ifr_hwaddr.sa_data,m,6);
            ...
         }
      }
   }
}
close(s);
Nachteil: hier muss - vermutlich Dank NetworkManager - ein Netzwerkinterface tatsächlich verbunden sein, damit es in der Liste auftaucht.

Ich hätte aber gerne die MAC-Adressen aller Interfaces, egal ob verbunden oder nicht. Wie geht das am besten?
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Vermutlich hängt das damit zusammen, dass ein AF_INET-Socket voraussetzt, dass dem Gerät eine IP-Adresse zugewiesen ist. Andere Protokollfamilie ausprobieren, z.B. raw-Sockets.

Ich mache das übrigens ganz anders und gucke mir einfach den Inhalt der Dateien /sys/class/net/eth*/address an. Geht natürlich nur, wenn sysfs da ist.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ElBlues
Posts: 127
Joined: 25. Mar 2008 12:50
Contact:

#3 Post by ElBlues »

Janka wrote:Ich mache das übrigens ganz anders und gucke mir einfach den Inhalt der Dateien /sys/class/net/eth*/address an. Geht natürlich nur, wenn sysfs da ist.
Das klingt doch mal nach einer prima Lösung - und wenn sysfs nicht existiert kann ich immer noch auf meine Methode zurückgreifen :-)
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!

Post Reply