diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2013-03-10 14:49:21 +0100 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2013-03-10 14:49:49 +0100 |
commit | 4860a84c768f1b85ec3b45e020a1d550b448ccae (patch) | |
tree | 992459912ad4cbbe91fecd65a7f341b4ac96445f /util.c | |
parent | 3abd448fd6d9171515a4951cc6a629b0ff83ddd4 (diff) | |
download | econ-4860a84c768f1b85ec3b45e020a1d550b448ccae.tar.gz econ-4860a84c768f1b85ec3b45e020a1d550b448ccae.tar.bz2 econ-4860a84c768f1b85ec3b45e020a1d550b448ccae.zip |
util: Add sock_get_hwaddr
And use it in econserv, instead of the hardcoded lookup for tap0.
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -72,6 +72,23 @@ sock_get_netmask(int fd) return ((struct sockaddr_in *) &ifreq->ifr_netmask)->sin_addr.s_addr; } +uint8_t * +sock_get_hwaddr(int fd) +{ + struct ifreq *ifreq; + + ifreq = sock_get_ifreq(fd); + if (ifreq == NULL) + return NULL; + + if (ioctl(fd, SIOCGIFHWADDR, ifreq) < 0) + return NULL; + if (ifreq->ifr_hwaddr.sa_family != ARPHRD_ETHER) + return NULL; + + return (uint8_t *) &ifreq->ifr_hwaddr.sa_data[0]; +} + uint32_t sock_get_peer_ipv4_addr(int fd) { |