version 1.6, 2014/02/08 22:06:17
|
version 1.7, 2015/01/19 23:32:30
|
Line 47 SUCH DAMAGE.
|
Line 47 SUCH DAMAGE.
|
|
|
|
|
/* |
/* |
* io_get1stiface() - Get first interface of host |
|
* |
|
* @szIface = interface string buffer |
|
* @iflen = size of interface buffer |
|
* return: -1 error or 0 ok |
|
*/ |
|
int |
|
io_get1stiface(char *szIface, int iflen) |
|
{ |
|
struct ifaddrs *ifa; |
|
|
|
if (!szIface || !iflen) |
|
return -1; |
|
|
|
getifaddrs(&ifa); |
|
strlcpy(szIface, ifa->ifa_name, iflen); |
|
freeifaddrs(ifa); |
|
return 0; |
|
} |
|
|
|
/* |
|
* 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 |
Line 208 io_etherOpen(const char *csIface, int flags, u_int whd
|
Line 150 io_etherOpen(const char *csIface, int flags, u_int whd
|
|
|
if (csIface) |
if (csIface) |
strlcpy(szStr, csIface, sizeof szStr); |
strlcpy(szStr, csIface, sizeof szStr); |
else if (io_get1stiface(szStr, sizeof szStr) == -1) { | else if (e_get1stiface(szStr, sizeof szStr) == -1) { |
close(eth); |
close(eth); |
return -1; |
return -1; |
} |
} |