Split local MAC address query into separate function

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
diff --git a/inarp.c b/inarp.c
index b24a42f..9f41d7d 100644
--- a/inarp.c
+++ b/inarp.c
@@ -130,6 +130,24 @@
 	return 0;
 }
 
+static int get_local_hwaddr(int fd, const char *ifname, uint8_t *addr)
+{
+	struct ifreq ifreq;
+	int rc;
+
+	memset(&ifreq, 0, sizeof(ifreq));
+	strcpy(ifreq.ifr_name, ifname);
+
+	rc = ioctl(fd, SIOCGIFHWADDR, &ifreq);
+	if (rc) {
+		warn("Error querying local MAC address");
+		return -1;
+	}
+
+	memcpy(addr, ifreq.ifr_hwaddr.sa_data, ETH_ALEN);
+	return 0;
+}
+
 static void usage(const char *progname)
 {
 	fprintf(stderr, "Usage: %s <interface>\n", progname);
@@ -161,14 +179,10 @@
 	if (fd < 0)
 		err(EXIT_FAILURE, "Error opening ARP socket");
 
-	/* Query local mac address */
-	memset(&ifreq_buffer, 0x00, sizeof(ifreq_buffer));
-	strcpy(ifreq_buffer.ifr_name, ifname);
-	ret = ioctl(fd, SIOCGIFHWADDR, &ifreq_buffer);
-	if (ret < 0)
-		err(EXIT_FAILURE, "Error querying local MAC address");
+	ret = get_local_hwaddr(fd, ifname, src_mac);
+	if (ret)
+		exit(EXIT_FAILURE);
 
-	memcpy(src_mac, ifreq_buffer.ifr_hwaddr.sa_data, ETH_ALEN);
 	show_mac_addr(ifname, src_mac);
 
 	/* find the ifindex of the interface we're using */