2 * sysctl_net_ipv6.c: sysctl interface to net IPV6 subsystem.
5 * YOSHIFUJI Hideaki @USAGI: added icmp sysctl table.
9 #include <linux/sysctl.h>
10 #include <linux/in6.h>
11 #include <linux/ipv6.h>
12 #include <net/ndisc.h>
14 #include <net/addrconf.h>
15 #include <net/inet_frag.h>
17 static ctl_table ipv6_table
[] = {
19 .ctl_name
= NET_IPV6_ROUTE
,
23 .child
= ipv6_route_table
26 .ctl_name
= NET_IPV6_ICMP
,
30 .child
= ipv6_icmp_table
33 .ctl_name
= NET_IPV6_BINDV6ONLY
,
34 .procname
= "bindv6only",
35 .data
= &sysctl_ipv6_bindv6only
,
36 .maxlen
= sizeof(int),
38 .proc_handler
= &proc_dointvec
41 .ctl_name
= NET_IPV6_IP6FRAG_HIGH_THRESH
,
42 .procname
= "ip6frag_high_thresh",
43 .data
= &ip6_frags_ctl
.high_thresh
,
44 .maxlen
= sizeof(int),
46 .proc_handler
= &proc_dointvec
49 .ctl_name
= NET_IPV6_IP6FRAG_LOW_THRESH
,
50 .procname
= "ip6frag_low_thresh",
51 .data
= &ip6_frags_ctl
.low_thresh
,
52 .maxlen
= sizeof(int),
54 .proc_handler
= &proc_dointvec
57 .ctl_name
= NET_IPV6_IP6FRAG_TIME
,
58 .procname
= "ip6frag_time",
59 .data
= &ip6_frags_ctl
.timeout
,
60 .maxlen
= sizeof(int),
62 .proc_handler
= &proc_dointvec_jiffies
,
63 .strategy
= &sysctl_jiffies
,
66 .ctl_name
= NET_IPV6_IP6FRAG_SECRET_INTERVAL
,
67 .procname
= "ip6frag_secret_interval",
68 .data
= &ip6_frags_ctl
.secret_interval
,
69 .maxlen
= sizeof(int),
71 .proc_handler
= &proc_dointvec_jiffies
,
72 .strategy
= &sysctl_jiffies
75 .ctl_name
= NET_IPV6_MLD_MAX_MSF
,
76 .procname
= "mld_max_msf",
77 .data
= &sysctl_mld_max_msf
,
78 .maxlen
= sizeof(int),
80 .proc_handler
= &proc_dointvec
85 static struct ctl_path ipv6_ctl_path
[] = {
86 { .procname
= "net", .ctl_name
= CTL_NET
, },
87 { .procname
= "ipv6", .ctl_name
= NET_IPV6
, },
91 static struct ctl_table_header
*ipv6_sysctl_header
;
93 void ipv6_sysctl_register(void)
95 ipv6_sysctl_header
= register_sysctl_paths(ipv6_ctl_path
, ipv6_table
);
98 void ipv6_sysctl_unregister(void)
100 unregister_sysctl_table(ipv6_sysctl_header
);