通过将“ / sys / class / net / br0 / bridge / ageing_time”修改为最大值来设置老化时间。
# brctl showstp br0
br0
bridge id 8000.001018000000
designated root 8000.001018000000
....
ageing time 4294314.45
....
但是学习到的表格会同时过时。
检查代码,我在br_fdb.c中看到了一些溢出
static inline int has_expired(const struct net_bridge *br,
const struct net_bridge_fdb_entry *fdb)
{
return !fdb->is_static &&
(time_before_eq(fdb->updated + hold_time(br), jiffies));
}
fdb->updated + hold_time(br)
将被溢出,然后学习到的表将被视为超时。这是一个错误吗?
最佳答案
大概吧。但不应该是一个错误,而应该是一个不合适的地方。
如果您希望您的非静态FDB条目永不过期,但似乎此溢出将导致has_expired()返回TRUE。
在32位计算机上,正常情况下,每50天就会产生一次振铃声。那也会造成一些麻烦。但是我想有时候某些功能没有经过这么长时间的测试。
在32位计算机上,将time_before_eq()替换为time_before_eq64(),并进行一些从“无符号长整数”到“ u64”的变量定义。当然,在64位计算机上,一切都会好起来的。