Index: sys/netinet/if_ether.c
===================================================================
--- sys/netinet/if_ether.c	(revision 249776)
+++ sys/netinet/if_ether.c	(working copy)
@@ -50,6 +50,7 @@
 #include <sys/proc.h>
 #include <sys/socket.h>
 #include <sys/syslog.h>
+#include <sys/systm.h>
 
 #include <net/if.h>
 #include <net/if_dl.h>
@@ -122,6 +123,11 @@
 	&VNET_NAME(arp_maxhold), 0,
 	"Number of packets to hold per ARP entry");
 
+static int log_arp_no_iface = 1;
+SYSCTL_INT(_net_link_ether_inet, OID_AUTO, log_arp_no_iface, CTLFLAG_RW,
+		   &log_arp_no_iface, 0,
+		   "log arp requests with no corresponding interface");
+
 static void	arp_init(void);
 static void	arpintr(struct mbuf *);
 static void	arptimer(void *);
@@ -250,7 +256,13 @@
 		}
 		IF_ADDR_RUNLOCK(ifp);
 		if (sip == NULL) {
-			printf("%s: cannot find matching address\n", __func__);
+			if (log_arp_no_iface) {
+				KASSERT(false, ("%s: cannot find matching address for "
+								"%s on %s\n", __func__, inet_ntoa(*tip),
+								if_name(ifp)));
+				log(LOG_ERR, "%s: cannot find matching address for "
+					"%s on %s\n", __func__, inet_ntoa(*tip), if_name(ifp));
+			}
 			return;
 		}
 	}
