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