tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Retrieving MAC address from struct ifnet
> I am trying to read MAC address of network interface in kernel from
> member of struct ifnet: [...]
> When I try to cycle through interfaces and I read first member of
> if_hwdl (struct sockaddr *ifa_addr) the result for ethernet is:
> sa_family: 18, sa_len: 17,
> sa_data: 01 00 06 03 06 00 77 6D 30 F0 DE F1 8F AD EB 00 00
That looks reasonable. Family AF_LINK, length 17:
sdl_index = 1 (if you're on a LE CPU) or 256 (if BE)
sdl_type = 6 = IFT_ETHER
sdl_nlen = 3
sdl_alen = 6 (as expected for IFT_ETHER)
sdl_slen = 0
sdl_data:
77 6d 30 = ASCII for "wm0" (sdl_nlen octets long)
f0 de f1 8f ad eb = MAC of wm0
00 00 = memory beyond the end of the struct sockaddr_dl
(I suspect you're treating sa_len as the length of
sa_data, whereas it's actually the length of the whole
sockaddr, including sa_len and sa_family.)
> and the result for wireless is:
> sa_family: 18, sa_len: 18,
> sa_data: 02 00 06 04 06 00 69 77 6E 30 08 11 96 52 DA 90 00 00
This one is AF_LINK, length 18:
sdl_index = 2 (LE) or 512 (BE)
sdl_type = 6 (IFT_ETHER)
sdl_nlen = 4
sdl_alen = 6 (as expected for IFT_ETHER)
sdl_slen = 0
sdl_data:
69 77 6E 30 = ASCII for iwn0 (sdl_nlen octets long)
08 11 96 52 da 90 00 00 = MAC of iwn0
00 00 = memory beyond end, as above
> How can I reliably retrieve index of first byte of these MAC
> addresses ?
It begins sdl_nlen octets into sdl_data. (I'm not aware of anywhere
this is documented except the code, but it's entirely possible there's
something I just haven't seen.)
In the versions I use, there's a macro, LLADDR, which takes a struct
sockaddr_dl * and returns a pointer to the first octet of its
link-layer address. It returns char * (IMO it should be unsigned char
*, but they didn't ask me). There's also CLLADDR, which is the same
except it returns a const char * instead of a char *. I can't easily
check -current, because HTTP access to cvsweb has been broken; it now
insists on trying to ram HTTPS down my throat.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Home |
Main Index |
Thread Index |
Old Index