Which file to request SIOCGIFMAC on?

Pietro Cerutti pietro.cerutti at gmail.com
Tue Feb 20 23:18:43 UTC 2007

On 2/20/07, nocturnal <nocturnal at swehack.se> wrote:
> Hi
> The original plan is to only run it on FreeBSD 5 and higher, actually
> only 6 by now. It's a program i'm writing for work and at work the most
> active servers run FreeBSD 6 and are updated frequently. The ones with
> older versions don't run anything of interest.
> I am buying a MacBook for personal use though so it would be nice to run
> it on osx. I wouldn't like to start using another library just to get
> the hardware address of an interface though, that seems kinda overkill
> for what should be a simple task. The program is already using libpcap
> but that is included in FreeBSD by default so you don't have to install it.
> Do you have any idea of why i'm getting this error from ioctl when i'm
> doing what the manual says i should do? I am of course running it as
> root to because the libpcap operations require it.
> What might help me is to take a look at the source of that
> libnet_get_hwaddr function in libnet. I'll try that, thank you very much
> for the tip.
> So far i've been trying to look at the source for ifconfig to figure out
> how it gets the hardware address. Of course it uses SIOCGIFMAC but i
> can't find the socket it opens because i can't find where it uses the
> maclabel_status function.

The problem isn't with the socket type or options.
If you debug ifconfig, you'll find out that the ioctl call always
returns -1, and the program goes on to the "goto mac_free" line.

Take a look at /usr/src/sys/net/if.c, line 1258

Should we deduce that the particular ioctl isn't supported?

P.S. I'm forwarding this to freebsd-hackers@ too, so sorry for cross posting

> Med vänliga hälsningar
> Stefan Midjich aka nocturnal
> [Swehack] http://swehack.se
> Chuck Swiger wrote:
> > On Feb 20, 2007, at 1:10 PM, nocturnal wrote:
> >> I'm trying to get the ethernet address and from the manuals i
> >> understand that i need the ifreq structure for this. So i'm trying to
> >> request SIOCGIFMAC with ioctl on a socket of type SOCK_DGRAM.
> >
> > If you're just targetting FreeBSD >= 5.x platforms, your current
> > approach is reasonable (assuming you can fix whatever the problem is);
> > if you're targetting other platforms such FreeBSD 4, Dfly, OS X, or SysV
> > things like Solaris, try installing the libnet port and invoke
> > libnet_get_hwaddr().
> >
> > ---Chuck
> >
> >
> >
> _______________________________________________

Pietro Cerutti

- ASCII Ribbon Campaign -
 against HTML e-mail and
 proprietary attachments

More information about the freebsd-questions mailing list