diff --git a/inarp.c b/inarp.c
index f24fb4a..31f7b51 100644
--- a/inarp.c
+++ b/inarp.c
@@ -46,11 +46,16 @@
 	struct in_addr	dest_ip;
 } __attribute__((packed));
 
-struct inarp_ctx {
-	int		socket;
-	const char	*ifname;
+struct interface {
 	int		ifindex;
-	struct eth_addr	local_mac;
+	char		ifname[IFNAMSIZ+1];
+	struct eth_addr	eth_addr;
+};
+
+struct inarp_ctx {
+	int			socket;
+	struct interface	*interfaces;
+	unsigned int		n_interfaces;
 };
 
 static int send_arp_packet(int fd,
@@ -189,6 +194,7 @@
 	struct arp_packet inarp_req;
 	struct in_addr local_ip;
 	struct inarp_ctx inarp;
+	struct interface *iface;
 	ssize_t len;
 	int ret;
 
@@ -197,27 +203,33 @@
 		return EXIT_FAILURE;
 	}
 
-	memset(&inarp, 0, sizeof(inarp));
-	inarp.ifname = argv[1];
-
-	if (strlen(inarp.ifname) > IFNAMSIZ)
+	if (strlen(argv[1]) > IFNAMSIZ)
 		errx(EXIT_FAILURE, "Interface name '%s' is invalid",
-				inarp.ifname);
+				argv[1]);
+
+	memset(&inarp, 0, sizeof(inarp));
+
+	/* prepare for a single interface */
+	inarp.interfaces = calloc(1, sizeof(inarp.interfaces[0]));
+	inarp.n_interfaces = 1;
+	iface = &inarp.interfaces[0];
+
+	strncpy(iface->ifname, argv[1], sizeof(iface->ifname));
 
 	inarp.socket = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ARP));
 	if (inarp.socket < 0)
 		err(EXIT_FAILURE, "Error opening ARP socket");
 
-	ret = get_ifindex(inarp.socket, inarp.ifname, &inarp.ifindex);
+	ret = get_ifindex(inarp.socket, iface->ifname, &iface->ifindex);
 	if (ret)
 		exit(EXIT_FAILURE);
 
-	ret = get_local_hwaddr(inarp.socket, inarp.ifname, &inarp.local_mac);
+	ret = get_local_hwaddr(inarp.socket, iface->ifname, &iface->eth_addr);
 	if (ret)
 		exit(EXIT_FAILURE);
 
-	printf("%s MAC address: %s\n", inarp.ifname,
-			eth_mac_to_str(&inarp.local_mac));
+	printf("%s MAC address: %s\n", iface->ifname,
+			eth_mac_to_str(&iface->eth_addr));
 
 	while (1) {
 		len = recvfrom(inarp.socket, &inarp_req, sizeof(inarp_req), 0,
@@ -237,13 +249,13 @@
 			continue;
 
 		/* ... for us? */
-		if (memcmp(&inarp.local_mac, inarp_req.eh.h_dest, ETH_ALEN))
+		if (memcmp(&iface->eth_addr, inarp_req.eh.h_dest, ETH_ALEN))
 			continue;
 
 		printf("src mac:  %s\n", eth_mac_to_str(&inarp_req.src_mac));
 		printf("src ip:   %s\n", inet_ntoa(inarp_req.src_ip));
 
-		ret = get_local_ipaddr(inarp.socket, inarp.ifname, &local_ip);
+		ret = get_local_ipaddr(inarp.socket, iface->ifname, &local_ip);
 		/* if we don't have a local IP address to send, just drop the
 		 * request */
 		if (ret)
@@ -251,7 +263,7 @@
 
 		printf("local ip: %s\n", inet_ntoa(local_ip));
 
-		send_arp_packet(inarp.socket, inarp.ifindex,
+		send_arp_packet(inarp.socket, iface->ifindex,
 				&inarp_req.dest_mac,
 				&local_ip,
 				&inarp_req.src_mac,
