How to retrieve an interface's MAC address

Chris Johns chrisj at rtems.org
Sat Apr 5 22:43:44 UTC 2008


Arnout Vandecappelle wrote:
>   Hoi,
> 
>  I need to get the network interface's MAC address from my application. 
> According to the Wiki (Obtaining_Interface_Information), this can be
> obtained by ioctl'ing for SIOCGIFADDR.  However, this gives the IP
> address (ether_ioctl does return the MAC address, but it never gets
> there as it is intercepted by in_control).  As far as I can see, there
> is no simple way to retrieve the MAC address from the application.  (You
> can get it from within the networking stack one you have the struct
> ifnet, like is done in the DHCP client, but this is not supposed to be
> accessible from the application.)
> 
>  Is there a way to retrieve it that I missed?

There is the sysctl interface which is used by net-snmp to provide details 
about an interface. Not a nice interface but it does work. What about the 
SIOCGIFCONF ioctl ? See cpukit/libnetworking/libc/getifaddrs.c for an example 
of its use. Look for the socket part of the code. Check 'ifconf' in 
cpukit/libnetworking/net/if.c.

Please update the Wiki if you get a solution.

>  Should I add a SIOCGIFHWADDR ioctl like in Linux?

We have a FreeBSD stack so you need to look at that operating system for a 
solution. It would not be a good idea to introduce Linux calls to this stack.

Regards
Chris



More information about the users mailing list