version 1.4, 2013/10/21 21:12:42
|
version 1.4.16.1, 2013/12/04 10:08:41
|
Line 68 io_get1stiface(char *szIface, int iflen)
|
Line 68 io_get1stiface(char *szIface, int iflen)
|
} |
} |
|
|
/* |
/* |
|
* io_getmaciface() - Get MAC address from interface name |
|
* |
|
* @csIface = interface name |
|
* @ea = ethernet address |
|
* return: -1 error, 0 ok or 1 not found |
|
*/ |
|
int |
|
io_getmaciface(const char *csIface, ether_addr_t * __restrict ea) |
|
{ |
|
struct ifaddrs *ifa, *ifp; |
|
struct sockaddr_dl *dl; |
|
int ret = 1; |
|
|
|
if (!csIface || !ea) |
|
return -1; |
|
else |
|
memset(ea, 0, sizeof(ether_addr_t)); |
|
|
|
getifaddrs(&ifa); |
|
for (ifp = ifa; ifp; ifp = ifp->ifa_next) |
|
if (!strcmp(csIface, ifp->ifa_name) && ifp->ifa_addr && |
|
ifp->ifa_addr->sa_family == AF_LINK) { |
|
dl = (struct sockaddr_dl*) ifp->ifa_addr; |
|
if ((dl->sdl_type == IFT_ETHER || dl->sdl_type == IFT_L2VLAN || |
|
dl->sdl_type == IFT_BRIDGE) && |
|
dl->sdl_alen == ETHER_ADDR_LEN) { |
|
memcpy(ea, LLADDR(dl), sizeof(ether_addr_t)); |
|
ret = 0; |
|
break; |
|
} |
|
} |
|
freeifaddrs(ifa); |
|
|
|
return ret; |
|
} |
|
|
|
/* |
* io_etherClose() - Close BPF interface |
* io_etherClose() - Close BPF interface |
* |
* |
* @eth = bpf handle |
* @eth = bpf handle |