summaryrefslogtreecommitdiffstats
path: root/src/proto.c
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2016-09-09 13:44:50 +0200
committerFlorian Westphal <fw@strlen.de>2016-09-09 15:53:14 +0200
commit42e2ec0198dd1408da4a32e1beefe9cbc0fdae89 (patch)
treedfb6685f29bffa4942c99e74a2a63d1010904017 /src/proto.c
parent0d7fdb10b10c7a6c276cdb467d824db9b032140b (diff)
datatype: ll: use big endian byte ordering
ether daddr set 00:03:2d:2b:74:ec is listed as: ether daddr set ec:74:2b:2d:03:00 (it was fine without 'set' keyword). Reason is that ether address was listed as being HOST endian. The payload expression (unlike statement) path contains a few conversion call sites for this, i.e.: if (tmp->byteorder == BYTEORDER_HOST_ENDIAN) mpz_switch_byteorder(tmp->value, tmp->len / BITS_PER_BYTE); ... it might make sense to remove those in a followup patch. Reported-by: Laura Garcia Liebana <nevola@gmail.com> Signed-off-by: Florian Westphal <fw@strlen.de> Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/proto.c')
-rw-r--r--src/proto.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/proto.c b/src/proto.c
index 94995f10..df5439cc 100644
--- a/src/proto.c
+++ b/src/proto.c
@@ -854,7 +854,7 @@ const struct datatype etheraddr_type = {
.type = TYPE_ETHERADDR,
.name = "ether_addr",
.desc = "Ethernet address",
- .byteorder = BYTEORDER_HOST_ENDIAN,
+ .byteorder = BYTEORDER_BIG_ENDIAN,
.size = ETH_ALEN * BITS_PER_BYTE,
.basetype = &lladdr_type,
};
@@ -892,7 +892,7 @@ const struct datatype ethertype_type = {
ETHHDR_TEMPLATE(__name, &ethertype_type, __member)
#define ETHHDR_ADDR(__name, __member) \
PROTO_HDR_TEMPLATE(__name, &etheraddr_type, \
- BYTEORDER_HOST_ENDIAN, \
+ BYTEORDER_BIG_ENDIAN, \
offsetof(struct ether_header, __member) * 8, \
field_sizeof(struct ether_header, __member) * 8)