Skip to content

Commit

Permalink
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/gi…
Browse files Browse the repository at this point in the history
…t/horms/ipvs-next-2.6
  • Loading branch information
Patrick McHardy committed Jun 16, 2011
2 parents 1f2d9c9 + 6c8f794 commit 619c151
Show file tree
Hide file tree
Showing 9 changed files with 100 additions and 133 deletions.
34 changes: 13 additions & 21 deletions include/net/ip_vs.h
Original file line number Diff line number Diff line change
Expand Up @@ -836,8 +836,6 @@ struct netns_ipvs {
int num_services; /* no of virtual services */

rwlock_t rs_lock; /* real services table */
/* semaphore for IPVS sockopts. And, [gs]etsockopt may sleep. */
struct lock_class_key ctl_key; /* ctl_mutex debuging */
/* Trash for destinations */
struct list_head dest_trash;
/* Service counters */
Expand Down Expand Up @@ -1089,19 +1087,19 @@ ip_vs_control_add(struct ip_vs_conn *cp, struct ip_vs_conn *ctl_cp)
/*
* IPVS netns init & cleanup functions
*/
extern int __ip_vs_estimator_init(struct net *net);
extern int __ip_vs_control_init(struct net *net);
extern int __ip_vs_protocol_init(struct net *net);
extern int __ip_vs_app_init(struct net *net);
extern int __ip_vs_conn_init(struct net *net);
extern int __ip_vs_sync_init(struct net *net);
extern void __ip_vs_conn_cleanup(struct net *net);
extern void __ip_vs_app_cleanup(struct net *net);
extern void __ip_vs_protocol_cleanup(struct net *net);
extern void __ip_vs_control_cleanup(struct net *net);
extern void __ip_vs_estimator_cleanup(struct net *net);
extern void __ip_vs_sync_cleanup(struct net *net);
extern void __ip_vs_service_cleanup(struct net *net);
extern int ip_vs_estimator_net_init(struct net *net);
extern int ip_vs_control_net_init(struct net *net);
extern int ip_vs_protocol_net_init(struct net *net);
extern int ip_vs_app_net_init(struct net *net);
extern int ip_vs_conn_net_init(struct net *net);
extern int ip_vs_sync_net_init(struct net *net);
extern void ip_vs_conn_net_cleanup(struct net *net);
extern void ip_vs_app_net_cleanup(struct net *net);
extern void ip_vs_protocol_net_cleanup(struct net *net);
extern void ip_vs_control_net_cleanup(struct net *net);
extern void ip_vs_estimator_net_cleanup(struct net *net);
extern void ip_vs_sync_net_cleanup(struct net *net);
extern void ip_vs_service_net_cleanup(struct net *net);

/*
* IPVS application functions
Expand All @@ -1119,8 +1117,6 @@ extern void ip_vs_app_inc_put(struct ip_vs_app *inc);

extern int ip_vs_app_pkt_out(struct ip_vs_conn *, struct sk_buff *skb);
extern int ip_vs_app_pkt_in(struct ip_vs_conn *, struct sk_buff *skb);
extern int ip_vs_app_init(void);
extern void ip_vs_app_cleanup(void);

void ip_vs_bind_pe(struct ip_vs_service *svc, struct ip_vs_pe *pe);
void ip_vs_unbind_pe(struct ip_vs_service *svc);
Expand Down Expand Up @@ -1223,15 +1219,11 @@ extern int start_sync_thread(struct net *net, int state, char *mcast_ifn,
__u8 syncid);
extern int stop_sync_thread(struct net *net, int state);
extern void ip_vs_sync_conn(struct net *net, struct ip_vs_conn *cp);
extern int ip_vs_sync_init(void);
extern void ip_vs_sync_cleanup(void);


/*
* IPVS rate estimator prototypes (from ip_vs_est.c)
*/
extern int ip_vs_estimator_init(void);
extern void ip_vs_estimator_cleanup(void);
extern void ip_vs_start_estimator(struct net *net, struct ip_vs_stats *stats);
extern void ip_vs_stop_estimator(struct net *net, struct ip_vs_stats *stats);
extern void ip_vs_zero_estimator(struct ip_vs_stats *stats);
Expand Down
14 changes: 2 additions & 12 deletions net/netfilter/ipvs/ip_vs_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@ static const struct file_operations ip_vs_app_fops = {
};
#endif

int __net_init __ip_vs_app_init(struct net *net)
int __net_init ip_vs_app_net_init(struct net *net)
{
struct netns_ipvs *ipvs = net_ipvs(net);

Expand All @@ -585,17 +585,7 @@ int __net_init __ip_vs_app_init(struct net *net)
return 0;
}

void __net_exit __ip_vs_app_cleanup(struct net *net)
void __net_exit ip_vs_app_net_cleanup(struct net *net)
{
proc_net_remove(net, "ip_vs_app");
}

int __init ip_vs_app_init(void)
{
return 0;
}


void ip_vs_app_cleanup(void)
{
}
4 changes: 2 additions & 2 deletions net/netfilter/ipvs/ip_vs_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -1247,7 +1247,7 @@ static void ip_vs_conn_flush(struct net *net)
/*
* per netns init and exit
*/
int __net_init __ip_vs_conn_init(struct net *net)
int __net_init ip_vs_conn_net_init(struct net *net)
{
struct netns_ipvs *ipvs = net_ipvs(net);

Expand All @@ -1258,7 +1258,7 @@ int __net_init __ip_vs_conn_init(struct net *net)
return 0;
}

void __net_exit __ip_vs_conn_cleanup(struct net *net)
void __net_exit ip_vs_conn_net_cleanup(struct net *net)
{
/* flush all the connection entries first */
ip_vs_conn_flush(net);
Expand Down
71 changes: 25 additions & 46 deletions net/netfilter/ipvs/ip_vs_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1384,7 +1384,7 @@ ip_vs_in_icmp(struct sk_buff *skb, int *related, unsigned int hooknum)
offset += 2 * sizeof(__u16);
verdict = ip_vs_icmp_xmit(skb, cp, pp, offset, hooknum);

out:
out:
__ip_vs_conn_put(cp);

return verdict;
Expand Down Expand Up @@ -1891,22 +1891,22 @@ static int __net_init __ip_vs_init(struct net *net)
atomic_inc(&ipvs_netns_cnt);
net->ipvs = ipvs;

if (__ip_vs_estimator_init(net) < 0)
if (ip_vs_estimator_net_init(net) < 0)
goto estimator_fail;

if (__ip_vs_control_init(net) < 0)
if (ip_vs_control_net_init(net) < 0)
goto control_fail;

if (__ip_vs_protocol_init(net) < 0)
if (ip_vs_protocol_net_init(net) < 0)
goto protocol_fail;

if (__ip_vs_app_init(net) < 0)
if (ip_vs_app_net_init(net) < 0)
goto app_fail;

if (__ip_vs_conn_init(net) < 0)
if (ip_vs_conn_net_init(net) < 0)
goto conn_fail;

if (__ip_vs_sync_init(net) < 0)
if (ip_vs_sync_net_init(net) < 0)
goto sync_fail;

printk(KERN_INFO "IPVS: Creating netns size=%zu id=%d\n",
Expand All @@ -1917,35 +1917,35 @@ static int __net_init __ip_vs_init(struct net *net)
*/

sync_fail:
__ip_vs_conn_cleanup(net);
ip_vs_conn_net_cleanup(net);
conn_fail:
__ip_vs_app_cleanup(net);
ip_vs_app_net_cleanup(net);
app_fail:
__ip_vs_protocol_cleanup(net);
ip_vs_protocol_net_cleanup(net);
protocol_fail:
__ip_vs_control_cleanup(net);
ip_vs_control_net_cleanup(net);
control_fail:
__ip_vs_estimator_cleanup(net);
ip_vs_estimator_net_cleanup(net);
estimator_fail:
return -ENOMEM;
}

static void __net_exit __ip_vs_cleanup(struct net *net)
{
__ip_vs_service_cleanup(net); /* ip_vs_flush() with locks */
__ip_vs_conn_cleanup(net);
__ip_vs_app_cleanup(net);
__ip_vs_protocol_cleanup(net);
__ip_vs_control_cleanup(net);
__ip_vs_estimator_cleanup(net);
ip_vs_service_net_cleanup(net); /* ip_vs_flush() with locks */
ip_vs_conn_net_cleanup(net);
ip_vs_app_net_cleanup(net);
ip_vs_protocol_net_cleanup(net);
ip_vs_control_net_cleanup(net);
ip_vs_estimator_net_cleanup(net);
IP_VS_DBG(2, "ipvs netns %d released\n", net_ipvs(net)->gen);
}

static void __net_exit __ip_vs_dev_cleanup(struct net *net)
{
EnterFunction(2);
net_ipvs(net)->enable = 0; /* Disable packet reception */
__ip_vs_sync_cleanup(net);
ip_vs_sync_net_cleanup(net);
LeaveFunction(2);
}

Expand All @@ -1967,36 +1967,23 @@ static int __init ip_vs_init(void)
{
int ret;

ip_vs_estimator_init();
ret = ip_vs_control_init();
if (ret < 0) {
pr_err("can't setup control.\n");
goto cleanup_estimator;
goto exit;
}

ip_vs_protocol_init();

ret = ip_vs_app_init();
if (ret < 0) {
pr_err("can't setup application helper.\n");
goto cleanup_protocol;
}

ret = ip_vs_conn_init();
if (ret < 0) {
pr_err("can't setup connection table.\n");
goto cleanup_app;
}

ret = ip_vs_sync_init();
if (ret < 0) {
pr_err("can't setup sync data.\n");
goto cleanup_conn;
goto cleanup_protocol;
}

ret = register_pernet_subsys(&ipvs_core_ops); /* Alloc ip_vs struct */
if (ret < 0)
goto cleanup_sync;
goto cleanup_conn;

ret = register_pernet_device(&ipvs_core_dev_ops);
if (ret < 0)
Expand All @@ -2016,17 +2003,12 @@ static int __init ip_vs_init(void)
unregister_pernet_device(&ipvs_core_dev_ops);
cleanup_sub:
unregister_pernet_subsys(&ipvs_core_ops);
cleanup_sync:
ip_vs_sync_cleanup();
cleanup_conn:
cleanup_conn:
ip_vs_conn_cleanup();
cleanup_app:
ip_vs_app_cleanup();
cleanup_protocol:
cleanup_protocol:
ip_vs_protocol_cleanup();
ip_vs_control_cleanup();
cleanup_estimator:
ip_vs_estimator_cleanup();
exit:
return ret;
}

Expand All @@ -2035,12 +2017,9 @@ static void __exit ip_vs_cleanup(void)
nf_unregister_hooks(ip_vs_ops, ARRAY_SIZE(ip_vs_ops));
unregister_pernet_device(&ipvs_core_dev_ops);
unregister_pernet_subsys(&ipvs_core_ops); /* free ip_vs struct */
ip_vs_sync_cleanup();
ip_vs_conn_cleanup();
ip_vs_app_cleanup();
ip_vs_protocol_cleanup();
ip_vs_control_cleanup();
ip_vs_estimator_cleanup();
pr_info("ipvs unloaded.\n");
}

Expand Down
28 changes: 14 additions & 14 deletions net/netfilter/ipvs/ip_vs_ctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -1334,9 +1334,9 @@ ip_vs_edit_service(struct ip_vs_service *svc, struct ip_vs_service_user_kern *u)
ip_vs_bind_pe(svc, pe);
}

