Skip to content

Commit

Permalink
netfilter: nf_tables: allow to register flowtable with no devices
Browse files Browse the repository at this point in the history
A flowtable might be composed of dynamic interfaces only. Such dynamic
interfaces might show up at a later stage. This patch allows users to
register a flowtable with no devices. Once the dynamic interface becomes
available, the user adds the dynamic devices to the flowtable.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Pablo Neira Ayuso committed May 27, 2020
1 parent abadb2f commit 05abe44
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions net/netfilter/nf_tables_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -1724,8 +1724,6 @@ static int nf_tables_parse_netdev_hooks(struct net *net,
goto err_hook;
}
}
if (!n)
return -EINVAL;

return 0;

Expand Down Expand Up @@ -1762,6 +1760,9 @@ static int nft_chain_parse_netdev(struct net *net,
hook_list);
if (err < 0)
return err;

if (list_empty(hook_list))
return -EINVAL;
} else {
return -EINVAL;
}
Expand Down Expand Up @@ -6209,8 +6210,7 @@ static int nft_flowtable_parse_hook(const struct nft_ctx *ctx,
return err;

if (!tb[NFTA_FLOWTABLE_HOOK_NUM] ||
!tb[NFTA_FLOWTABLE_HOOK_PRIORITY] ||
!tb[NFTA_FLOWTABLE_HOOK_DEVS])
!tb[NFTA_FLOWTABLE_HOOK_PRIORITY])
return -EINVAL;

hooknum = ntohl(nla_get_be32(tb[NFTA_FLOWTABLE_HOOK_NUM]));
Expand All @@ -6219,11 +6219,13 @@ static int nft_flowtable_parse_hook(const struct nft_ctx *ctx,

priority = ntohl(nla_get_be32(tb[NFTA_FLOWTABLE_HOOK_PRIORITY]));

err = nf_tables_parse_netdev_hooks(ctx->net,
tb[NFTA_FLOWTABLE_HOOK_DEVS],
&flowtable_hook->list);
if (err < 0)
return err;
if (tb[NFTA_FLOWTABLE_HOOK_DEVS]) {
err = nf_tables_parse_netdev_hooks(ctx->net,
tb[NFTA_FLOWTABLE_HOOK_DEVS],
&flowtable_hook->list);
if (err < 0)
return err;
}

flowtable_hook->priority = priority;
flowtable_hook->num = hooknum;
Expand Down

0 comments on commit 05abe44

Please sign in to comment.