Add device_hw_address func to get device's MAC address. Signed-off-by: Vadim Kochan <vadi...@gmail.com> --- dev.c | 23 +++++++++++++++++++++++ dev.h | 1 + 2 files changed, 24 insertions(+)
diff --git a/dev.c b/dev.c index cf8d643..ad7b917 100644 --- a/dev.c +++ b/dev.c @@ -124,6 +124,29 @@ int device_address(const char *ifname, int af, struct sockaddr_storage *ss) return ret; } +int device_hw_address(const char *ifname, uint8_t *addr) +{ + int ret, sock; + struct ifreq ifr; + + if (unlikely(!addr)) + return -EINVAL; + if (!strncmp("any", ifname, strlen("any"))) + return -EINVAL; + + sock = af_socket(AF_INET); + + memset(&ifr, 0, sizeof(ifr)); + strlcpy(ifr.ifr_name, ifname, IFNAMSIZ); + + ret = ioctl(sock, SIOCGIFHWADDR, &ifr); + if (likely(!ret)) + memcpy(addr, &ifr.ifr_hwaddr.sa_data[0], IFHWADDRLEN); + + close(sock); + return ret; +} + size_t device_mtu(const char *ifname) { size_t mtu = 0; diff --git a/dev.h b/dev.h index a9e4ccf..077e08f 100644 --- a/dev.h +++ b/dev.h @@ -7,6 +7,7 @@ extern size_t device_mtu(const char *ifname); extern int device_address(const char *ifname, int af, struct sockaddr_storage *ss); extern int __device_ifindex(const char *ifname); +extern int device_hw_address(const char *ifname, uint8_t *addr); extern int device_ifindex(const char *ifname); extern int device_type(const char *ifname); extern short device_get_flags(const char *ifname); -- 2.6.3 -- You received this message because you are subscribed to the Google Groups "netsniff-ng" group. To unsubscribe from this group and stop receiving emails from it, send an email to netsniff-ng+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.