Use common function for ifreq ioctls

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
diff --git a/inarp.c b/inarp.c
index cd2ab40..931e7c0 100644
--- a/inarp.c
+++ b/inarp.c
@@ -104,16 +104,22 @@
 	return;
 }
 
+static int do_ifreq(int fd, unsigned long type,
+		const char *ifname, struct ifreq *ifreq)
+{
+	memset(ifreq, 0, sizeof(*ifreq));
+	strcpy(ifreq->ifr_name, ifname);
+
+	return ioctl(fd, type, ifreq);
+}
+
 static int get_local_ipaddr(int fd, const char *ifname, struct in_addr *addr)
 {
 	struct sockaddr_in *sa;
 	struct ifreq ifreq;
 	int rc;
 
-	memset(&ifreq, 0, sizeof(ifreq));
-	strcpy(ifreq.ifr_name, ifname);
-
-	rc = ioctl(fd, SIOCGIFADDR, &ifreq);
+	rc = do_ifreq(fd, SIOCGIFADDR, ifname, &ifreq);
 	if (rc) {
 		warn("Error querying local address for %s", ifname);
 		return -1;
@@ -135,10 +141,7 @@
 	struct ifreq ifreq;
 	int rc;
 
-	memset(&ifreq, 0, sizeof(ifreq));
-	strcpy(ifreq.ifr_name, ifname);
-
-	rc = ioctl(fd, SIOCGIFHWADDR, &ifreq);
+	rc = do_ifreq(fd, SIOCGIFHWADDR, ifname, &ifreq);
 	if (rc) {
 		warn("Error querying local MAC address");
 		return -1;
@@ -153,9 +156,7 @@
 	struct ifreq ifreq;
 	int rc;
 
-	memset(&ifreq, 0, sizeof(ifreq));
-	strcpy(ifreq.ifr_name, ifname);
-	rc = ioctl(fd, SIOCGIFINDEX, &ifreq);
+	rc = do_ifreq(fd, SIOCGIFINDEX, ifname, &ifreq);
 	if (rc < 0) {
 		warn("Error querying interface %s", ifname);
 		return -1;