Commit 3e30e026 authored by David S. Miller's avatar David S. Miller

Merge nuts.davemloft.net:/disk1/BK/network-2.6

into nuts.davemloft.net:/disk1/BK/net-2.6
parents 9df1b883 5acf03f8
This diff is collapsed.
...@@ -108,29 +108,50 @@ struct ip_vs_lblc_table { ...@@ -108,29 +108,50 @@ struct ip_vs_lblc_table {
/* /*
* IPVS LBLC sysctl table * IPVS LBLC sysctl table
*/ */
struct ip_vs_lblc_sysctl_table {
struct ctl_table_header *sysctl_header; static ctl_table vs_vars_table[] = {
ctl_table vs_vars[2]; {
ctl_table vs_dir[2]; .ctl_name = NET_IPV4_VS_LBLC_EXPIRE,
ctl_table ipv4_dir[2]; .procname = "lblc_expiration",
ctl_table root_dir[2]; .data = &sysctl_ip_vs_lblc_expiration,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec_jiffies,
},
{ .ctl_name = 0 }
};
static ctl_table vs_table[] = {
{
.ctl_name = NET_IPV4_VS,
.procname = "vs",
.mode = 0555,
.child = vs_vars_table
},
{ .ctl_name = 0 }
}; };
static ctl_table ipv4_table[] = {
{
.ctl_name = NET_IPV4,
.procname = "ipv4",
.mode = 0555,
.child = vs_table
},
{ .ctl_name = 0 }
};
static struct ip_vs_lblc_sysctl_table lblc_sysctl_table = { static ctl_table lblc_root_table[] = {
NULL, {
{{NET_IPV4_VS_LBLC_EXPIRE, "lblc_expiration", .ctl_name = CTL_NET,
&sysctl_ip_vs_lblc_expiration, .procname = "net",
sizeof(int), 0644, NULL, &proc_dointvec_jiffies}, .mode = 0555,
{0}}, .child = ipv4_table
{{NET_IPV4_VS, "vs", NULL, 0, 0555, lblc_sysctl_table.vs_vars}, },
{0}}, { .ctl_name = 0 }
{{NET_IPV4, "ipv4", NULL, 0, 0555, lblc_sysctl_table.vs_dir},
{0}},
{{CTL_NET, "net", NULL, 0, 0555, lblc_sysctl_table.ipv4_dir},
{0}}
}; };
static struct ctl_table_header * sysctl_header;
/* /*
* new/free a ip_vs_lblc_entry, which is a mapping of a destionation * new/free a ip_vs_lblc_entry, which is a mapping of a destionation
...@@ -586,15 +607,14 @@ static struct ip_vs_scheduler ip_vs_lblc_scheduler = ...@@ -586,15 +607,14 @@ static struct ip_vs_scheduler ip_vs_lblc_scheduler =
static int __init ip_vs_lblc_init(void) static int __init ip_vs_lblc_init(void)
{ {
INIT_LIST_HEAD(&ip_vs_lblc_scheduler.n_list); INIT_LIST_HEAD(&ip_vs_lblc_scheduler.n_list);
lblc_sysctl_table.sysctl_header = sysctl_header = register_sysctl_table(lblc_root_table, 0);
register_sysctl_table(lblc_sysctl_table.root_dir, 0);
return register_ip_vs_scheduler(&ip_vs_lblc_scheduler); return register_ip_vs_scheduler(&ip_vs_lblc_scheduler);
} }
static void __exit ip_vs_lblc_cleanup(void) static void __exit ip_vs_lblc_cleanup(void)
{ {
unregister_sysctl_table(lblc_sysctl_table.sysctl_header); unregister_sysctl_table(sysctl_header);
unregister_ip_vs_scheduler(&ip_vs_lblc_scheduler); unregister_ip_vs_scheduler(&ip_vs_lblc_scheduler);
} }
......
...@@ -297,29 +297,50 @@ struct ip_vs_lblcr_table { ...@@ -297,29 +297,50 @@ struct ip_vs_lblcr_table {
/* /*
* IPVS LBLCR sysctl table * IPVS LBLCR sysctl table
*/ */
struct ip_vs_lblcr_sysctl_table {
struct ctl_table_header *sysctl_header; static ctl_table vs_vars_table[] = {
ctl_table vs_vars[2]; {
ctl_table vs_dir[2]; .ctl_name = NET_IPV4_VS_LBLCR_EXPIRE,
ctl_table ipv4_dir[2]; .procname = "lblcr_expiration",
ctl_table root_dir[2]; .data = &sysctl_ip_vs_lblcr_expiration,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec_jiffies,
},
{ .ctl_name = 0 }
};
static ctl_table vs_table[] = {
{
.ctl_name = NET_IPV4_VS,
.procname = "vs",
.mode = 0555,
.child = vs_vars_table
},
{ .ctl_name = 0 }
}; };
static ctl_table ipv4_table[] = {
{
.ctl_name = NET_IPV4,
.procname = "ipv4",
.mode = 0555,
.child = vs_table
},
{ .ctl_name = 0 }
};
static struct ip_vs_lblcr_sysctl_table lblcr_sysctl_table = { static ctl_table lblcr_root_table[] = {
NULL, {
{{NET_IPV4_VS_LBLCR_EXPIRE, "lblcr_expiration", .ctl_name = CTL_NET,
&sysctl_ip_vs_lblcr_expiration, .procname = "net",
sizeof(int), 0644, NULL, &proc_dointvec_jiffies}, .mode = 0555,
{0}}, .child = ipv4_table
{{NET_IPV4_VS, "vs", NULL, 0, 0555, lblcr_sysctl_table.vs_vars}, },
{0}}, { .ctl_name = 0 }
{{NET_IPV4, "ipv4", NULL, 0, 0555, lblcr_sysctl_table.vs_dir},
{0}},
{{CTL_NET, "net", NULL, 0, 0555, lblcr_sysctl_table.ipv4_dir},
{0}}
}; };
static struct ctl_table_header * sysctl_header;
/* /*
* new/free a ip_vs_lblcr_entry, which is a mapping of a destination * new/free a ip_vs_lblcr_entry, which is a mapping of a destination
...@@ -844,8 +865,7 @@ static struct ip_vs_scheduler ip_vs_lblcr_scheduler = ...@@ -844,8 +865,7 @@ static struct ip_vs_scheduler ip_vs_lblcr_scheduler =
static int __init ip_vs_lblcr_init(void) static int __init ip_vs_lblcr_init(void)
{ {
INIT_LIST_HEAD(&ip_vs_lblcr_scheduler.n_list); INIT_LIST_HEAD(&ip_vs_lblcr_scheduler.n_list);
lblcr_sysctl_table.sysctl_header = sysctl_header = register_sysctl_table(lblcr_root_table, 0);
register_sysctl_table(lblcr_sysctl_table.root_dir, 0);
#ifdef CONFIG_IP_VS_LBLCR_DEBUG #ifdef CONFIG_IP_VS_LBLCR_DEBUG
proc_net_create("ip_vs_lblcr", 0, ip_vs_lblcr_getinfo); proc_net_create("ip_vs_lblcr", 0, ip_vs_lblcr_getinfo);
#endif #endif
...@@ -858,7 +878,7 @@ static void __exit ip_vs_lblcr_cleanup(void) ...@@ -858,7 +878,7 @@ static void __exit ip_vs_lblcr_cleanup(void)
#ifdef CONFIG_IP_VS_LBLCR_DEBUG #ifdef CONFIG_IP_VS_LBLCR_DEBUG
proc_net_remove("ip_vs_lblcr"); proc_net_remove("ip_vs_lblcr");
#endif #endif
unregister_sysctl_table(lblcr_sysctl_table.sysctl_header); unregister_sysctl_table(sysctl_header);
unregister_ip_vs_scheduler(&ip_vs_lblcr_scheduler); unregister_ip_vs_scheduler(&ip_vs_lblcr_scheduler);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment