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