Merge into master from pull request #203:
loci: fix byte swapping on OS X (https://github.com/floodlight/loxigen/pull/203)
diff --git a/c_gen/c_code_gen.py b/c_gen/c_code_gen.py
index 688578e..ff9a654 100644
--- a/c_gen/c_code_gen.py
+++ b/c_gen/c_code_gen.py
@@ -739,7 +739,7 @@
 
 #define OF_MATCH_BYTES(length) (((length) + 7) & 0xfff8)
 
-#if __BYTE_ORDER == __BIG_ENDIAN
+#if __BYTE_ORDER == __ORDER_BIG_ENDIAN
 #define U16_NTOH(val) (val)
 #define U32_NTOH(val) (val)
 #define U64_NTOH(val) (val)
@@ -749,7 +749,7 @@
 #define U64_HTON(val) (val)
 #define IPV6_HTON(dst, src) /* NOTE different syntax; currently no-op */
 #else /* Little Endian */
-#define U16_NTOH(val) (((val) >> 8) | ((val) << 8))
+#define U16_NTOH(val) (((val) >> 8) | (((val) & 0xff) << 8))
 #define U32_NTOH(val) ((((val) & 0xff000000) >> 24) |                   \\
                        (((val) & 0x00ff0000) >>  8) |                   \\
                        (((val) & 0x0000ff00) <<  8) |                   \\
diff --git a/c_gen/templates/_push_wire_types.c b/c_gen/templates/_push_wire_types.c
index 5b16e24..fd2536c 100644
--- a/c_gen/templates/_push_wire_types.c
+++ b/c_gen/templates/_push_wire_types.c
@@ -38,11 +38,11 @@
 :: if m.length == 1:
         *(uint8_t *)(buf + ${m.offset}) = ${m.value}; /* ${m.name} */
 :: elif m.length == 2:
-        *(uint16_t *)(buf + ${m.offset}) = htobe16(${m.value}); /* ${m.name} */
+        *(uint16_t *)(buf + ${m.offset}) = U16_HTON(${m.value}); /* ${m.name} */
 :: elif m.length == 4:
-        *(uint32_t *)(buf + ${m.offset}) = htobe32(${m.value}); /* ${m.name} */
+        *(uint32_t *)(buf + ${m.offset}) = U32_HTON(${m.value}); /* ${m.name} */
 :: elif m.length == 8:
-        *(uint64_t *)(buf + ${m.offset}) = htobe64(${m.value}); /* ${m.name} */
+        *(uint64_t *)(buf + ${m.offset}) = U64_HTON(${m.value}); /* ${m.name} */
 :: else:
 :: raise("unsupported push_wire_types length %d" % m.length)
 :: #endif