getting interface MAC addr from C

Robert Watson rwatson at FreeBSD.org
Fri Aug 4 12:43:58 UTC 2006


On Fri, 4 Aug 2006, Mario Lobo wrote:

> Would anyone have a tip on how to get the MAC from a C program?
>
> I tried:
>
>    struct ifreq ifreq;
>    unsigned char *hw;
>
>    strcpy(ifreq.ifr_name, "rl0");
>    ioctl(fd, SIOCGIFMAC, &ifreq);
>    hw = ifreq.ifr_ifru.ifru_data; ????
>
> but i don't know if this is right or, if it is, where to get the MAC from 
> the structure. I doesn't issue any error compiling or running though.

Usually the general purpose interface recommended for inspecting interface 
information is getifaddrs(), which will build a userspace list of interfaces 
and their various addresses, including link-layer addresses.  Something like 
the above will work, but may not be preferred.

Robert N M Watson
Computer Laboratory
University of Cambridge

>
> In linux i used:
>
>    struct ifreq ifreq;
>    unsigned char *hw;
>
>    strcpy(ifreq.ifr_name, "rl0");
>    ioctl(fd, SIOCGIFHWADDR, &ifreq);
>    hw = ifreq.ifr_hwaddr.sa_data;
>
> Thanks,
>
> Mario
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>


More information about the freebsd-hackers mailing list