-improve byteorder macro checks for FreeBSD
authorChristian Grothoff <christian@grothoff.org>
Mon, 30 Jan 2012 21:32:10 +0000 (21:32 +0000)
committerChristian Grothoff <christian@grothoff.org>
Mon, 30 Jan 2012 21:32:10 +0000 (21:32 +0000)
src/include/gnunet_tun_lib.h
src/util/common_endian.c

index 5bac236d97c8ca446abbc40062b1941325baeb67..f11a3af3e4b6ed2fe63831e40a188aa25b78a70c 100644 (file)
@@ -70,12 +70,14 @@ struct GNUNET_TUN_Layer2PacketHeader
  */
 struct GNUNET_TUN_IPv4Header
 {
-#if __BYTE_ORDER == __LITTLE_ENDIAN       
+#if __BYTE_ORDER == __LITTLE_ENDIAN || _BYTE_ORDER == _LITTLE_ENDIAN
   unsigned int header_length:4 GNUNET_PACKED;
   unsigned int version:4 GNUNET_PACKED;
-#elif __BYTE_ORDER == __BIG_ENDIAN
+#elif __BYTE_ORDER == __BIG_ENDIAN || _BYTE_ORDER == _BIG_ENDIAN
   unsigned int version:4 GNUNET_PACKED;
   unsigned int header_length:4 GNUNET_PACKED;
+#else
+  #error byteorder undefined
 #endif
   uint8_t diff_serv;
 
@@ -125,15 +127,17 @@ struct GNUNET_TUN_IPv4Header
  */
 struct GNUNET_TUN_IPv6Header
 {
-#if __BYTE_ORDER == __LITTLE_ENDIAN 
+#if __BYTE_ORDER == __LITTLE_ENDIAN  || _BYTE_ORDER == _LITTLE_ENDIAN
   unsigned int traffic_class_h:4 GNUNET_PACKED;
   unsigned int version:4 GNUNET_PACKED;
   unsigned int traffic_class_l:4 GNUNET_PACKED;
   unsigned int flow_label:20 GNUNET_PACKED;
-#elif __BYTE_ORDER == __BIG_ENDIAN
+#elif __BYTE_ORDER == __BIG_ENDIAN || _BYTE_ORDER == _BIG_ENDIAN
   unsigned int version:4 GNUNET_PACKED;
   unsigned int traffic_class:8 GNUNET_PACKED;
   unsigned int flow_label:20 GNUNET_PACKED;
+#else
+  #error byteorder undefined
 #endif
   /**
    * Length of the payload, excluding this header.
index 56aa7b0c4eca578b9ba40621fa6727ec289845d7..1867ba01d90a45f1c026c3ec266624b0b03c04f9 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2001, 2002, 2003, 2004, 2006 Christian Grothoff (and other contributing authors)
+     (C) 2001, 2002, 2003, 2004, 2006, 2012 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 uint64_t
 GNUNET_ntohll (uint64_t n)
 {
-#if __BYTE_ORDER == __BIG_ENDIAN
+#if __BYTE_ORDER == __BIG_ENDIAN || _BYTE_ORDER == _BIG_ENDIAN
   return n;
-#else
+#elif __BYTE_ORDER == __LITTLE_ENDIAN  || _BYTE_ORDER == _LITTLE_ENDIAN
   return (((uint64_t) ntohl (n)) << 32) + ntohl (n >> 32);
+#else
+  #error byteorder undefined
 #endif
 }
 
 uint64_t
 GNUNET_htonll (uint64_t n)
 {
-#if __BYTE_ORDER == __BIG_ENDIAN
+#if __BYTE_ORDER == __BIG_ENDIAN || _BYTE_ORDER == _BIG_ENDIAN
   return n;
-#else
+#elif __BYTE_ORDER == __LITTLE_ENDIAN  || _BYTE_ORDER == _LITTLE_ENDIAN
   return (((uint64_t) htonl (n)) << 32) + htonl (n >> 32);
+#else
+  #error byteorder undefined
 #endif
 }