diff --git a/configure.in b/configure.in
index e327ea7616ffac5a5ab0ff8565cada4ce8068c97..cdafb9919da482c9551e925729aceb6b15ea62fd 100644
--- a/configure.in
+++ b/configure.in
@@ -206,7 +206,7 @@ AC_ARG_ENABLE(shadow,
 # Checks for header files.
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([fcntl.h limits.h netinet/in.h netinet/tcp.h stdlib.h string.h sys/socket.h sys/time.h termios.h unistd.h crypt.h pty.h ioctl.h libutil.h libgen.h inttypes.h stropts.h utmp.h utmpx.h lastlog.h paths.h util.h netdb.h security/pam_appl.h pam/pam_appl.h])
+AC_CHECK_HEADERS([fcntl.h limits.h netinet/in.h netinet/tcp.h stdlib.h string.h sys/socket.h sys/time.h termios.h unistd.h crypt.h pty.h ioctl.h libutil.h libgen.h inttypes.h stropts.h utmp.h utmpx.h lastlog.h paths.h util.h netdb.h security/pam_appl.h pam/pam_appl.h netinet/in_systm.h])
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
diff --git a/includes.h b/includes.h
index ceea16017b15d6fbafea76b5aebd1f7c08a874e9..02e88774717b3b5bb1157dd69db33cb10c159250 100644
--- a/includes.h
+++ b/includes.h
@@ -44,8 +44,6 @@
 #include <fcntl.h>
 #include <grp.h>
 #include <limits.h>
-#include <netinet/in.h>
-#include <netinet/ip.h>
 #include <pwd.h>
 #include <signal.h>
 #include <stdlib.h>
@@ -58,8 +56,6 @@
 #include <stdarg.h>
 #include <dirent.h>
 
-#include <arpa/inet.h>
-
 #ifdef HAVE_UTMP_H
 #include <utmp.h>
 #endif
@@ -76,10 +72,20 @@
 #include <lastlog.h>
 #endif
 
+#include <arpa/inet.h>
+
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 
+/* netbsd 1.6 needs this to be included before netinet/ip.h for some
+ * undocumented reason */
+#ifdef HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+
+#include <netinet/ip.h>
+
 #ifdef HAVE_NETINET_TCP_H
 #include <netinet/tcp.h>
 #endif