]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
netlink: Pass netlink_ctx to netlink_delinearize_setelem()
authorPhil Sutter <phil@nwl.cc>
Fri, 16 May 2025 17:17:00 +0000 (19:17 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 13 Aug 2025 17:24:11 +0000 (19:24 +0200)
commit 6296f09b8b8ecb6d46cfcd90fd955a39bd86c6c9 upstream.

Prepare for calling netlink_io_error() which needs the context pointer.
Trade this in for the cache pointer since no caller uses a special one.
No functional change intended.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Reviewed-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/netlink.h
src/monitor.c
src/netlink.c

index 0c053a32e1d7f843719fdb332361f000edb8bc4c..2777963457aa8eb7a13d86750d0272c48322382a 100644 (file)
@@ -162,9 +162,9 @@ extern int netlink_list_setelems(struct netlink_ctx *ctx,
 extern int netlink_get_setelem(struct netlink_ctx *ctx, const struct handle *h,
                               const struct location *loc, struct set *cache_set,
                               struct set *set, struct expr *init);
-extern int netlink_delinearize_setelem(struct nftnl_set_elem *nlse,
-                                      struct set *set,
-                                      struct nft_cache *cache);
+extern int netlink_delinearize_setelem(struct netlink_ctx *ctx,
+                                      struct nftnl_set_elem *nlse,
+                                      struct set *set);
 
 extern int netlink_list_objs(struct netlink_ctx *ctx, const struct handle *h);
 extern int netlink_reset_objs(struct netlink_ctx *ctx, const struct cmd *cmd,
index 46a2333fbb6e760d487a99088103179f364c3f1a..d5b8ac838d2cd40aae4d8833a397515f3e660321 100644 (file)
@@ -453,8 +453,8 @@ static int netlink_events_setelem_cb(const struct nlmsghdr *nlh, int type,
                        nftnl_set_elems_iter_destroy(nlsei);
                        goto out;
                }
-               if (netlink_delinearize_setelem(nlse, dummyset,
-                                               &monh->ctx->nft->cache) < 0) {
+               if (netlink_delinearize_setelem(monh->ctx,
+                                               nlse, dummyset) < 0) {
                        set_free(dummyset);
                        nftnl_set_elems_iter_destroy(nlsei);
                        goto out;
@@ -711,8 +711,7 @@ static void netlink_events_cache_addsetelem(struct netlink_mon_handler *monh,
 
        nlse = nftnl_set_elems_iter_next(nlsei);
        while (nlse != NULL) {
-               if (netlink_delinearize_setelem(nlse, set,
-                                               &monh->ctx->nft->cache) < 0) {
+               if (netlink_delinearize_setelem(monh->ctx, nlse, set) < 0) {
                        fprintf(stderr,
                                "W: Unable to cache set_elem. "
                                "Delinearize failed.\n");
index 58efb6c20842bc642176e4f7582591e08c0f24cb..ea83ab814830f19e2a74ed0626dc118614c15aea 100644 (file)
@@ -1401,12 +1401,13 @@ static void set_elem_parse_udata(struct nftnl_set_elem *nlse,
                        nftnl_udata_get_u32(ud[NFTNL_UDATA_SET_ELEM_FLAGS]);
 }
 
-int netlink_delinearize_setelem(struct nftnl_set_elem *nlse,
-                               struct set *set, struct nft_cache *cache)
+int netlink_delinearize_setelem(struct netlink_ctx *ctx,
+                               struct nftnl_set_elem *nlse,
+                               struct set *set)
 {
        struct setelem_parse_ctx setelem_parse_ctx = {
                .set    = set,
-               .cache  = cache,
+               .cache  = &ctx->nft->cache,
        };
        struct nft_data_delinearize nld;
        struct expr *expr, *key, *data;
@@ -1457,7 +1458,7 @@ key_end:
                struct stmt *stmt;
 
                nle = nftnl_set_elem_get(nlse, NFTNL_SET_ELEM_EXPR, NULL);
-               stmt = netlink_parse_set_expr(set, cache, nle);
+               stmt = netlink_parse_set_expr(set, &ctx->nft->cache, nle);
                list_add_tail(&stmt->list, &setelem_parse_ctx.stmt_list);
        } else if (nftnl_set_elem_is_set(nlse, NFTNL_SET_ELEM_EXPRESSIONS)) {
                nftnl_set_elem_expr_foreach(nlse, set_elem_parse_expressions,
@@ -1534,7 +1535,7 @@ out:
 static int list_setelem_cb(struct nftnl_set_elem *nlse, void *arg)
 {
        struct netlink_ctx *ctx = arg;
-       return netlink_delinearize_setelem(nlse, ctx->set, &ctx->nft->cache);
+       return netlink_delinearize_setelem(ctx, nlse, ctx->set);
 }
 
 static int list_setelem_debug_cb(struct nftnl_set_elem *nlse, void *arg)