tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Retrieving MAC address from struct ifnet



On Sun, Jun 08, 2025 at 04:00:22PM +0200, Beesdeckar wrote:
> 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

If you just want the string, call getnameinfo(3) on it, like:

	char name[40];
	getnameinfo(ifa, ifa->ifa_addr->sa_len, name, sizeof name,
	    NULL, 0, NI_NUMERICHOST);

or if you want the binary representation:

	#include <net/if_dl.h>

	unsigned char dladdr[ETHER_ADDR_LEN];
	const struct sockaddr_dl *sdl = \
	    (const struct sockaddr_dl*)ifa->ifa_addr;
	memcpy(dladdr, CLLADDR(sdl), ETHER_ADDR_LEN);


Martin


Home | Main Index | Thread Index | Old Index