Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Feb 2007 14:49:31 -0800
From:      Chuck Swiger <cswiger@mac.com>
To:        nocturnal <nocturnal@swehack.se>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Which file to request SIOCGIFMAC on?
Message-ID:  <B667583F-C54F-490D-9B20-F544992643CE@mac.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 Feb 20, 2007, at 2:33 PM, nocturnal wrote:
[ ...looking up one's MAC address... ]
> 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.

I don't think PCAP offers an easy way to get the MAC address of a  
given interface, short of capturing a packet sent from the host via  
that particular interface, and then figuring out the right offset to  
the source/sender MAC based on the datalink type header, which  
presumably will be DLT_EN10MB (14 bytes in size, IIRC).

> 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.

Nope, sorry.  I remember trying to make this go myself a while back,  
and decided that using the libnet call was much easier than figuring  
out why the SIOCGIFMAC ioctl wasn't working as expected...

> 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.

Well, you could always invoke and parse the output of ifconfig (or  
arp), but I can understand wanting to get the information directly  
without frobbing external programs.  :-)

-- 
-Chuck




Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?B667583F-C54F-490D-9B20-F544992643CE>