diff options
Diffstat (limited to 'net/ipv6/sysctl_net_ipv6.c')
-rw-r--r-- | net/ipv6/sysctl_net_ipv6.c | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c new file mode 100644 index 000000000000..3a18e0e6ffed --- /dev/null +++ b/net/ipv6/sysctl_net_ipv6.c | |||
@@ -0,0 +1,125 @@ | |||
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/config.h> | ||
11 | #include <linux/in6.h> | ||
12 | #include <linux/ipv6.h> | ||
13 | #include <net/ndisc.h> | ||
14 | #include <net/ipv6.h> | ||
15 | #include <net/addrconf.h> | ||
16 | |||
17 | extern ctl_table ipv6_route_table[]; | ||
18 | extern ctl_table ipv6_icmp_table[]; | ||
19 | |||
20 | #ifdef CONFIG_SYSCTL | ||
21 | |||
22 | static ctl_table ipv6_table[] = { | ||
23 | { | ||
24 | .ctl_name = NET_IPV6_ROUTE, | ||
25 | .procname = "route", | ||
26 | .maxlen = 0, | ||
27 | .mode = 0555, | ||
28 | .child = ipv6_route_table | ||
29 | }, | ||
30 | { | ||
31 | .ctl_name = NET_IPV6_ICMP, | ||
32 | .procname = "icmp", | ||
33 | .maxlen = 0, | ||
34 | .mode = 0555, | ||
35 | .child = ipv6_icmp_table | ||
36 | }, | ||
37 | { | ||
38 | .ctl_name = NET_IPV6_BINDV6ONLY, | ||
39 | .procname = "bindv6only", | ||
40 | .data = &sysctl_ipv6_bindv6only, | ||
41 | .maxlen = sizeof(int), | ||
42 | .mode = 0644, | ||
43 | .proc_handler = &proc_dointvec | ||
44 | }, | ||
45 | { | ||
46 | .ctl_name = NET_IPV6_IP6FRAG_HIGH_THRESH, | ||
47 | .procname = "ip6frag_high_thresh", | ||
48 | .data = &sysctl_ip6frag_high_thresh, | ||
49 | .maxlen = sizeof(int), | ||
50 | .mode = 0644, | ||
51 | .proc_handler = &proc_dointvec | ||
52 | }, | ||
53 | { | ||
54 | .ctl_name = NET_IPV6_IP6FRAG_LOW_THRESH, | ||
55 | .procname = "ip6frag_low_thresh", | ||
56 | .data = &sysctl_ip6frag_low_thresh, | ||
57 | .maxlen = sizeof(int), | ||
58 | .mode = 0644, | ||
59 | .proc_handler = &proc_dointvec | ||
60 | }, | ||
61 | { | ||
62 | .ctl_name = NET_IPV6_IP6FRAG_TIME, | ||
63 | .procname = "ip6frag_time", | ||
64 | .data = &sysctl_ip6frag_time, | ||
65 | .maxlen = sizeof(int), | ||
66 | .mode = 0644, | ||
67 | .proc_handler = &proc_dointvec_jiffies, | ||
68 | .strategy = &sysctl_jiffies, | ||
69 | }, | ||
70 | { | ||
71 | .ctl_name = NET_IPV6_IP6FRAG_SECRET_INTERVAL, | ||
72 | .procname = "ip6frag_secret_interval", | ||
73 | .data = &sysctl_ip6frag_secret_interval, | ||
74 | .maxlen = sizeof(int), | ||
75 | .mode = 0644, | ||
76 | .proc_handler = &proc_dointvec_jiffies, | ||
77 | .strategy = &sysctl_jiffies | ||
78 | }, | ||
79 | { | ||
80 | .ctl_name = NET_IPV6_MLD_MAX_MSF, | ||
81 | .procname = "mld_max_msf", | ||
82 | .data = &sysctl_mld_max_msf, | ||
83 | .maxlen = sizeof(int), | ||
84 | .mode = 0644, | ||
85 | .proc_handler = &proc_dointvec | ||
86 | }, | ||
87 | { .ctl_name = 0 } | ||
88 | }; | ||
89 | |||
90 | static struct ctl_table_header *ipv6_sysctl_header; | ||
91 | |||
92 | static ctl_table ipv6_net_table[] = { | ||
93 | { | ||
94 | .ctl_name = NET_IPV6, | ||
95 | .procname = "ipv6", | ||
96 | .mode = 0555, | ||
97 | .child = ipv6_table | ||
98 | }, | ||
99 | { .ctl_name = 0 } | ||
100 | }; | ||
101 | |||
102 | static ctl_table ipv6_root_table[] = { | ||
103 | { | ||
104 | .ctl_name = CTL_NET, | ||
105 | .procname = "net", | ||
106 | .mode = 0555, | ||
107 | .child = ipv6_net_table | ||
108 | }, | ||
109 | { .ctl_name = 0 } | ||
110 | }; | ||
111 | |||
112 | void ipv6_sysctl_register(void) | ||
113 | { | ||
114 | ipv6_sysctl_header = register_sysctl_table(ipv6_root_table, 0); | ||
115 | } | ||
116 | |||
117 | void ipv6_sysctl_unregister(void) | ||
118 | { | ||
119 | unregister_sysctl_table(ipv6_sysctl_header); | ||
120 | } | ||
121 | |||
122 | #endif /* CONFIG_SYSCTL */ | ||
123 | |||
124 | |||
125 | |||