xref: /openbmc/linux/net/ipv6/sysctl_net_ipv6.c (revision 96de0e252cedffad61b3cb5e05662c591898e69a)
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 #include <net/inet_frag.h>
16 
17 #ifdef CONFIG_SYSCTL
18 
19 static ctl_table ipv6_table[] = {
20 	{
21 		.ctl_name	= NET_IPV6_ROUTE,
22 		.procname	= "route",
23 		.maxlen		= 0,
24 		.mode		= 0555,
25 		.child		= ipv6_route_table
26 	},
27 	{
28 		.ctl_name	= NET_IPV6_ICMP,
29 		.procname	= "icmp",
30 		.maxlen		= 0,
31 		.mode		= 0555,
32 		.child		= ipv6_icmp_table
33 	},
34 	{
35 		.ctl_name	= NET_IPV6_BINDV6ONLY,
36 		.procname	= "bindv6only",
37 		.data		= &sysctl_ipv6_bindv6only,
38 		.maxlen		= sizeof(int),
39 		.mode		= 0644,
40 		.proc_handler	= &proc_dointvec
41 	},
42 	{
43 		.ctl_name	= NET_IPV6_IP6FRAG_HIGH_THRESH,
44 		.procname	= "ip6frag_high_thresh",
45 		.data		= &ip6_frags_ctl.high_thresh,
46 		.maxlen		= sizeof(int),
47 		.mode		= 0644,
48 		.proc_handler	= &proc_dointvec
49 	},
50 	{
51 		.ctl_name	= NET_IPV6_IP6FRAG_LOW_THRESH,
52 		.procname	= "ip6frag_low_thresh",
53 		.data		= &ip6_frags_ctl.low_thresh,
54 		.maxlen		= sizeof(int),
55 		.mode		= 0644,
56 		.proc_handler	= &proc_dointvec
57 	},
58 	{
59 		.ctl_name	= NET_IPV6_IP6FRAG_TIME,
60 		.procname	= "ip6frag_time",
61 		.data		= &ip6_frags_ctl.timeout,
62 		.maxlen		= sizeof(int),
63 		.mode		= 0644,
64 		.proc_handler	= &proc_dointvec_jiffies,
65 		.strategy	= &sysctl_jiffies,
66 	},
67 	{
68 		.ctl_name	= NET_IPV6_IP6FRAG_SECRET_INTERVAL,
69 		.procname	= "ip6frag_secret_interval",
70 		.data		= &ip6_frags_ctl.secret_interval,
71 		.maxlen		= sizeof(int),
72 		.mode		= 0644,
73 		.proc_handler	= &proc_dointvec_jiffies,
74 		.strategy	= &sysctl_jiffies
75 	},
76 	{
77 		.ctl_name	= NET_IPV6_MLD_MAX_MSF,
78 		.procname	= "mld_max_msf",
79 		.data		= &sysctl_mld_max_msf,
80 		.maxlen		= sizeof(int),
81 		.mode		= 0644,
82 		.proc_handler	= &proc_dointvec
83 	},
84 	{ .ctl_name = 0 }
85 };
86 
87 static struct ctl_table_header *ipv6_sysctl_header;
88 
89 static ctl_table ipv6_net_table[] = {
90 	{
91 		.ctl_name	= NET_IPV6,
92 		.procname	= "ipv6",
93 		.mode		= 0555,
94 		.child		= ipv6_table
95 	},
96 	{ .ctl_name = 0 }
97 };
98 
99 static ctl_table ipv6_root_table[] = {
100 	{
101 		.ctl_name	= CTL_NET,
102 		.procname	= "net",
103 		.mode		= 0555,
104 		.child		= ipv6_net_table
105 	},
106 	{ .ctl_name = 0 }
107 };
108 
109 void ipv6_sysctl_register(void)
110 {
111 	ipv6_sysctl_header = register_sysctl_table(ipv6_root_table);
112 }
113 
114 void ipv6_sysctl_unregister(void)
115 {
116 	unregister_sysctl_table(ipv6_sysctl_header);
117 }
118 
119 #endif /* CONFIG_SYSCTL */
120 
121 
122 
123