2012-07-18 106 views
0

我想编辑正在运行的内核中间的proc文件/ proc/sys/net/ipv6/route/gc_interval的值。我想编辑这个proc文件值相对于另一个值的值。如何编辑proc文件?

根据功能ndisc_router_discovery的文件网/ IPV6/ndisc.c终身价值,我想我切换在谷歌搜索gc_intervel的1到30之间的值,但我能找到的只有创建一个新的proc入口。但是这个文件已经存在了。请告诉我如何改变这个文件的价值。

编辑: 我想通过编辑内核代码来做到这一点。我想加入到ndisc.c一些额外的代码,即根据生命周期改变gc_interval值

+0

只需写入(使用'echo(1)'或'write(2)')即可。 – Dave 2012-07-18 06:42:27

回答

2

的proc入口sys/net/ipv6/route/gc_intervalnet/ipv6/route.c定义:

{ 
    .procname = "gc_interval", 
    .data  = &init_net.ipv6.sysctl.ip6_rt_gc_interval, 
    .maxlen  = sizeof(int), 
    .mode  = 0644, 
    .proc_handler = proc_dointvec_jiffies, 
} 

所以gc_interval文件是用户-LA nd表示整数变量init_net.ipv6.sysctl.ip6_rt_gc_interval,以jiffies-to-seconds转换(变量存储在jiffies中,而proc条目以秒为单位处理该值)

如果需要以编程方式更改内核中的值,需要改变变量:

... 
init_net.ipv6.sysctl.ip6_rt_gc_interval = new_gc_interval_sec * HZ; 
... 

注:

  • 内核的引用都是基于Linux 3.4.5来源
  • <net/net_namespace.h>应包括访问init_net结构
0

使用sysctl命令sudo sysctl -w net.ipv6.route.gc_interval=20

如果你想使这个值permenant追加net.ipv6.route.gc_interval=20/etc/sysctl.conf文件

0

或者只是:

echo 20 > /proc/sys/net/ipv6/route/gc_interval 

/etc/sysctl.conf中允许这样做是在系统启动时的。

+0

当然你是对的。我们可以在/etc/rc.local中添加这一行,并完成所有事情。但是我的问题是我想在机器接收路由器广告时更改该值。所以这种方法不适合我。无论如何感谢您的参与:-) – theB 2012-07-18 08:34:59