Although this patch fixes the most important problems, there are still
some incompatibilities when big-endian machines communicate with
little-endian ones. Big to big communication works correctly.
#ifndef FORB_ENDIAN_H
#define FORB_ENDIAN_H 1
+#include <endian.h>
+#ifdef __BYTE_ORDER
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define WORDS_BIGENDIAN 1
+#endif
+#endif
+
+
#define FLAG_BIG_ENDIAN 0
#define FLAG_LITTLE_ENDIAN 1
inet_serialize_addr(FORB_CDR_Codec *codec, const void *addr)
{
const struct inet_addr *a = addr;
- return CORBA_long_serialize(codec, &a->addr.s_addr);
+ CORBA_long haddr = ntohl(a->addr.s_addr);
+ return CORBA_long_serialize(codec, &haddr);
}
static CORBA_boolean
if (!a)
return CORBA_FALSE;
ret = CORBA_long_deserialize(codec, &s_addr);
- a->addr.s_addr = s_addr;
+ a->addr.s_addr = htonl(s_addr);
*addr = a;
return ret;
}