1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/* -*- linux-c -*-
* sysctl_net_ipv4.c: sysctl interface to net IPV4 subsystem.
*
* Begun April 1, 1996, Mike Shaver.
* Added /proc/sys/net/ipv4 directory entry (empty =) ). [MS]
*/
#include <linux/mm.h>
#include <linux/sysctl.h>
#include <net/ip.h>
/* From arp.c */
extern int sysctl_arp_res_time;
extern int sysctl_arp_dead_res_time;
extern int sysctl_arp_max_tries;
extern int sysctl_arp_timeout;
extern int sysctl_arp_check_interval;
extern int sysctl_arp_confirm_interval;
extern int sysctl_arp_confirm_timeout;
extern int sysctl_ip_forward;
extern int sysctl_ip_dynaddr;
static int proc_doipforward(ctl_table *ctl, int write, struct file *filp,
void *buffer, size_t *lenp)
{
int val = sysctl_ip_forward;
int retv;
retv = proc_dointvec(ctl, write, filp, buffer, lenp);
if (write) {
if (sysctl_ip_forward && !val) {
printk(KERN_INFO "sysctl: ip forwarding enabled\n");
ip_statistics.IpForwarding = 1;
}
if (!sysctl_ip_forward && val) {
printk(KERN_INFO "sysctl: ip forwarding off\n");
ip_statistics.IpForwarding = 2;
}
}
return retv;
}
ctl_table ipv4_table[] = {
{NET_IPV4_ARP_RES_TIME, "arp_res_time",
&sysctl_arp_res_time, sizeof(int), 0644, NULL, &proc_dointvec},
{NET_IPV4_ARP_DEAD_RES_TIME, "arp_dead_res_time",
&sysctl_arp_dead_res_time, sizeof(int), 0644, NULL, &proc_dointvec},
{NET_IPV4_ARP_MAX_TRIES, "arp_max_tries",
&sysctl_arp_max_tries, sizeof(int), 0644, NULL, &proc_dointvec},
{NET_IPV4_ARP_TIMEOUT, "arp_timeout",
&sysctl_arp_timeout, sizeof(int), 0644, NULL, &proc_dointvec},
{NET_IPV4_ARP_CHECK_INTERVAL, "arp_check_interval",
&sysctl_arp_check_interval, sizeof(int), 0644, NULL, &proc_dointvec},
{NET_IPV4_ARP_CONFIRM_INTERVAL, "arp_confirm_interval",
&sysctl_arp_confirm_interval, sizeof(int), 0644, NULL,
&proc_dointvec},
{NET_IPV4_ARP_CONFIRM_TIMEOUT, "arp_confirm_timeout",
&sysctl_arp_confirm_timeout, sizeof(int), 0644, NULL,
&proc_dointvec},
{NET_IPV4_FORWARD, "ip_forward", &sysctl_ip_forward, sizeof(int),
0644, NULL, &proc_doipforward },
{NET_IPV4_DYNADDR, "ip_dynaddr",
&sysctl_ip_dynaddr, sizeof(int), 0644, NULL, &proc_dointvec},
{0}
};
|