mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
[NETFILTER]: nf_conntrack: move expectaton related init code to nf_conntrack_expect.c
Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cf6994c2b9
commit
e9c1b084e1
4 changed files with 60 additions and 25 deletions
|
@ -7,8 +7,6 @@
|
|||
#include <net/netfilter/nf_conntrack.h>
|
||||
|
||||
extern struct list_head nf_ct_expect_list;
|
||||
extern struct kmem_cache *nf_ct_expect_cachep;
|
||||
extern const struct file_operations exp_file_ops;
|
||||
|
||||
struct nf_conntrack_expect
|
||||
{
|
||||
|
@ -53,6 +51,8 @@ struct nf_conntrack_expect
|
|||
|
||||
#define NF_CT_EXPECT_PERMANENT 0x1
|
||||
|
||||
int nf_conntrack_expect_init(void);
|
||||
void nf_conntrack_expect_fini(void);
|
||||
|
||||
struct nf_conntrack_expect *
|
||||
__nf_ct_expect_find(const struct nf_conntrack_tuple *tuple);
|
||||
|
|
|
@ -961,12 +961,12 @@ void nf_conntrack_cleanup(void)
|
|||
rcu_assign_pointer(nf_ct_destroy, NULL);
|
||||
|
||||
kmem_cache_destroy(nf_conntrack_cachep);
|
||||
kmem_cache_destroy(nf_ct_expect_cachep);
|
||||
nf_ct_free_hashtable(nf_conntrack_hash, nf_conntrack_vmalloc,
|
||||
nf_conntrack_htable_size);
|
||||
|
||||
nf_conntrack_proto_fini();
|
||||
nf_conntrack_helper_fini();
|
||||
nf_conntrack_expect_fini();
|
||||
}
|
||||
|
||||
struct hlist_head *nf_ct_alloc_hashtable(int *sizep, int *vmalloced)
|
||||
|
@ -1088,21 +1088,17 @@ int __init nf_conntrack_init(void)
|
|||
goto err_free_hash;
|
||||
}
|
||||
|
||||
nf_ct_expect_cachep = kmem_cache_create("nf_conntrack_expect",
|
||||
sizeof(struct nf_conntrack_expect),
|
||||
0, 0, NULL, NULL);
|
||||
if (!nf_ct_expect_cachep) {
|
||||
printk(KERN_ERR "Unable to create nf_expect slab cache\n");
|
||||
goto err_free_conntrack_slab;
|
||||
}
|
||||
|
||||
ret = nf_conntrack_proto_init();
|
||||
if (ret < 0)
|
||||
goto out_free_expect_slab;
|
||||
goto err_free_conntrack_slab;
|
||||
|
||||
ret = nf_conntrack_expect_init();
|
||||
if (ret < 0)
|
||||
goto out_fini_proto;
|
||||
|
||||
ret = nf_conntrack_helper_init();
|
||||
if (ret < 0)
|
||||
goto out_fini_proto;
|
||||
goto out_fini_expect;
|
||||
|
||||
/* For use by REJECT target */
|
||||
rcu_assign_pointer(ip_ct_attach, __nf_conntrack_attach);
|
||||
|
@ -1116,10 +1112,10 @@ int __init nf_conntrack_init(void)
|
|||
|
||||
return ret;
|
||||
|
||||
out_fini_expect:
|
||||
nf_conntrack_expect_fini();
|
||||
out_fini_proto:
|
||||
nf_conntrack_proto_fini();
|
||||
out_free_expect_slab:
|
||||
kmem_cache_destroy(nf_ct_expect_cachep);
|
||||
err_free_conntrack_slab:
|
||||
kmem_cache_destroy(nf_conntrack_cachep);
|
||||
err_free_hash:
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
LIST_HEAD(nf_ct_expect_list);
|
||||
EXPORT_SYMBOL_GPL(nf_ct_expect_list);
|
||||
|
||||
struct kmem_cache *nf_ct_expect_cachep __read_mostly;
|
||||
static struct kmem_cache *nf_ct_expect_cachep __read_mostly;
|
||||
static unsigned int nf_ct_expect_next_id;
|
||||
|
||||
/* nf_conntrack_expect helper functions */
|
||||
|
@ -413,3 +413,49 @@ const struct file_operations exp_file_ops = {
|
|||
.release = seq_release
|
||||
};
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
static int __init exp_proc_init(void)
|
||||
{
|
||||
#ifdef CONFIG_PROC_FS
|
||||
struct proc_dir_entry *proc;
|
||||
|
||||
proc = proc_net_fops_create("nf_conntrack_expect", 0440, &exp_file_ops);
|
||||
if (!proc)
|
||||
return -ENOMEM;
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void exp_proc_remove(void)
|
||||
{
|
||||
#ifdef CONFIG_PROC_FS
|
||||
proc_net_remove("nf_conntrack_expect");
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
}
|
||||
|
||||
int __init nf_conntrack_expect_init(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
nf_ct_expect_cachep = kmem_cache_create("nf_conntrack_expect",
|
||||
sizeof(struct nf_conntrack_expect),
|
||||
0, 0, NULL, NULL);
|
||||
if (!nf_ct_expect_cachep)
|
||||
return -ENOMEM;
|
||||
|
||||
err = exp_proc_init();
|
||||
if (err < 0)
|
||||
goto err1;
|
||||
|
||||
return 0;
|
||||
|
||||
err1:
|
||||
kmem_cache_destroy(nf_ct_expect_cachep);
|
||||
return err;
|
||||
}
|
||||
|
||||
void nf_conntrack_expect_fini(void)
|
||||
{
|
||||
exp_proc_remove();
|
||||
kmem_cache_destroy(nf_ct_expect_cachep);
|
||||
}
|
||||
|
|
|
@ -411,7 +411,7 @@ EXPORT_SYMBOL_GPL(nf_ct_log_invalid);
|
|||
static int __init nf_conntrack_standalone_init(void)
|
||||
{
|
||||
#ifdef CONFIG_PROC_FS
|
||||
struct proc_dir_entry *proc, *proc_exp, *proc_stat;
|
||||
struct proc_dir_entry *proc, *proc_stat;
|
||||
#endif
|
||||
int ret = 0;
|
||||
|
||||
|
@ -423,13 +423,9 @@ static int __init nf_conntrack_standalone_init(void)
|
|||
proc = proc_net_fops_create("nf_conntrack", 0440, &ct_file_ops);
|
||||
if (!proc) goto cleanup_init;
|
||||
|
||||
proc_exp = proc_net_fops_create("nf_conntrack_expect", 0440,
|
||||
&exp_file_ops);
|
||||
if (!proc_exp) goto cleanup_proc;
|
||||
|
||||
proc_stat = create_proc_entry("nf_conntrack", S_IRUGO, proc_net_stat);
|
||||
if (!proc_stat)
|
||||
goto cleanup_proc_exp;
|
||||
goto cleanup_proc;
|
||||
|
||||
proc_stat->proc_fops = &ct_cpu_seq_fops;
|
||||
proc_stat->owner = THIS_MODULE;
|
||||
|
@ -449,8 +445,6 @@ static int __init nf_conntrack_standalone_init(void)
|
|||
#endif
|
||||
#ifdef CONFIG_PROC_FS
|
||||
remove_proc_entry("nf_conntrack", proc_net_stat);
|
||||
cleanup_proc_exp:
|
||||
proc_net_remove("nf_conntrack_expect");
|
||||
cleanup_proc:
|
||||
proc_net_remove("nf_conntrack");
|
||||
cleanup_init:
|
||||
|
@ -466,7 +460,6 @@ static void __exit nf_conntrack_standalone_fini(void)
|
|||
#endif
|
||||
#ifdef CONFIG_PROC_FS
|
||||
remove_proc_entry("nf_conntrack", proc_net_stat);
|
||||
proc_net_remove("nf_conntrack_expect");
|
||||
proc_net_remove("nf_conntrack");
|
||||
#endif /* CNFIG_PROC_FS */
|
||||
nf_conntrack_cleanup();
|
||||
|
|
Loading…
Reference in a new issue