diff options
author | Gao feng <gaofeng@cn.fujitsu.com> | 2013-01-21 17:10:27 -0500 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-01-23 06:55:39 -0500 |
commit | 73f4001a52c986114f540504d70b21e52eb0d92a (patch) | |
tree | dc14dd7bc44c9f49bdd14c7f4547ea56b89d8d50 /net | |
parent | b7ff3a1fae78783e0ab1ef82f5978aeb89ddd16b (diff) |
netfilter: nf_ct_tstamp: move initialization out of pernet_operations
Move the global initial codes to the module_init/exit context.
Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/nf_conntrack_core.c | 15 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_timestamp.c | 39 |
2 files changed, 26 insertions, 28 deletions
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index f4c6d4a06a1a..20ebfff0a47e 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c | |||
@@ -1348,6 +1348,7 @@ void nf_conntrack_cleanup_end(void) | |||
1348 | #ifdef CONFIG_NF_CONNTRACK_ZONES | 1348 | #ifdef CONFIG_NF_CONNTRACK_ZONES |
1349 | nf_ct_extend_unregister(&nf_ct_zone_extend); | 1349 | nf_ct_extend_unregister(&nf_ct_zone_extend); |
1350 | #endif | 1350 | #endif |
1351 | nf_conntrack_tstamp_fini(); | ||
1351 | nf_conntrack_acct_fini(); | 1352 | nf_conntrack_acct_fini(); |
1352 | nf_conntrack_expect_fini(); | 1353 | nf_conntrack_expect_fini(); |
1353 | } | 1354 | } |
@@ -1378,7 +1379,7 @@ void nf_conntrack_cleanup_net(struct net *net) | |||
1378 | nf_conntrack_helper_fini(net); | 1379 | nf_conntrack_helper_fini(net); |
1379 | nf_conntrack_timeout_fini(net); | 1380 | nf_conntrack_timeout_fini(net); |
1380 | nf_conntrack_ecache_fini(net); | 1381 | nf_conntrack_ecache_fini(net); |
1381 | nf_conntrack_tstamp_fini(net); | 1382 | nf_conntrack_tstamp_pernet_fini(net); |
1382 | nf_conntrack_acct_pernet_fini(net); | 1383 | nf_conntrack_acct_pernet_fini(net); |
1383 | nf_conntrack_expect_pernet_fini(net); | 1384 | nf_conntrack_expect_pernet_fini(net); |
1384 | kmem_cache_destroy(net->ct.nf_conntrack_cachep); | 1385 | kmem_cache_destroy(net->ct.nf_conntrack_cachep); |
@@ -1512,6 +1513,10 @@ int nf_conntrack_init_start(void) | |||
1512 | if (ret < 0) | 1513 | if (ret < 0) |
1513 | goto err_acct; | 1514 | goto err_acct; |
1514 | 1515 | ||
1516 | ret = nf_conntrack_tstamp_init(); | ||
1517 | if (ret < 0) | ||
1518 | goto err_tstamp; | ||
1519 | |||
1515 | #ifdef CONFIG_NF_CONNTRACK_ZONES | 1520 | #ifdef CONFIG_NF_CONNTRACK_ZONES |
1516 | ret = nf_ct_extend_register(&nf_ct_zone_extend); | 1521 | ret = nf_ct_extend_register(&nf_ct_zone_extend); |
1517 | if (ret < 0) | 1522 | if (ret < 0) |
@@ -1529,8 +1534,10 @@ int nf_conntrack_init_start(void) | |||
1529 | 1534 | ||
1530 | #ifdef CONFIG_NF_CONNTRACK_ZONES | 1535 | #ifdef CONFIG_NF_CONNTRACK_ZONES |
1531 | err_extend: | 1536 | err_extend: |
1532 | nf_conntrack_acct_fini(); | 1537 | nf_conntrack_tstamp_fini(); |
1533 | #endif | 1538 | #endif |
1539 | err_tstamp: | ||
1540 | nf_conntrack_acct_fini(); | ||
1534 | err_acct: | 1541 | err_acct: |
1535 | nf_conntrack_expect_fini(); | 1542 | nf_conntrack_expect_fini(); |
1536 | err_expect: | 1543 | err_expect: |
@@ -1596,7 +1603,7 @@ int nf_conntrack_init_net(struct net *net) | |||
1596 | ret = nf_conntrack_acct_pernet_init(net); | 1603 | ret = nf_conntrack_acct_pernet_init(net); |
1597 | if (ret < 0) | 1604 | if (ret < 0) |
1598 | goto err_acct; | 1605 | goto err_acct; |
1599 | ret = nf_conntrack_tstamp_init(net); | 1606 | ret = nf_conntrack_tstamp_pernet_init(net); |
1600 | if (ret < 0) | 1607 | if (ret < 0) |
1601 | goto err_tstamp; | 1608 | goto err_tstamp; |
1602 | ret = nf_conntrack_ecache_init(net); | 1609 | ret = nf_conntrack_ecache_init(net); |
@@ -1627,7 +1634,7 @@ err_helper: | |||
1627 | err_timeout: | 1634 | err_timeout: |
1628 | nf_conntrack_ecache_fini(net); | 1635 | nf_conntrack_ecache_fini(net); |
1629 | err_ecache: | 1636 | err_ecache: |
1630 | nf_conntrack_tstamp_fini(net); | 1637 | nf_conntrack_tstamp_pernet_fini(net); |
1631 | err_tstamp: | 1638 | err_tstamp: |
1632 | nf_conntrack_acct_pernet_fini(net); | 1639 | nf_conntrack_acct_pernet_fini(net); |
1633 | err_acct: | 1640 | err_acct: |
diff --git a/net/netfilter/nf_conntrack_timestamp.c b/net/netfilter/nf_conntrack_timestamp.c index 7ea8026f07c9..902fb0a6b38a 100644 --- a/net/netfilter/nf_conntrack_timestamp.c +++ b/net/netfilter/nf_conntrack_timestamp.c | |||
@@ -88,37 +88,28 @@ static void nf_conntrack_tstamp_fini_sysctl(struct net *net) | |||
88 | } | 88 | } |
89 | #endif | 89 | #endif |
90 | 90 | ||
91 | int nf_conntrack_tstamp_init(struct net *net) | 91 | int nf_conntrack_tstamp_pernet_init(struct net *net) |
92 | { | 92 | { |
93 | int ret; | ||
94 | |||
95 | net->ct.sysctl_tstamp = nf_ct_tstamp; | 93 | net->ct.sysctl_tstamp = nf_ct_tstamp; |
94 | return nf_conntrack_tstamp_init_sysctl(net); | ||
95 | } | ||
96 | 96 | ||
97 | if (net_eq(net, &init_net)) { | 97 | void nf_conntrack_tstamp_pernet_fini(struct net *net) |
98 | ret = nf_ct_extend_register(&tstamp_extend); | 98 | { |
99 | if (ret < 0) { | 99 | nf_conntrack_tstamp_fini_sysctl(net); |
100 | printk(KERN_ERR "nf_ct_tstamp: Unable to register " | 100 | nf_ct_extend_unregister(&tstamp_extend); |
101 | "extension\n"); | 101 | } |
102 | goto out_extend_register; | ||
103 | } | ||
104 | } | ||
105 | 102 | ||
106 | ret = nf_conntrack_tstamp_init_sysctl(net); | 103 | int nf_conntrack_tstamp_init(void) |
104 | { | ||
105 | int ret; | ||
106 | ret = nf_ct_extend_register(&tstamp_extend); | ||
107 | if (ret < 0) | 107 | if (ret < 0) |
108 | goto out_sysctl; | 108 | pr_err("nf_ct_tstamp: Unable to register extension\n"); |
109 | |||
110 | return 0; | ||
111 | |||
112 | out_sysctl: | ||
113 | if (net_eq(net, &init_net)) | ||
114 | nf_ct_extend_unregister(&tstamp_extend); | ||
115 | out_extend_register: | ||
116 | return ret; | 109 | return ret; |
117 | } | 110 | } |
118 | 111 | ||
119 | void nf_conntrack_tstamp_fini(struct net *net) | 112 | void nf_conntrack_tstamp_fini(void) |
120 | { | 113 | { |
121 | nf_conntrack_tstamp_fini_sysctl(net); | 114 | nf_ct_extend_unregister(&tstamp_extend); |
122 | if (net_eq(net, &init_net)) | ||
123 | nf_ct_extend_unregister(&tstamp_extend); | ||
124 | } | 115 | } |