Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9c1b084 authored by Patrick McHardy's avatar Patrick McHardy Committed by David S. Miller
Browse files

[NETFILTER]: nf_conntrack: move expectaton related init code to nf_conntrack_expect.c

parent cf6994c2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
+8 −12
Original line number Diff line number Diff line
@@ -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");
	ret = nf_conntrack_proto_init();
	if (ret < 0)
		goto err_free_conntrack_slab;
	}

	ret = nf_conntrack_proto_init();
	ret = nf_conntrack_expect_init();
	if (ret < 0)
		goto out_free_expect_slab;
		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:
+47 −1
Original line number Diff line number Diff line
@@ -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);
}
+2 −9
Original line number Diff line number Diff line
@@ -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();