From: Pablo Neira Ayuso Date: Sun, 24 Apr 2022 20:19:21 +0000 (+0200) Subject: nft: split gen_payload() to allocate register and initialize expression X-Git-Tag: v1.8.8~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1dcfb81e02df3ed06b617bd588431813fab6af38;p=thirdparty%2Fiptables.git nft: split gen_payload() to allocate register and initialize expression Add __gen_payload(), in preparation for the dynamic register allocation. Signed-off-by: Pablo Neira Ayuso --- diff --git a/iptables/nft.c b/iptables/nft.c index bdfef024..07653ee1 100644 --- a/iptables/nft.c +++ b/iptables/nft.c @@ -1090,20 +1090,30 @@ static struct nftnl_set *add_anon_set(struct nft_handle *h, const char *table, } static struct nftnl_expr * -gen_payload(struct nft_handle *h, uint32_t base, uint32_t offset, uint32_t len, - uint8_t *dreg) +__gen_payload(uint32_t base, uint32_t offset, uint32_t len, uint8_t reg) { struct nftnl_expr *e = nftnl_expr_alloc("payload"); - uint8_t reg; if (!e) return NULL; - reg = NFT_REG_1; nftnl_expr_set_u32(e, NFTNL_EXPR_PAYLOAD_BASE, base); nftnl_expr_set_u32(e, NFTNL_EXPR_PAYLOAD_OFFSET, offset); nftnl_expr_set_u32(e, NFTNL_EXPR_PAYLOAD_LEN, len); nftnl_expr_set_u32(e, NFTNL_EXPR_PAYLOAD_DREG, reg); + + return e; +} + +static struct nftnl_expr * +gen_payload(struct nft_handle *h, uint32_t base, uint32_t offset, uint32_t len, + uint8_t *dreg) +{ + struct nftnl_expr *e; + uint8_t reg; + + reg = NFT_REG_1; + e = __gen_payload(base, offset, len, reg); *dreg = reg; return e;