diff --git a/src/lua/bsdsocket.cc b/src/lua/bsdsocket.cc
index 27d33203d764ddc6f7041d306d8217fc1164d227..ebc9711f93ad6f87d567855db7194445863e057b 100644
--- a/src/lua/bsdsocket.cc
+++ b/src/lua/bsdsocket.cc
@@ -38,6 +38,8 @@
 #include <string.h>
 #include <stdlib.h>
 #include <arpa/inet.h>
+#include <netinet/ip.h>
+#include <netinet/in.h>
 #include <unistd.h>
 
 extern "C" {
@@ -291,7 +293,7 @@ static const struct { char name[32]; int value; } ai_flags[] = {
 #ifdef AI_IDN_ALLOW_UNASSIGNED
 	{"AI_IDN_ALLOW_UNASSIGNED",	AI_IDN_ALLOW_UNASSIGNED		},
 #endif
-#ifndef AI_IDN_USE_STD3_ASCII_RULES
+#ifdef AI_IDN_USE_STD3_ASCII_RULES
 	{"AI_IDN_USE_STD3_ASCII_RULES",	AI_IDN_USE_STD3_ASCII_RULES	},
 #endif
 #ifdef AI_NUMERICSERV
@@ -470,36 +472,57 @@ static int
 lbox_bsdsocket_push_family(struct lua_State *L, int family)
 {
 	switch(family) {
+#ifdef	AF_UNIX
 		case AF_UNIX:
 			lua_pushliteral(L, "AF_UNIX");
 			break;
+#endif
+#ifdef	AF_INET
 		case AF_INET:
 			lua_pushliteral(L, "AF_INET");
 			break;
+#endif
+#ifdef	AF_INET6
 		case AF_INET6:
 			lua_pushliteral(L, "AF_INET6");
 			break;
+#endif
+#ifdef	AF_IPX
 		case AF_IPX:
 			lua_pushliteral(L, "AF_IPX");
 			break;
+#endif
+#ifdef	AF_NETLINK
 		case AF_NETLINK:
 			lua_pushliteral(L, "AF_NETLINK");
 			break;
+#endif
+#ifdef AF_X25
 		case AF_X25:
 			lua_pushliteral(L, "AF_X25");
 			break;
+#endif
+#ifdef	AF_AX25
 		case AF_AX25:
 			lua_pushliteral(L, "AF_AX25");
 			break;
+#endif
+#ifdef	AF_ATMPVC
 		case AF_ATMPVC:
 			lua_pushliteral(L, "AF_ATMPVC");
 			break;
+#endif
+#ifdef	AF_APPLETALK
 		case AF_APPLETALK:
 			lua_pushliteral(L, "AF_APPLETALK");
 			break;
+#endif
+#ifdef	AF_PACKET
 		case AF_PACKET:
 			lua_pushliteral(L, "AF_PACKET");
 			break;
+#endif
+
 		default:
 			lua_pushinteger(L, family);
 			break;
@@ -527,24 +550,36 @@ lbox_bsdsocket_push_sotype(struct lua_State *L, int sotype)
 		sotype &= ~(SOCK_NONBLOCK | SOCK_CLOEXEC);
 	#endif
 	switch(sotype) {
+#ifdef SOCK_STREAM
 		case SOCK_STREAM:
 			lua_pushliteral(L, "SOCK_STREAM");
 			break;
+#endif
+#ifdef SOCK_DGRAM
 		case SOCK_DGRAM:
 			lua_pushliteral(L, "SOCK_DGRAM");
 			break;
+#endif
+#ifdef SOCK_SEQPACKET
 		case SOCK_SEQPACKET:
 			lua_pushliteral(L, "SOCK_SEQPACKET");
 			break;
+#endif
+#ifdef SOCK_RAW
 		case SOCK_RAW:
 			lua_pushliteral(L, "SOCK_RAW");
 			break;
+#endif
+#ifdef SOCK_RDM
 		case SOCK_RDM:
 			lua_pushliteral(L, "SOCK_RDM");
 			break;
+#endif
+#ifdef SOCK_PACKET
 		case SOCK_PACKET:
 			lua_pushliteral(L, "SOCK_PACKET");
 			break;
+#endif
 		default:
 			lua_pushinteger(L, sotype);
 			break;
@@ -563,8 +598,8 @@ lbox_bsdsocket_push_addr(struct lua_State *L,
 	lua_rawset(L, -3);
 
 	switch(addr->sa_family) {
-		case AF_INET:
-		case AF_INET6: {
+		case PF_INET:
+		case PF_INET6: {
 			char shost[NI_MAXHOST];
 			char sservice[NI_MAXSERV];
 			int rc = getnameinfo(addr,
@@ -587,7 +622,7 @@ lbox_bsdsocket_push_addr(struct lua_State *L,
 			break;
 		}
 
-		case AF_UNIX:
+		case PF_UNIX:
 			lua_pushliteral(L, "host");
 			lua_pushliteral(L, "unix/");
 			lua_rawset(L, -3);