]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: do not use the nft_cache_filter object from mnl.c
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 12 Jan 2022 00:33:58 +0000 (01:33 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Sat, 15 Jan 2022 17:15:23 +0000 (18:15 +0100)
Pass the table and chain strings to mnl_nft_rule_dump() instead.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/mnl.h
src/cache.c
src/mnl.c

index b006192cf7b23f6b17cd67e71090ec1fafacdc39..a4abe1ae3242e28d54b95e2b16de10b145de8907 100644 (file)
@@ -34,7 +34,7 @@ int mnl_nft_rule_del(struct netlink_ctx *ctx, struct cmd *cmd);
 int mnl_nft_rule_replace(struct netlink_ctx *ctx, struct cmd *cmd);
 
 struct nftnl_rule_list *mnl_nft_rule_dump(struct netlink_ctx *ctx, int family,
-                                         const struct nft_cache_filter *filter);
+                                         const char *table, const char *chain);
 
 int mnl_nft_chain_add(struct netlink_ctx *ctx, struct cmd *cmd,
                      unsigned int flags);
index 6494e4743f8ddcc389a7a1b65c6bf13a024cf806..6ca6bbc6645b6557edb9e6a1bb8ef0033a8c28fd 100644 (file)
@@ -478,8 +478,15 @@ static int rule_cache_init(struct netlink_ctx *ctx, const struct handle *h,
                           const struct nft_cache_filter *filter)
 {
        struct nftnl_rule_list *rule_cache;
+       const char *table;
+       const char *chain;
 
-       rule_cache = mnl_nft_rule_dump(ctx, h->family, filter);
+       if (filter) {
+               table = filter->list.table;
+               chain = filter->list.chain;
+       }
+
+       rule_cache = mnl_nft_rule_dump(ctx, h->family, table, chain);
        if (rule_cache == NULL) {
                if (errno == EINTR)
                        return -1;
index 5413f8658f9b3b9185951a1758ab50bcd9bdf556..6be991a4827c158dc0eb1cb59a45cc2a11a35fb7 100644 (file)
--- a/src/mnl.c
+++ b/src/mnl.c
@@ -654,7 +654,7 @@ err_free:
 }
 
 struct nftnl_rule_list *mnl_nft_rule_dump(struct netlink_ctx *ctx, int family,
-                                         const struct nft_cache_filter *filter)
+                                         const char *table, const char *chain)
 {
        char buf[MNL_SOCKET_BUFFER_SIZE];
        struct nftnl_rule_list *nlr_list;
@@ -662,16 +662,14 @@ struct nftnl_rule_list *mnl_nft_rule_dump(struct netlink_ctx *ctx, int family,
        struct nlmsghdr *nlh;
        int ret;
 
-       if (filter && filter->list.table) {
+       if (table) {
                nlr = nftnl_rule_alloc();
                if (!nlr)
                        memory_allocation_error();
 
-               nftnl_rule_set_str(nlr, NFTNL_RULE_TABLE,
-                                  filter->list.table);
-               if (filter->list.chain)
-                       nftnl_rule_set_str(nlr, NFTNL_RULE_CHAIN,
-                                          filter->list.chain);
+               nftnl_rule_set_str(nlr, NFTNL_RULE_TABLE, table);
+               if (chain)
+                       nftnl_rule_set_str(nlr, NFTNL_RULE_CHAIN, chain);
        }
 
        nlr_list = nftnl_rule_list_alloc();