]> 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)
committerPhil Sutter <phil@nwl.cc>
Sun, 25 May 2025 07:55:35 +0000 (09:55 +0200)
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>
include/netlink.h
src/monitor.c
src/netlink.c

index e9667a24b0d118874f7570bf19af39abc511eb6b..c7da6f9e3bcbbd80974a7aef68aaa90ab4a3941a 100644 (file)
@@ -172,9 +172,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, bool reset);
-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 struct obj *netlink_delinearize_obj(struct netlink_ctx *ctx,
index d70bf2957dd3299ac89e355939f684d9fd919399..4ceff948244322a6c87995de14080b433b6a56f5 100644 (file)
@@ -469,8 +469,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;
@@ -771,8 +771,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 52010c74d4f30e3197f2b77d3f9c0b8d4827fc96..0154728b795ae83b571eb4760776749d45447a9a 100644 (file)
@@ -1412,12 +1412,13 @@ static void set_elem_parse_udata(struct nftnl_set_elem *nlse,
        }
 }
 
-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;
@@ -1475,7 +1476,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,
@@ -1552,7 +1553,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)