Date: Wed, 21 Feb 2007 00:18:41 +0100 From: "Pietro Cerutti" <pietro.cerutti@gmail.com> To: nocturnal <nocturnal@swehack.se> Cc: freebsd-hackers@freebsd.org, Chuck Swiger <cswiger@mac.com>, freebsd-questions@freebsd.org Subject: Re: Which file to request SIOCGIFMAC on? Message-ID: <e572718c0702201518i67ab5289pc24592625a9ec6d4@mail.gmail.com> In-Reply-To: <45DB7751.3010401@swehack.se> References: <45DB63B1.7050004@swehack.se> <AEC2C499-DC40-495A-9672-24BC2AA2CD0F@mac.com> <45DB7751.3010401@swehack.se>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2/20/07, nocturnal <nocturnal@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 www.asciiribbon.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e572718c0702201518i67ab5289pc24592625a9ec6d4>
