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

Commit 0443929f authored by Simon Horman's avatar Simon Horman Committed by Patrick McHardy
Browse files

IPVS: Allow compilation with CONFIG_SYSCTL disabled



This is a rather naieve approach to allowing PVS to compile with
CONFIG_SYSCTL disabled.  I am working on a more comprehensive patch which
will remove compilation of all sysctl-related IPVS code when CONFIG_SYSCTL
is disabled.

Reported-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
Acked-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: default avatarHans Schillstrom <hans@schillstrom.com>
Tested-by: default avatarHans Schillstrom <hans@schillstrom.com>
Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
parent a1367647
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -3552,10 +3552,15 @@ int __net_init __ip_vs_control_init(struct net *net)
	tbl[idx++].data = &ipvs->sysctl_nat_icmp_send;


#ifdef CONFIG_SYSCTL
	ipvs->sysctl_hdr = register_net_sysctl_table(net, net_vs_ctl_path,
						     tbl);
	if (ipvs->sysctl_hdr == NULL)
		goto err_reg;
	if (ipvs->sysctl_hdr == NULL) {
		if (!net_eq(net, &init_net))
			kfree(tbl);
		goto err_dup;
	}
#endif
	ip_vs_new_estimator(net, ipvs->tot_stats);
	ipvs->sysctl_tbl = tbl;
	/* Schedule defense work */
@@ -3563,9 +3568,6 @@ int __net_init __ip_vs_control_init(struct net *net)
	schedule_delayed_work(&ipvs->defense_work, DEFENSE_TIMER_PERIOD);
	return 0;

err_reg:
	if (!net_eq(net, &init_net))
		kfree(tbl);
err_dup:
	free_percpu(ipvs->cpustats);
err_alloc:
@@ -3581,7 +3583,9 @@ static void __net_exit __ip_vs_control_cleanup(struct net *net)
	ip_vs_kill_estimator(net, ipvs->tot_stats);
	cancel_delayed_work_sync(&ipvs->defense_work);
	cancel_work_sync(&ipvs->defense_work.work);
#ifdef CONFIG_SYSCTL
	unregister_net_sysctl_table(ipvs->sysctl_hdr);
#endif
	proc_net_remove(net, "ip_vs_stats_percpu");
	proc_net_remove(net, "ip_vs_stats");
	proc_net_remove(net, "ip_vs");
+10 −10
Original line number Diff line number Diff line
@@ -554,33 +554,33 @@ static int __net_init __ip_vs_lblc_init(struct net *net)
						sizeof(vs_vars_table),
						GFP_KERNEL);
		if (ipvs->lblc_ctl_table == NULL)
			goto err_dup;
			return -ENOMEM;
	} else
		ipvs->lblc_ctl_table = vs_vars_table;
	ipvs->sysctl_lblc_expiration = 24*60*60*HZ;
	ipvs->lblc_ctl_table[0].data = &ipvs->sysctl_lblc_expiration;

#ifdef CONFIG_SYSCTL
	ipvs->lblc_ctl_header =
		register_net_sysctl_table(net, net_vs_ctl_path,
					  ipvs->lblc_ctl_table);
	if (!ipvs->lblc_ctl_header)
		goto err_reg;

	return 0;

err_reg:
	if (!ipvs->lblc_ctl_header) {
		if (!net_eq(net, &init_net))
			kfree(ipvs->lblc_ctl_table);

err_dup:
		return -ENOMEM;
	}
#endif

	return 0;
}

static void __net_exit __ip_vs_lblc_exit(struct net *net)
{
	struct netns_ipvs *ipvs = net_ipvs(net);

#ifdef CONFIG_SYSCTL
	unregister_net_sysctl_table(ipvs->lblc_ctl_header);
#endif

	if (!net_eq(net, &init_net))
		kfree(ipvs->lblc_ctl_table);
+10 −10
Original line number Diff line number Diff line
@@ -754,33 +754,33 @@ static int __net_init __ip_vs_lblcr_init(struct net *net)
						sizeof(vs_vars_table),
						GFP_KERNEL);
		if (ipvs->lblcr_ctl_table == NULL)
			goto err_dup;
			return -ENOMEM;
	} else
		ipvs->lblcr_ctl_table = vs_vars_table;
	ipvs->sysctl_lblcr_expiration = 24*60*60*HZ;
	ipvs->lblcr_ctl_table[0].data = &ipvs->sysctl_lblcr_expiration;

#ifdef CONFIG_SYSCTL
	ipvs->lblcr_ctl_header =
		register_net_sysctl_table(net, net_vs_ctl_path,
					  ipvs->lblcr_ctl_table);
	if (!ipvs->lblcr_ctl_header)
		goto err_reg;

	return 0;

err_reg:
	if (!ipvs->lblcr_ctl_header) {
		if (!net_eq(net, &init_net))
			kfree(ipvs->lblcr_ctl_table);

err_dup:
		return -ENOMEM;
	}
#endif

	return 0;
}

static void __net_exit __ip_vs_lblcr_exit(struct net *net)
{
	struct netns_ipvs *ipvs = net_ipvs(net);

#ifdef CONFIG_SYSCTL
	unregister_net_sysctl_table(ipvs->lblcr_ctl_header);
#endif

	if (!net_eq(net, &init_net))
		kfree(ipvs->lblcr_ctl_table);