try the following diff.
--- src/libnet_link_bpf.c.orig Mon Jan 8 03:13:48 2001 +++ src/libnet_link_bpf.c Fri Nov 7 12:08:38 2008 @@ -250,6 +250,7 @@ char *buf, *next, *end; struct if_msghdr *ifm; struct sockaddr_dl *sdl; + struct sockaddr *sa; struct ether_addr *ea = NULL; mib[0] = CTL_NET; @@ -280,7 +281,10 @@ ifm = (struct if_msghdr *)next; if (ifm->ifm_type == RTM_IFINFO) { - sdl = (struct sockaddr_dl *)(ifm + 1); + sa = (struct sockaddr *)(ifm + 1); + if (sa->sa_family != AF_LINK) + continue; + sdl = (struct sockaddr_dl *)sa; if (strncmp(&sdl->sdl_data[0], device, sdl->sdl_nlen) == 0) { if (!(ea = malloc(sizeof(struct ether_addr))))