diff options
author | Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com> | 2013-06-26 13:37:13 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-06-27 19:41:17 +0200 |
commit | a8b06b57a624e70aafff4115a6ab06b9ac047788 (patch) | |
tree | 807ce1696a1c6834b32297dd72309bd39e91b1ea | |
parent | 1f0aa8e3fe218276c64d7412b6053069bf789155 (diff) |
data_reg: xml: display register in big endian
Display registers in big endian, so the output will be the same in
different endianness CPU.
<data>0xaabbccdd</data>
Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | src/expr/data_reg.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c index b8b8d66..c123d88 100644 --- a/src/expr/data_reg.c +++ b/src/expr/data_reg.c @@ -15,6 +15,7 @@ #include <limits.h> #include <arpa/inet.h> #include <errno.h> +#include <netinet/in.h> #include <libmnl/libmnl.h> #include <linux/netfilter.h> @@ -205,7 +206,6 @@ static int nft_data_reg_value_xml_parse(union nft_data_reg *reg, char *xml) reg->val[i] = utmp; } - mxmlDelete(tree); return 0; } @@ -258,6 +258,7 @@ int nft_data_reg_value_snprintf_xml(char *buf, size_t size, union nft_data_reg *reg, uint32_t flags) { int len = size, offset = 0, ret, i, j; + uint32_t be; uint8_t *tmp; int data_len = reg->len/sizeof(uint32_t); @@ -271,9 +272,10 @@ int nft_data_reg_value_snprintf_xml(char *buf, size_t size, ret = snprintf(buf+offset, len, "<data%d>0x", i); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - tmp = (uint8_t *)®->val[i]; + be = htonl(reg->val[i]); + tmp = (uint8_t *)&be; - for (j=0; j<sizeof(int); j++) { + for (j = 0; j < sizeof(uint32_t); j++) { ret = snprintf(buf+offset, len, "%.02x", tmp[j]); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); } |