Add <linux/in.h> to <netinet/in.h>
diff --git a/include/endian.h b/include/endian.h
index 348d659..10dbbd8 100644
--- a/include/endian.h
+++ b/include/endian.h
@@ -7,9 +7,9 @@
#include <asm/byteorder.h>
-/* Linux' asm/byteorder.h defines either __LITTLE_ENDIAN or __BIG_ENDIAN,
- but the BSD-ish macros expect both to be defined with __BYTE_ORDER
- defining which is actually used... */
+/* Linux' asm/byteorder.h defines either __LITTLE_ENDIAN or
+ __BIG_ENDIAN, but the glibc/BSD-ish macros expect both to be
+ defined with __BYTE_ORDER defining which is actually used... */
#if defined(__LITTLE_ENDIAN)
# undef __LITTLE_ENDIAN
diff --git a/include/netinet/in.h b/include/netinet/in.h
index 4b7e77e..d2c2320 100644
--- a/include/netinet/in.h
+++ b/include/netinet/in.h
@@ -6,7 +6,8 @@
#define _NETINET_IN_H
#include <stdint.h>
-#include <endian.h>
+#include <endian.h> /* Must be included *before* <linux/in.h> */
+#include <linux/in.h>
#define htons(x) __cpu_to_be16(x)
#define ntohs(x) __be16_to_cpu(x)
diff --git a/klibc/include/endian.h b/klibc/include/endian.h
index 348d659..10dbbd8 100644
--- a/klibc/include/endian.h
+++ b/klibc/include/endian.h
@@ -7,9 +7,9 @@
#include <asm/byteorder.h>
-/* Linux' asm/byteorder.h defines either __LITTLE_ENDIAN or __BIG_ENDIAN,
- but the BSD-ish macros expect both to be defined with __BYTE_ORDER
- defining which is actually used... */
+/* Linux' asm/byteorder.h defines either __LITTLE_ENDIAN or
+ __BIG_ENDIAN, but the glibc/BSD-ish macros expect both to be
+ defined with __BYTE_ORDER defining which is actually used... */
#if defined(__LITTLE_ENDIAN)
# undef __LITTLE_ENDIAN
diff --git a/klibc/include/netinet/in.h b/klibc/include/netinet/in.h
index 4b7e77e..d2c2320 100644
--- a/klibc/include/netinet/in.h
+++ b/klibc/include/netinet/in.h
@@ -6,7 +6,8 @@
#define _NETINET_IN_H
#include <stdint.h>
-#include <endian.h>
+#include <endian.h> /* Must be included *before* <linux/in.h> */
+#include <linux/in.h>
#define htons(x) __cpu_to_be16(x)
#define ntohs(x) __be16_to_cpu(x)