2005-04-17 02:20:36 +04:00
/*
* sysctl_net_ipv6 . c : sysctl interface to net IPV6 subsystem .
*
* Changes :
* YOSHIFUJI Hideaki @ USAGI : added icmp sysctl table .
*/
# include <linux/mm.h>
# include <linux/sysctl.h>
# include <linux/in6.h>
# include <linux/ipv6.h>
# include <net/ndisc.h>
# include <net/ipv6.h>
# include <net/addrconf.h>
2007-10-15 13:33:45 +04:00
# include <net/inet_frag.h>
2005-04-17 02:20:36 +04:00
static ctl_table ipv6_table [ ] = {
{
. ctl_name = NET_IPV6_ROUTE ,
. procname = " route " ,
. maxlen = 0 ,
. mode = 0555 ,
. child = ipv6_route_table
} ,
{
. ctl_name = NET_IPV6_ICMP ,
. procname = " icmp " ,
. maxlen = 0 ,
. mode = 0555 ,
. child = ipv6_icmp_table
} ,
{
. ctl_name = NET_IPV6_BINDV6ONLY ,
. procname = " bindv6only " ,
. data = & sysctl_ipv6_bindv6only ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec
} ,
{
. ctl_name = NET_IPV6_IP6FRAG_HIGH_THRESH ,
. procname = " ip6frag_high_thresh " ,
2007-10-15 13:33:45 +04:00
. data = & ip6_frags_ctl . high_thresh ,
2005-04-17 02:20:36 +04:00
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec
} ,
{
. ctl_name = NET_IPV6_IP6FRAG_LOW_THRESH ,
. procname = " ip6frag_low_thresh " ,
2007-10-15 13:33:45 +04:00
. data = & ip6_frags_ctl . low_thresh ,
2005-04-17 02:20:36 +04:00
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec
} ,
{
. ctl_name = NET_IPV6_IP6FRAG_TIME ,
. procname = " ip6frag_time " ,
2007-10-15 13:33:45 +04:00
. data = & ip6_frags_ctl . timeout ,
2005-04-17 02:20:36 +04:00
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec_jiffies ,
. strategy = & sysctl_jiffies ,
} ,
{
. ctl_name = NET_IPV6_IP6FRAG_SECRET_INTERVAL ,
. procname = " ip6frag_secret_interval " ,
2007-10-15 13:33:45 +04:00
. data = & ip6_frags_ctl . secret_interval ,
2005-04-17 02:20:36 +04:00
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec_jiffies ,
. strategy = & sysctl_jiffies
} ,
{
. ctl_name = NET_IPV6_MLD_MAX_MSF ,
. procname = " mld_max_msf " ,
. data = & sysctl_mld_max_msf ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec
} ,
{ . ctl_name = 0 }
} ;
2008-01-09 11:33:11 +03:00
struct ctl_path net_ipv6_ctl_path [ ] = {
2007-12-05 12:44:02 +03:00
{ . procname = " net " , . ctl_name = CTL_NET , } ,
{ . procname = " ipv6 " , . ctl_name = NET_IPV6 , } ,
{ } ,
2005-04-17 02:20:36 +04:00
} ;
2008-01-09 11:33:11 +03:00
EXPORT_SYMBOL_GPL ( net_ipv6_ctl_path ) ;
2005-04-17 02:20:36 +04:00
2007-12-05 12:44:02 +03:00
static struct ctl_table_header * ipv6_sysctl_header ;
2005-04-17 02:20:36 +04:00
2008-01-10 13:47:55 +03:00
int ipv6_sysctl_register ( void )
2005-04-17 02:20:36 +04:00
{
2008-01-09 11:33:11 +03:00
ipv6_sysctl_header = register_sysctl_paths ( net_ipv6_ctl_path ,
2008-01-10 13:47:55 +03:00
ipv6_table ) ;
if ( ! ipv6_sysctl_header )
return - ENOMEM ;
return 0 ;
2005-04-17 02:20:36 +04:00
}
void ipv6_sysctl_unregister ( void )
{
unregister_sysctl_table ( ipv6_sysctl_header ) ;
}