out_unlock:
out_unlock:
write_unlock_bh(&__ip_vs_svc_lock);
out:
out:
ip_vs_scheduler_put(old_sched);
ip_vs_pe_put(old_pe);
return ret;
Expand Down Expand Up @@ -1483,7 +1483,7 @@ static int ip_vs_flush(struct net *net)
* Delete service by {netns} in the service table.
* Called by __ip_vs_cleanup()
*/
void __ip_vs_service_cleanup(struct net *net)
void ip_vs_service_net_cleanup(struct net *net)
{
EnterFunction(2);
/* Check for "full" addressed entries */
Expand Down Expand Up @@ -1662,7 +1662,7 @@ proc_do_sync_mode(ctl_table *table, int write,
/*
* IPVS sysctl table (under the /proc/sys/net/ipv4/vs/)
* Do not change order or insert new entries without
* align with netns init in __ip_vs_control_init()
* align with netns init in ip_vs_control_net_init()
*/

static struct ctl_table vs_vars[] = {
Expand Down Expand Up @@ -2469,7 +2469,7 @@ __ip_vs_get_service_entries(struct net *net,
count++;
}
}
out:
out:
return ret;
}

Expand Down Expand Up @@ -2707,7 +2707,7 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
ret = -EINVAL;
}

out:
out:
mutex_unlock(&__ip_vs_mutex);
return ret;
}
Expand Down Expand Up @@ -3595,7 +3595,7 @@ static void ip_vs_genl_unregister(void)
* per netns intit/exit func.
*/
#ifdef CONFIG_SYSCTL
int __net_init __ip_vs_control_init_sysctl(struct net *net)
int __net_init ip_vs_control_net_init_sysctl(struct net *net)
{
int idx;
struct netns_ipvs *ipvs = net_ipvs(net);
Expand Down Expand Up @@ -3654,7 +3654,7 @@ int __net_init __ip_vs_control_init_sysctl(struct net *net)
return 0;
}

