summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2013-03-10 14:49:21 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-03-10 14:49:49 +0100
commit4860a84c768f1b85ec3b45e020a1d550b448ccae (patch)
tree992459912ad4cbbe91fecd65a7f341b4ac96445f /util.c
parent3abd448fd6d9171515a4951cc6a629b0ff83ddd4 (diff)
downloadecon-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.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/util.c b/util.c
index dc89a48..8a5813f 100644
--- a/util.c
+++ b/util.c
@@ -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)
{