⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysctl_net_ipv4.c

📁 Linux Kernel 2.6.9 for OMAP1710
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * sysctl_net_ipv4.c: sysctl interface to net IPV4 subsystem. * * $Id: sysctl_net_ipv4.c,v 1.50 2001/10/20 00:00:11 davem Exp $ * * Begun April 1, 1996, Mike Shaver. * Added /proc/sys/net/ipv4 directory entry (empty =) ). [MS] */#include <linux/mm.h>#include <linux/module.h>#include <linux/sysctl.h>#include <linux/config.h>#include <net/snmp.h>#include <net/ip.h>#include <net/route.h>#include <net/tcp.h>/* From af_inet.c */extern int sysctl_ip_nonlocal_bind;/* From icmp.c */extern int sysctl_icmp_echo_ignore_all;extern int sysctl_icmp_echo_ignore_broadcasts;extern int sysctl_icmp_ignore_bogus_error_responses;/* From ip_fragment.c */extern int sysctl_ipfrag_low_thresh;extern int sysctl_ipfrag_high_thresh; extern int sysctl_ipfrag_time;extern int sysctl_ipfrag_secret_interval;/* From ip_output.c */extern int sysctl_ip_dynaddr;/* From icmp.c */extern int sysctl_icmp_ratelimit;extern int sysctl_icmp_ratemask;/* From igmp.c */extern int sysctl_igmp_max_memberships;extern int sysctl_igmp_max_msf;/* From inetpeer.c */extern int inet_peer_threshold;extern int inet_peer_minttl;extern int inet_peer_maxttl;extern int inet_peer_gc_mintime;extern int inet_peer_gc_maxtime;#ifdef CONFIG_SYSCTLstatic int tcp_retr1_max = 255; static int ip_local_port_range_min[] = { 1, 1 };static int ip_local_port_range_max[] = { 65535, 65535 };#endifstruct ipv4_config ipv4_config;extern ctl_table ipv4_route_table[];#ifdef CONFIG_SYSCTLstaticint ipv4_sysctl_forward(ctl_table *ctl, int write, struct file * filp,			void __user *buffer, size_t *lenp, loff_t *ppos){	int val = ipv4_devconf.forwarding;	int ret;	ret = proc_dointvec(ctl, write, filp, buffer, lenp, ppos);	if (write && ipv4_devconf.forwarding != val)		inet_forward_change();	return ret;}static int ipv4_sysctl_forward_strategy(ctl_table *table,			 int __user *name, int nlen,			 void __user *oldval, size_t __user *oldlenp,			 void __user *newval, size_t newlen, 			 void **context){	int *valp = table->data;	int new;	if (!newval || !newlen)		return 0;	if (newlen != sizeof(int))		return -EINVAL;	if (get_user(new, (int __user *)newval))		return -EFAULT;	if (new == *valp)		return 0;	if (oldval && oldlenp) {		size_t len;		if (get_user(len, oldlenp))			return -EFAULT;		if (len) {			if (len > table->maxlen)				len = table->maxlen;			if (copy_to_user(oldval, valp, len))				return -EFAULT;			if (put_user(len, oldlenp))				return -EFAULT;		}	}	*valp = new;	inet_forward_change();	return 1;}ctl_table ipv4_table[] = {        {		.ctl_name	= NET_IPV4_TCP_TIMESTAMPS,		.procname	= "tcp_timestamps",		.data		= &sysctl_tcp_timestamps,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},        {		.ctl_name	= NET_IPV4_TCP_WINDOW_SCALING,		.procname	= "tcp_window_scaling",		.data		= &sysctl_tcp_window_scaling,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},        {		.ctl_name	= NET_IPV4_TCP_SACK,		.procname	= "tcp_sack",		.data		= &sysctl_tcp_sack,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},        {		.ctl_name	= NET_IPV4_TCP_RETRANS_COLLAPSE,		.procname	= "tcp_retrans_collapse",		.data		= &sysctl_tcp_retrans_collapse,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},        {		.ctl_name	= NET_IPV4_FORWARD,		.procname	= "ip_forward",		.data		= &ipv4_devconf.forwarding,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &ipv4_sysctl_forward,		.strategy	= &ipv4_sysctl_forward_strategy	},        {		.ctl_name	= NET_IPV4_DEFAULT_TTL,		.procname	= "ip_default_ttl", 		.data		= &sysctl_ip_default_ttl,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &ipv4_doint_and_flush,		.strategy	= &ipv4_doint_and_flush_strategy,	},        {		.ctl_name	= NET_IPV4_AUTOCONFIG,		.procname	= "ip_autoconfig",		.data		= &ipv4_config.autoconfig,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},        {		.ctl_name	= NET_IPV4_NO_PMTU_DISC,		.procname	= "ip_no_pmtu_disc",		.data		= &ipv4_config.no_pmtu_disc,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_NONLOCAL_BIND,		.procname	= "ip_nonlocal_bind",		.data		= &sysctl_ip_nonlocal_bind,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_TCP_SYN_RETRIES,		.procname	= "tcp_syn_retries",		.data		= &sysctl_tcp_syn_retries,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_TCP_SYNACK_RETRIES,		.procname	= "tcp_synack_retries",		.data		= &sysctl_tcp_synack_retries,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_TCP_MAX_ORPHANS,		.procname	= "tcp_max_orphans",		.data		= &sysctl_tcp_max_orphans,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_TCP_MAX_TW_BUCKETS,		.procname	= "tcp_max_tw_buckets",		.data		= &sysctl_tcp_max_tw_buckets,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_IPFRAG_HIGH_THRESH,		.procname	= "ipfrag_high_thresh",		.data		= &sysctl_ipfrag_high_thresh,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_IPFRAG_LOW_THRESH,		.procname	= "ipfrag_low_thresh",		.data		= &sysctl_ipfrag_low_thresh,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_DYNADDR,		.procname	= "ip_dynaddr",		.data		= &sysctl_ip_dynaddr,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_IPFRAG_TIME,		.procname	= "ipfrag_time",		.data		= &sysctl_ipfrag_time,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec_jiffies,		.strategy	= &sysctl_jiffies	},	{		.ctl_name	= NET_IPV4_TCP_KEEPALIVE_TIME,		.procname	= "tcp_keepalive_time",		.data		= &sysctl_tcp_keepalive_time,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec_jiffies,		.strategy	= &sysctl_jiffies	},	{		.ctl_name	= NET_IPV4_TCP_KEEPALIVE_PROBES,		.procname	= "tcp_keepalive_probes",		.data		= &sysctl_tcp_keepalive_probes,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_TCP_KEEPALIVE_INTVL,		.procname	= "tcp_keepalive_intvl",		.data		= &sysctl_tcp_keepalive_intvl,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec_jiffies,		.strategy	= &sysctl_jiffies	},	{		.ctl_name	= NET_IPV4_TCP_RETRIES1,		.procname	= "tcp_retries1",		.data		= &sysctl_tcp_retries1,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec_minmax,		.strategy	= &sysctl_intvec,		.extra2		= &tcp_retr1_max	},	{		.ctl_name	= NET_IPV4_TCP_RETRIES2,		.procname	= "tcp_retries2",		.data		= &sysctl_tcp_retries2,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_IPV4_TCP_FIN_TIMEOUT,		.procname	= "tcp_fin_timeout",		.data		= &sysctl_tcp_fin_timeout,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec_jiffies,		.strategy	= &sysctl_jiffies	},#ifdef CONFIG_SYN_COOKIES	{		.ctl_name	= NET_TCP_SYNCOOKIES,		.procname	= "tcp_syncookies",		.data		= &sysctl_tcp_syncookies,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},#endif	{		.ctl_name	= NET_TCP_TW_RECYCLE,		.procname	= "tcp_tw_recycle",		.data		= &sysctl_tcp_tw_recycle,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_TCP_ABORT_ON_OVERFLOW,		.procname	= "tcp_abort_on_overflow",		.data		= &sysctl_tcp_abort_on_overflow,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},	{		.ctl_name	= NET_TCP_STDURG,		.procname	= "tcp_stdurg",		.data		= &sysctl_tcp_stdurg,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= &proc_dointvec	},

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -