mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 06:32:08 +00:00
netfilter: nf_tables: get rid of pernet families
Now that we have a single table list for each netns, we can get rid of one pointer per family and the global afinfo list, thus, shrinking struct netns for nftables that now becomes 64 bytes smaller. And call __nft_release_afinfo() from __net_exit path accordingly to release netnamespace objects on removal. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
36596dadf5
commit
dd4cbef723
9 changed files with 75 additions and 239 deletions
|
@ -47,34 +47,6 @@ static struct nft_af_info nft_af_bridge __read_mostly = {
|
|||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int nf_tables_bridge_init_net(struct net *net)
|
||||
{
|
||||
net->nft.bridge = kmalloc(sizeof(struct nft_af_info), GFP_KERNEL);
|
||||
if (net->nft.bridge == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(net->nft.bridge, &nft_af_bridge, sizeof(nft_af_bridge));
|
||||
|
||||
if (nft_register_afinfo(net, net->nft.bridge) < 0)
|
||||
goto err;
|
||||
|
||||
return 0;
|
||||
err:
|
||||
kfree(net->nft.bridge);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static void nf_tables_bridge_exit_net(struct net *net)
|
||||
{
|
||||
nft_unregister_afinfo(net, net->nft.bridge);
|
||||
kfree(net->nft.bridge);
|
||||
}
|
||||
|
||||
static struct pernet_operations nf_tables_bridge_net_ops = {
|
||||
.init = nf_tables_bridge_init_net,
|
||||
.exit = nf_tables_bridge_exit_net,
|
||||
};
|
||||
|
||||
static const struct nf_chain_type filter_bridge = {
|
||||
.name = "filter",
|
||||
.type = NFT_CHAIN_T_DEFAULT,
|
||||
|
@ -98,17 +70,17 @@ static int __init nf_tables_bridge_init(void)
|
|||
{
|
||||
int ret;
|
||||
|
||||
ret = nft_register_chain_type(&filter_bridge);
|
||||
ret = nft_register_afinfo(&nft_af_bridge);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = register_pernet_subsys(&nf_tables_bridge_net_ops);
|
||||
ret = nft_register_chain_type(&filter_bridge);
|
||||
if (ret < 0)
|
||||
goto err_register_subsys;
|
||||
goto err_register_chain;
|
||||
|
||||
return ret;
|
||||
|
||||
err_register_subsys:
|
||||
err_register_chain:
|
||||
nft_unregister_chain_type(&filter_bridge);
|
||||
|
||||
return ret;
|
||||
|
@ -116,8 +88,8 @@ err_register_subsys:
|
|||
|
||||
static void __exit nf_tables_bridge_exit(void)
|
||||
{
|
||||
unregister_pernet_subsys(&nf_tables_bridge_net_ops);
|
||||
nft_unregister_chain_type(&filter_bridge);
|
||||
nft_unregister_afinfo(&nft_af_bridge);
|
||||
}
|
||||
|
||||
module_init(nf_tables_bridge_init);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue