我想编辑运行内核中间的proc文件/proc/sys/net/ipv6/route/gc_interval的值。我想编辑这个proc文件值相对于另一个值的值。
根据文件net/ipv6/ndisc.c中函数ndisc_router_discovery的生存期值,我想在1和30之间切换gc_intervel的值。我在谷歌上搜索过,但只能找到一个新的proc条目。但此文件已存在。请告诉我如何在飞行中更改此文件的值。
编辑:我想通过编辑内核代码来做到这一点。我想在ndisc.c中添加一些额外的代码,根据生存期来更改gc_interval值
过程条目sys/net/ipv6/route/gc_interval
在net/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
文件是整数变量init_net.ipv6.sysctl.ip6_rt_gc_interval
的用户端表示,具有jiffies到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
结构
使用sysctl命令sudo sysctl -w net.ipv6.route.gc_interval=20
如果要使该值永久化,请将net.ipv6.route.gc_interval=20
附加到/etc/sysctl.conf
文件
或者只是:
echo 20 > /proc/sys/net/ipv6/route/gc_interval
/etc/sysctl.conf允许在系统启动时执行此操作。