diff options
author | Hans Schillstrom <hans.schillstrom@ericsson.com> | 2011-01-03 08:45:03 -0500 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2011-01-12 20:30:29 -0500 |
commit | c6d2d445d8dee04cde47eb4021636399a4239e9f (patch) | |
tree | 3f1aa27ea7e60ed97d3039b02c6a08e68425a186 | |
parent | 4a98480bccc2f5998c5564d254392635b9aa04c2 (diff) |
IPVS: netns, final patch enabling network name space.
all init_net removed, (except for some alloc related
that needs to be there)
Signed-off-by: Hans Schillstrom <hans.schillstrom@ericsson.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r-- | net/netfilter/ipvs/ip_vs_app.c | 3 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_conn.c | 5 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_core.c | 4 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_ctl.c | 7 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_est.c | 3 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_ftp.c | 6 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_sync.c | 5 |
7 files changed, 1 insertions, 32 deletions
diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c index 286f46594e0e..5c48ffb60c28 100644 --- a/net/netfilter/ipvs/ip_vs_app.c +++ b/net/netfilter/ipvs/ip_vs_app.c | |||
@@ -582,9 +582,6 @@ static int __net_init __ip_vs_app_init(struct net *net) | |||
582 | { | 582 | { |
583 | struct netns_ipvs *ipvs = net_ipvs(net); | 583 | struct netns_ipvs *ipvs = net_ipvs(net); |
584 | 584 | ||
585 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
586 | return -EPERM; | ||
587 | |||
588 | INIT_LIST_HEAD(&ipvs->app_list); | 585 | INIT_LIST_HEAD(&ipvs->app_list); |
589 | __mutex_init(&ipvs->app_mutex, "ipvs->app_mutex", &ipvs->app_key); | 586 | __mutex_init(&ipvs->app_mutex, "ipvs->app_mutex", &ipvs->app_key); |
590 | proc_net_fops_create(net, "ip_vs_app", 0, &ip_vs_app_fops); | 587 | proc_net_fops_create(net, "ip_vs_app", 0, &ip_vs_app_fops); |
diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index 28bdaf7c02f4..83233fe24a08 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c | |||
@@ -1234,8 +1234,6 @@ int __net_init __ip_vs_conn_init(struct net *net) | |||
1234 | { | 1234 | { |
1235 | struct netns_ipvs *ipvs = net_ipvs(net); | 1235 | struct netns_ipvs *ipvs = net_ipvs(net); |
1236 | 1236 | ||
1237 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
1238 | return -EPERM; | ||
1239 | atomic_set(&ipvs->conn_count, 0); | 1237 | atomic_set(&ipvs->conn_count, 0); |
1240 | 1238 | ||
1241 | proc_net_fops_create(net, "ip_vs_conn", 0, &ip_vs_conn_fops); | 1239 | proc_net_fops_create(net, "ip_vs_conn", 0, &ip_vs_conn_fops); |
@@ -1245,9 +1243,6 @@ int __net_init __ip_vs_conn_init(struct net *net) | |||
1245 | 1243 | ||
1246 | static void __net_exit __ip_vs_conn_cleanup(struct net *net) | 1244 | static void __net_exit __ip_vs_conn_cleanup(struct net *net) |
1247 | { | 1245 | { |
1248 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
1249 | return; | ||
1250 | |||
1251 | /* flush all the connection entries first */ | 1246 | /* flush all the connection entries first */ |
1252 | ip_vs_conn_flush(net); | 1247 | ip_vs_conn_flush(net); |
1253 | proc_net_remove(net, "ip_vs_conn"); | 1248 | proc_net_remove(net, "ip_vs_conn"); |
diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c index 9e10c7a0720a..f36a84f33efb 100644 --- a/net/netfilter/ipvs/ip_vs_core.c +++ b/net/netfilter/ipvs/ip_vs_core.c | |||
@@ -1877,10 +1877,6 @@ static int __net_init __ip_vs_init(struct net *net) | |||
1877 | { | 1877 | { |
1878 | struct netns_ipvs *ipvs; | 1878 | struct netns_ipvs *ipvs; |
1879 | 1879 | ||
1880 | if (!net_eq(net, &init_net)) { | ||
1881 | pr_err("The final patch for enabling netns is missing\n"); | ||
1882 | return -EPERM; | ||
1883 | } | ||
1884 | ipvs = net_generic(net, ip_vs_net_id); | 1880 | ipvs = net_generic(net, ip_vs_net_id); |
1885 | if (ipvs == NULL) { | 1881 | if (ipvs == NULL) { |
1886 | pr_err("%s(): no memory.\n", __func__); | 1882 | pr_err("%s(): no memory.\n", __func__); |
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index edf2b6dee972..09ca2ce2f2b7 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c | |||
@@ -2617,6 +2617,7 @@ static struct genl_family ip_vs_genl_family = { | |||
2617 | .name = IPVS_GENL_NAME, | 2617 | .name = IPVS_GENL_NAME, |
2618 | .version = IPVS_GENL_VERSION, | 2618 | .version = IPVS_GENL_VERSION, |
2619 | .maxattr = IPVS_CMD_MAX, | 2619 | .maxattr = IPVS_CMD_MAX, |
2620 | .netnsok = true, /* Make ipvsadm to work on netns */ | ||
2620 | }; | 2621 | }; |
2621 | 2622 | ||
2622 | /* Policy used for first-level command attributes */ | 2623 | /* Policy used for first-level command attributes */ |
@@ -3483,9 +3484,6 @@ int __net_init __ip_vs_control_init(struct net *net) | |||
3483 | struct netns_ipvs *ipvs = net_ipvs(net); | 3484 | struct netns_ipvs *ipvs = net_ipvs(net); |
3484 | struct ctl_table *tbl; | 3485 | struct ctl_table *tbl; |
3485 | 3486 | ||
3486 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
3487 | return -EPERM; | ||
3488 | |||
3489 | atomic_set(&ipvs->dropentry, 0); | 3487 | atomic_set(&ipvs->dropentry, 0); |
3490 | spin_lock_init(&ipvs->dropentry_lock); | 3488 | spin_lock_init(&ipvs->dropentry_lock); |
3491 | spin_lock_init(&ipvs->droppacket_lock); | 3489 | spin_lock_init(&ipvs->droppacket_lock); |
@@ -3578,9 +3576,6 @@ static void __net_exit __ip_vs_control_cleanup(struct net *net) | |||
3578 | { | 3576 | { |
3579 | struct netns_ipvs *ipvs = net_ipvs(net); | 3577 | struct netns_ipvs *ipvs = net_ipvs(net); |
3580 | 3578 | ||
3581 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
3582 | return; | ||
3583 | |||
3584 | ip_vs_trash_cleanup(net); | 3579 | ip_vs_trash_cleanup(net); |
3585 | ip_vs_kill_estimator(net, ipvs->tot_stats); | 3580 | ip_vs_kill_estimator(net, ipvs->tot_stats); |
3586 | cancel_delayed_work_sync(&ipvs->defense_work); | 3581 | cancel_delayed_work_sync(&ipvs->defense_work); |
diff --git a/net/netfilter/ipvs/ip_vs_est.c b/net/netfilter/ipvs/ip_vs_est.c index d13616b138cd..f560a05c965a 100644 --- a/net/netfilter/ipvs/ip_vs_est.c +++ b/net/netfilter/ipvs/ip_vs_est.c | |||
@@ -203,9 +203,6 @@ static int __net_init __ip_vs_estimator_init(struct net *net) | |||
203 | { | 203 | { |
204 | struct netns_ipvs *ipvs = net_ipvs(net); | 204 | struct netns_ipvs *ipvs = net_ipvs(net); |
205 | 205 | ||
206 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
207 | return -EPERM; | ||
208 | |||
209 | INIT_LIST_HEAD(&ipvs->est_list); | 206 | INIT_LIST_HEAD(&ipvs->est_list); |
210 | spin_lock_init(&ipvs->est_lock); | 207 | spin_lock_init(&ipvs->est_lock); |
211 | setup_timer(&ipvs->est_timer, estimation_timer, (unsigned long)net); | 208 | setup_timer(&ipvs->est_timer, estimation_timer, (unsigned long)net); |
diff --git a/net/netfilter/ipvs/ip_vs_ftp.c b/net/netfilter/ipvs/ip_vs_ftp.c index 6a04f9ab9d0d..6b5dd6ddaae9 100644 --- a/net/netfilter/ipvs/ip_vs_ftp.c +++ b/net/netfilter/ipvs/ip_vs_ftp.c | |||
@@ -413,9 +413,6 @@ static int __net_init __ip_vs_ftp_init(struct net *net) | |||
413 | int i, ret; | 413 | int i, ret; |
414 | struct ip_vs_app *app = &ip_vs_ftp; | 414 | struct ip_vs_app *app = &ip_vs_ftp; |
415 | 415 | ||
416 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
417 | return -EPERM; | ||
418 | |||
419 | ret = register_ip_vs_app(net, app); | 416 | ret = register_ip_vs_app(net, app); |
420 | if (ret) | 417 | if (ret) |
421 | return ret; | 418 | return ret; |
@@ -442,9 +439,6 @@ static void __ip_vs_ftp_exit(struct net *net) | |||
442 | { | 439 | { |
443 | struct ip_vs_app *app = &ip_vs_ftp; | 440 | struct ip_vs_app *app = &ip_vs_ftp; |
444 | 441 | ||
445 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
446 | return; | ||
447 | |||
448 | unregister_ip_vs_app(net, app); | 442 | unregister_ip_vs_app(net, app); |
449 | } | 443 | } |
450 | 444 | ||
diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c index b1780562c42b..d1adf988eb08 100644 --- a/net/netfilter/ipvs/ip_vs_sync.c +++ b/net/netfilter/ipvs/ip_vs_sync.c | |||
@@ -1659,9 +1659,6 @@ static int __net_init __ip_vs_sync_init(struct net *net) | |||
1659 | { | 1659 | { |
1660 | struct netns_ipvs *ipvs = net_ipvs(net); | 1660 | struct netns_ipvs *ipvs = net_ipvs(net); |
1661 | 1661 | ||
1662 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
1663 | return -EPERM; | ||
1664 | |||
1665 | INIT_LIST_HEAD(&ipvs->sync_queue); | 1662 | INIT_LIST_HEAD(&ipvs->sync_queue); |
1666 | spin_lock_init(&ipvs->sync_lock); | 1663 | spin_lock_init(&ipvs->sync_lock); |
1667 | spin_lock_init(&ipvs->sync_buff_lock); | 1664 | spin_lock_init(&ipvs->sync_buff_lock); |
@@ -1674,8 +1671,6 @@ static int __net_init __ip_vs_sync_init(struct net *net) | |||
1674 | 1671 | ||
1675 | static void __ip_vs_sync_cleanup(struct net *net) | 1672 | static void __ip_vs_sync_cleanup(struct net *net) |
1676 | { | 1673 | { |
1677 | if (!net_eq(net, &init_net)) /* netns not enabled yet */ | ||
1678 | return; | ||
1679 | stop_sync_thread(net, IP_VS_STATE_MASTER); | 1674 | stop_sync_thread(net, IP_VS_STATE_MASTER); |
1680 | stop_sync_thread(net, IP_VS_STATE_BACKUP); | 1675 | stop_sync_thread(net, IP_VS_STATE_BACKUP); |
1681 | } | 1676 | } |