void __net_init __ip_vs_control_cleanup_sysctl(struct net *net)
void __net_init ip_vs_control_net_cleanup_sysctl(struct net *net)
{
struct netns_ipvs *ipvs = net_ipvs(net);

Expand All @@ -3665,16 +3665,16 @@ void __net_init __ip_vs_control_cleanup_sysctl(struct net *net)

#else

int __net_init __ip_vs_control_init_sysctl(struct net *net) { return 0; }
void __net_init __ip_vs_control_cleanup_sysctl(struct net *net) { }
int __net_init ip_vs_control_net_init_sysctl(struct net *net) { return 0; }
void __net_init ip_vs_control_net_cleanup_sysctl(struct net *net) { }

#endif

static struct notifier_block ip_vs_dst_notifier = {
.notifier_call = ip_vs_dst_event,
};

int __net_init __ip_vs_control_init(struct net *net)
int __net_init ip_vs_control_net_init(struct net *net)
{
int idx;
struct netns_ipvs *ipvs = net_ipvs(net);
Expand Down Expand Up @@ -3702,7 +3702,7 @@ int __net_init __ip_vs_control_init(struct net *net)
proc_net_fops_create(net, "ip_vs_stats_percpu", 0,
&ip_vs_stats_percpu_fops);

if (__ip_vs_control_init_sysctl(net))
if (ip_vs_control_net_init_sysctl(net))
goto err;

return 0;
Expand All @@ -3712,13 +3712,13 @@ int __net_init __ip_vs_control_init(struct net *net)
return -ENOMEM;
}

void __net_exit __ip_vs_control_cleanup(struct net *net)
void __net_exit ip_vs_control_net_cleanup(struct net *net)
{
struct netns_ipvs *ipvs = net_ipvs(net);

ip_vs_trash_cleanup(net);
ip_vs_stop_estimator(net, &ipvs->tot_stats);
__ip_vs_control_cleanup_sysctl(net);
ip_vs_control_net_cleanup_sysctl(net);
proc_net_remove(net, "ip_vs_stats_percpu");
proc_net_remove(net, "ip_vs_stats");
proc_net_remove(net, "ip_vs");
Expand Down
Loading

0 comments on commit 619c151

Please sign in to comment.