static int flush_rule_cb(struct nft_rule *nlr, void *arg)
{
struct netlink_ctx *ctx = arg;
+ const struct handle *h = ctx->data;
int err;
+ if ((h->table &&
+ strcmp(nft_rule_attr_get_str(nlr, NFT_RULE_ATTR_TABLE), h->table) != 0) ||
+ (h->chain &&
+ strcmp(nft_rule_attr_get_str(nlr, NFT_RULE_ATTR_CHAIN), h->chain) != 0))
+ return 0;
+
netlink_dump_rule(nlr);
err = mnl_nft_rule_batch_del(nlr, 0, ctx->seqnum);
if (err < 0) {
"Could not receive rules from kernel: %s",
strerror(errno));
+ ctx->data = h;
mnl_batch_begin();
nft_rule_list_foreach(rule_cache, flush_rule_cb, ctx);
nft_rule_list_free(rule_cache);