byteorder: Always define be64toh/htobe64 macros
authorTobias Brunner <tobias@strongswan.org>
Fri, 4 Mar 2016 09:13:49 +0000 (10:13 +0100)
committerTobias Brunner <tobias@strongswan.org>
Fri, 4 Mar 2016 17:43:26 +0000 (18:43 +0100)
src/libstrongswan/utils/utils/byteorder.h

index 68a7b33..53ec177 100644 (file)
 #define BITFIELD5(t, a, b, c, d, e,...)        struct { t e; t d; t c; t b; t a; __VA_ARGS__}
 #endif
 
+#ifndef le32toh
+# if BYTE_ORDER == BIG_ENDIAN
+#  define le32toh(x) __builtin_bswap32(x)
+#  define htole32(x) __builtin_bswap32(x)
+# else
+#  define le32toh(x) (x)
+#  define htole32(x) (x)
+# endif
+#endif
+
+#ifndef le64toh
+# if BYTE_ORDER == BIG_ENDIAN
+#  define le64toh(x) __builtin_bswap64(x)
+#  define htole64(x) __builtin_bswap64(x)
+# else
+#  define le64toh(x) (x)
+#  define htole64(x) (x)
+# endif
+#endif
+
+#ifndef be64toh
+# if BYTE_ORDER == BIG_ENDIAN
+#  define be64toh(x) (x)
+#  define htobe64(x) (x)
+# else
+#  define be64toh(x) __builtin_bswap64(x)
+#  define htobe64(x) __builtin_bswap64(x)
+# endif
+#endif
+
 /**
  * Write a 16-bit host order value in network order to an unaligned address.
  *
@@ -158,26 +188,6 @@ static inline u_int64_t untoh64(void *network)
 #endif
 }
 
-#ifndef le32toh
-# if BYTE_ORDER == BIG_ENDIAN
-#  define le32toh(x) __builtin_bswap32(x)
-#  define htole32(x) __builtin_bswap32(x)
-# else
-#  define le32toh(x) (x)
-#  define htole32(x) (x)
-# endif
-#endif
-
-#ifndef le64toh
-# if BYTE_ORDER == BIG_ENDIAN
-#  define le64toh(x) __builtin_bswap64(x)
-#  define htole64(x) __builtin_bswap64(x)
-# else
-#  define le64toh(x) (x)
-#  define htole64(x) (x)
-# endif
-#endif
-
 /**
  * Read a 32-bit value in little-endian order from unaligned address.
  *