xref: /openbmc/linux/net/ipv6/sysctl_net_ipv6.c (revision c537b994)
1 /*
2  * sysctl_net_ipv6.c: sysctl interface to net IPV6 subsystem.
3  *
4  * Changes:
5  * YOSHIFUJI Hideaki @USAGI:	added icmp sysctl table.
6  */
7 
8 #include <linux/mm.h>
9 #include <linux/sysctl.h>
10 #include <linux/in6.h>
11 #include <linux/ipv6.h>
12 #include <net/ndisc.h>
13 #include <net/ipv6.h>
14 #include <net/addrconf.h>
15 
16 #ifdef CONFIG_SYSCTL
17 
18 static ctl_table ipv6_table[] = {
19 	{
20 		.ctl_name	= NET_IPV6_ROUTE,
21 		.procname	= "route",
22 		.maxlen		= 0,
23 		.mode		= 0555,
24 		.child		= ipv6_route_table
25 	},
26 	{
27 		.ctl_name	= NET_IPV6_ICMP,
28 		.procname	= "icmp",
29 		.maxlen		= 0,
30 		.mode		= 0555,
31 		.child		= ipv6_icmp_table
32 	},
33 	{
34 		.ctl_name	= NET_IPV6_BINDV6ONLY,
35 		.procname	= "bindv6only",
36 		.data		= &sysctl_ipv6_bindv6only,
37 		.maxlen		= sizeof(int),
38 		.mode		= 0644,
39 		.proc_handler	= &proc_dointvec
40 	},
41 	{
42 		.ctl_name	= NET_IPV6_IP6FRAG_HIGH_THRESH,
43 		.procname	= "ip6frag_high_thresh",
44 		.data		= &sysctl_ip6frag_high_thresh,
45 		.maxlen		= sizeof(int),
46 		.mode		= 0644,
47 		.proc_handler	= &proc_dointvec
48 	},
49 	{
50 		.ctl_name	= NET_IPV6_IP6FRAG_LOW_THRESH,
51 		.procname	= "ip6frag_low_thresh",
52 		.data		= &sysctl_ip6frag_low_thresh,
53 		.maxlen		= sizeof(int),
54 		.mode		= 0644,
55 		.proc_handler	= &proc_dointvec
56 	},
57 	{
58 		.ctl_name	= NET_IPV6_IP6FRAG_TIME,
59 		.procname	= "ip6frag_time",
60 		.data		= &sysctl_ip6frag_time,
61 		.maxlen		= sizeof(int),
62 		.mode		= 0644,
63 		.proc_handler	= &proc_dointvec_jiffies,
64 		.strategy	= &sysctl_jiffies,
65 	},
66 	{
67 		.ctl_name	= NET_IPV6_IP6FRAG_SECRET_INTERVAL,
68 		.procname	= "ip6frag_secret_interval",
69 		.data		= &sysctl_ip6frag_secret_interval,
70 		.maxlen		= sizeof(int),
71 		.mode		= 0644,
72 		.proc_handler	= &proc_dointvec_jiffies,
73 		.strategy	= &sysctl_jiffies
74 	},
75 	{
76 		.ctl_name	= NET_IPV6_MLD_MAX_MSF,
77 		.procname	= "mld_max_msf",
78 		.data		= &sysctl_mld_max_msf,
79 		.maxlen		= sizeof(int),
80 		.mode		= 0644,
81 		.proc_handler	= &proc_dointvec
82 	},
83 	{ .ctl_name = 0 }
84 };
85 
86 static struct ctl_table_header *ipv6_sysctl_header;
87 
88 static ctl_table ipv6_net_table[] = {
89 	{
90 		.ctl_name	= NET_IPV6,
91 		.procname	= "ipv6",
92 		.mode		= 0555,
93 		.child		= ipv6_table
94 	},
95 	{ .ctl_name = 0 }
96 };
97 
98 static ctl_table ipv6_root_table[] = {
99 	{
100 		.ctl_name	= CTL_NET,
101 		.procname	= "net",
102 		.mode		= 0555,
103 		.child		= ipv6_net_table
104 	},
105 	{ .ctl_name = 0 }
106 };
107 
108 void ipv6_sysctl_register(void)
109 {
110 	ipv6_sysctl_header = register_sysctl_table(ipv6_root_table);
111 }
112 
113 void ipv6_sysctl_unregister(void)
114 {
115 	unregister_sysctl_table(ipv6_sysctl_header);
116 }
117 
118 #endif /* CONFIG_SYSCTL */
119 
120 
121 
122