Index: network/net.c
--- network/net.c.orig
+++ network/net.c
@@ -81,7 +81,9 @@ unsigned GetTickCount()
 #include <sys/kern_control.h>
 #include <net/if.h>
 #include <net/if_utun.h>
-#else
+#elif defined(__OpenBSD__)
+#include <net/if.h>
+#elif defined(__linux__)
 #include <linux/if.h>
 #include <linux/if_tun.h>
 #include <linux/if_ether.h>	/* struct ethhdr */
@@ -553,13 +555,13 @@ static int np2net_openTAP(const char* tapname){
 	np2net_hThreadW = (HANDLE)_beginthreadex(NULL , 0 , np2net_ThreadFuncW , NULL , 0 , &dwID);
 #else
 	struct ifreq ifr;
-#if defined(__APPLE__)
+#if defined(__APPLE__) || defined(__OpenBSD__)
 	np2net_hTap = open("/dev/tap0", O_RDWR);
 #else
 	np2net_hTap = open("/dev/net/tun", O_RDWR);
 #endif
 	if(np2net_hTap < 0){
-#if defined(__APPLE__)
+#if defined(__APPLE__) || defined(__OpenBSD__)
 		TRACEOUT(("LGY-98: Failed to open [%s]", "/dev/tap0"));
 #else
 		TRACEOUT(("LGY-98: Failed to open [%s]", "/dev/net/tun"));
@@ -568,7 +570,7 @@ static int np2net_openTAP(const char* tapname){
 	}
 	memset(&ifr, 0, sizeof(ifr));
 
-#if defined(__APPLE__)
+#if defined(__APPLE__) || defined(__OpenBSD__)
 	strcpy(ifr.ifr_name, "tap%d");
 #else
 	ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
