--- /dev/null
+diff -Nur dsniff-2.3.orig/arp.c dsniff-2.3/arp.c
+--- dsniff-2.3.orig/arp.c 2000-11-14 16:51:03.000000000 +0100
++++ dsniff-2.3/arp.c 2005-09-12 16:13:44.101915800 +0200
+@@ -37,7 +37,7 @@
+ #ifdef BSD
+
+ int
+-arp_cache_lookup(in_addr_t ip, struct ether_addr *ether)
++arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char* linf)
+ {
+ int mib[6];
+ size_t len;
+@@ -89,7 +89,7 @@
+ #endif
+
+ int
+-arp_cache_lookup(in_addr_t ip, struct ether_addr *ether)
++arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char* lif)
+ {
+ int sock;
+ struct arpreq ar;
+@@ -97,7 +97,7 @@
+
+ memset((char *)&ar, 0, sizeof(ar));
+ #ifdef __linux__
+- strncpy(ar.arp_dev, "eth0", sizeof(ar.arp_dev)); /* XXX - *sigh* */
++ strncpy(ar.arp_dev, lif, strlen(lif));
+ #endif
+ sin = (struct sockaddr_in *)&ar.arp_pa;
+ sin->sin_family = AF_INET;
+diff -Nur dsniff-2.3.orig/arpspoof.c dsniff-2.3/arpspoof.c
+--- dsniff-2.3.orig/arpspoof.c 2000-11-28 08:43:43.000000000 +0100
++++ dsniff-2.3/arpspoof.c 2005-09-12 16:16:49.244769808 +0200
+@@ -23,7 +23,7 @@
+ #include "version.h"
+
+ extern char *ether_ntoa(struct ether_addr *);
+-extern int arp_cache_lookup(in_addr_t, struct ether_addr *);
++extern int arp_cache_lookup(in_addr_t, struct ether_addr *, const char* intf);
+
+ static struct libnet_link_int *llif;
+ static struct ether_addr spoof_mac, target_mac;
+@@ -111,7 +111,7 @@
+ int i = 0;
+
+ do {
+- if (arp_cache_lookup(ip, mac) == 0)
++ if (arp_cache_lookup(ip, mac, intf) == 0)
+ return (1);
+ #ifdef __linux__
+ /* XXX - force the kernel to arp. feh. */