#define NFTABLES_GMPUTIL_H
#include <gmp.h>
+#include <asm/byteorder.h>
enum mpz_word_order {
MPZ_MSWF = 1,
MPZ_LSWF = -1,
};
+#ifdef __LITTLE_ENDIAN_BITFIELD
+#define MPZ_HWO MPZ_LSWF
+#elif defined(__BIG_ENDIAN_BITFIELD)
+#define MPZ_HWO MPZ_MSWF
+#else
+#error "byteorder undefined"
+#endif
+
enum mpz_byte_order {
MPZ_BIG_ENDIAN = 1,
MPZ_HOST_ENDIAN = 0,
enum byteorder byteorder,
unsigned int len)
{
+ enum mpz_word_order order;
enum mpz_byte_order endian;
switch (byteorder) {
case BYTEORDER_BIG_ENDIAN:
default:
+ order = MPZ_MSWF;
endian = MPZ_BIG_ENDIAN;
break;
case BYTEORDER_HOST_ENDIAN:
+ order = MPZ_HWO;
endian = MPZ_HOST_ENDIAN;
break;
}
memset(data, 0, len);
- mpz_export(data, NULL, MPZ_MSWF, len, endian, 0, op);
+ mpz_export(data, NULL, order, len, endian, 0, op);
return data;
}
endian = MPZ_BIG_ENDIAN;
break;
case BYTEORDER_HOST_ENDIAN:
- order = MPZ_LSWF;
+ order = MPZ_HWO;
endian = MPZ_HOST_ENDIAN;
break;
}