diff options
author | Phil Sutter <phil@nwl.cc> | 2022-09-27 23:15:37 +0200 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2022-09-28 14:21:13 +0200 |
commit | 8dc22798bf813ce92aaac58a6fe8749fe3fc18dc (patch) | |
tree | fd910c937bf58f33c4c0e2136c08096e6cafb882 | |
parent | db420e268735e8499ca16146234ace79a9f1128a (diff) |
nft-shared: Introduce __get_cmp_data()
This is an inner function to get_cmp_data() returning the op value as-is
for caller examination.
Signed-off-by: Phil Sutter <phil@nwl.cc>
-rw-r--r-- | iptables/nft-shared.c | 17 | ||||
-rw-r--r-- | iptables/nft-shared.h | 1 |
2 files changed, 11 insertions, 7 deletions
diff --git a/iptables/nft-shared.c b/iptables/nft-shared.c index 555f74f0..f8de2b71 100644 --- a/iptables/nft-shared.c +++ b/iptables/nft-shared.c @@ -471,17 +471,20 @@ static void nft_parse_match(struct nft_xt_ctx *ctx, struct nftnl_expr *e) ctx->h->ops->parse_match(match, ctx->cs); } -void get_cmp_data(struct nftnl_expr *e, void *data, size_t dlen, bool *inv) +void __get_cmp_data(struct nftnl_expr *e, void *data, size_t dlen, uint8_t *op) { uint32_t len; - uint8_t op; memcpy(data, nftnl_expr_get(e, NFTNL_EXPR_CMP_DATA, &len), dlen); - op = nftnl_expr_get_u32(e, NFTNL_EXPR_CMP_OP); - if (op == NFT_CMP_NEQ) - *inv = true; - else - *inv = false; + *op = nftnl_expr_get_u32(e, NFTNL_EXPR_CMP_OP); +} + +void get_cmp_data(struct nftnl_expr *e, void *data, size_t dlen, bool *inv) +{ + uint8_t op; + + __get_cmp_data(e, data, dlen, &op); + *inv = (op == NFT_CMP_NEQ); } static void nft_meta_set_to_target(struct nft_xt_ctx *ctx, diff --git a/iptables/nft-shared.h b/iptables/nft-shared.h index 42170638..8fcedcdd 100644 --- a/iptables/nft-shared.h +++ b/iptables/nft-shared.h @@ -217,6 +217,7 @@ bool is_same_interfaces(const char *a_iniface, const char *a_outiface, int parse_meta(struct nft_xt_ctx *ctx, struct nftnl_expr *e, uint8_t key, char *iniface, unsigned char *iniface_mask, char *outiface, unsigned char *outiface_mask, uint8_t *invflags); +void __get_cmp_data(struct nftnl_expr *e, void *data, size_t dlen, uint8_t *op); void get_cmp_data(struct nftnl_expr *e, void *data, size_t dlen, bool *inv); void nft_rule_to_iptables_command_state(struct nft_handle *h, const struct nftnl_rule *r, |