diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-04-13 04:01:30 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-04-13 13:44:03 +0200 |
commit | e0beff27435433ce2fd2826496774a539df73d65 (patch) | |
tree | 20cf0c72c3ce4bb61467d8954111450c952f752e /src/intervals.c | |
parent | 3e8d934e4f7224b0db64f89e9097370630062064 (diff) |
src: restore interval sets work with string datatypes
Switch byteorder of string datatypes to host byteorder.
Partial revert of ("src: make interval sets work with string datatypes")
otherwise new interval code complains with conflicting intervals.
testcases/sets/sets_with_ifnames passes fine again.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/intervals.c')
-rw-r--r-- | src/intervals.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/intervals.c b/src/intervals.c index f672d0aa..451bc4dd 100644 --- a/src/intervals.c +++ b/src/intervals.c @@ -25,6 +25,9 @@ static void setelem_expr_to_range(struct expr *expr) case EXPR_PREFIX: mpz_init(rop); mpz_bitmask(rop, expr->key->len - expr->key->prefix_len); + if (expr_basetype(expr)->type == TYPE_STRING) + mpz_switch_byteorder(expr->key->prefix->value, expr->len / BITS_PER_BYTE); + mpz_ior(rop, rop, expr->key->prefix->value); mpz_export_data(data, rop, expr->key->prefix->byteorder, expr->key->prefix->len / BITS_PER_BYTE); @@ -40,6 +43,9 @@ static void setelem_expr_to_range(struct expr *expr) expr->key = key; break; case EXPR_VALUE: + if (expr_basetype(expr)->type == TYPE_STRING) + mpz_switch_byteorder(expr->key->value, expr->len / BITS_PER_BYTE); + key = range_expr_alloc(&expr->location, expr_clone(expr->key), expr_get(expr->key)); |