--- sim_ether.c.orig Fri Mar 30 16:30:26 2012 +++ sim_ether.c Wed Jun 13 06:47:21 2012 @@ -1750,14 +1750,19 @@ strcpy(dev->name, savname); dev->dptr = dptr; dev->dbit = dbit; -#if !defined(HAS_PCAP_SENDPACKET) && defined (xBSD) && !defined (__APPLE__) +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) /* Tell the kernel that the header is fully-formed when it gets it. This is required in order to fake the src address. */ if (dev->eth_api == ETH_API_PCAP) { int one = 1; ioctl(pcap_fileno(dev->handle), BIOCSHDRCMPLT, &one); +#ifdef __OpenBSD__ + /* set direction filter */ + one = BPF_DIRECTION_OUT; + ioctl(pcap_fileno(dev->handle), BIOCSDIRFILT, &one); +#endif /* __OpenBSD__ */ } -#endif /* xBSD */ +#endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ */ #if defined (USE_READER_THREAD) if (1) {