Endianness is not meaningful for objects smaller than 2 bytes and the byte-order conversions are no-ops in the kernel, so just update the expression as if it were constant. Signed-off-by: Jeremy Sowden <jeremy@xxxxxxxxxx> --- src/evaluate.c | 2 +- tests/py/any/meta.t.payload | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/evaluate.c b/src/evaluate.c index 9b1a04f26f44..f4260436ae0f 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -147,7 +147,7 @@ static int byteorder_conversion(struct eval_ctx *ctx, struct expr **expr, byteorder_names[byteorder], byteorder_names[(*expr)->byteorder]); - if (expr_is_constant(*expr)) + if (expr_is_constant(*expr) || (*expr)->len / BITS_PER_BYTE < 2) (*expr)->byteorder = byteorder; else { op = byteorder_conversion_op(*expr, byteorder); diff --git a/tests/py/any/meta.t.payload b/tests/py/any/meta.t.payload index 486d7aa566ea..2af244a9e246 100644 --- a/tests/py/any/meta.t.payload +++ b/tests/py/any/meta.t.payload @@ -99,14 +99,12 @@ ip test-ip4 input # meta l4proto 33-45 ip test-ip4 input [ meta load l4proto => reg 1 ] - [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ cmp gte reg 1 0x00000021 ] [ cmp lte reg 1 0x0000002d ] # meta l4proto != 33-45 ip test-ip4 input [ meta load l4proto => reg 1 ] - [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ range neq reg 1 0x00000021 0x0000002d ] # meta l4proto { 33, 55, 67, 88} @@ -865,7 +863,6 @@ __set%d test-ip4 0 element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] element 00000042 : 0 [end] element 00000059 : 1 [end] ip test-ip4 input [ meta load l4proto => reg 1 ] - [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ lookup reg 1 set __set%d ] # meta l4proto != { 33-55, 66-88} @@ -874,7 +871,6 @@ __set%d test-ip4 0 element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] element 00000042 : 0 [end] element 00000059 : 1 [end] ip test-ip4 input [ meta load l4proto => reg 1 ] - [ byteorder reg 1 = hton(reg 1, 2, 1) ] [ lookup reg 1 set __set%d 0x1 ] # meta skuid { 2001-2005, 3001-3005} accept -- 2.25.1