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);
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;
}
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;
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();