summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mnl.c15
-rw-r--r--src/netlink.c3
2 files changed, 16 insertions, 2 deletions
diff --git a/src/mnl.c b/src/mnl.c
index 6565341f..8a8dc4d6 100644
--- a/src/mnl.c
+++ b/src/mnl.c
@@ -1396,9 +1396,15 @@ int mnl_nft_set_del(struct netlink_ctx *ctx, struct cmd *cmd)
return 0;
}
+struct set_cb_args {
+ struct netlink_ctx *ctx;
+ struct nftnl_set_list *list;
+};
+
static int set_cb(const struct nlmsghdr *nlh, void *data)
{
- struct nftnl_set_list *nls_list = data;
+ struct set_cb_args *args = data;
+ struct nftnl_set_list *nls_list = args->list;
struct nftnl_set *s;
if (check_genid(nlh) < 0)
@@ -1411,6 +1417,8 @@ static int set_cb(const struct nlmsghdr *nlh, void *data)
if (nftnl_set_nlmsg_parse(nlh, s) < 0)
goto err_free;
+ netlink_dump_set(s, args->ctx);
+
nftnl_set_list_add_tail(s, nls_list);
return MNL_CB_OK;
@@ -1429,6 +1437,7 @@ mnl_nft_set_dump(struct netlink_ctx *ctx, int family,
struct nlmsghdr *nlh;
struct nftnl_set *s;
int ret;
+ struct set_cb_args args;
s = nftnl_set_alloc();
if (s == NULL)
@@ -1450,7 +1459,9 @@ mnl_nft_set_dump(struct netlink_ctx *ctx, int family,
if (nls_list == NULL)
memory_allocation_error();
- ret = nft_mnl_talk(ctx, nlh, nlh->nlmsg_len, set_cb, nls_list);
+ args.list = nls_list;
+ args.ctx = ctx;
+ ret = nft_mnl_talk(ctx, nlh, nlh->nlmsg_len, set_cb, &args);
if (ret < 0 && errno != ENOENT)
goto err;
diff --git a/src/netlink.c b/src/netlink.c
index 73fe579a..68f1b90c 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -856,10 +856,13 @@ static const struct datatype *dtype_map_from_kernel(enum nft_data_types type)
void netlink_dump_set(const struct nftnl_set *nls, struct netlink_ctx *ctx)
{
FILE *fp = ctx->nft->output.output_fp;
+ uint32_t family;
if (!(ctx->nft->debug_mask & NFT_DEBUG_NETLINK) || !fp)
return;
+ family = nftnl_set_get_u32(nls, NFTNL_SET_FAMILY);
+ fprintf(fp, "family %d ", family);
nftnl_set_fprintf(fp, nls, 0, 0);
fprintf(fp, "\n");
}