2014-02-18 2 views
0

Установите время старения, изменив значение «/ sys/class/net/br0/bridge/ageing_time» на максимальное значение.Мост Mac время старения обучения

# 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) будет переполнена, то узнал, таблица будет рассматриваться как истекло.

это ошибка?

ответ

0

Думаю, что так. Но не должно быть ошибкой, просто неприемлемым местом.

Если вы хотите, чтобы ваша нестатическая запись FDB никогда не истек, но кажется, что это переполнение вызовет has_expired(), возвращает TRUE.

На 32-битной машине обычно каждые двадцать дней будут обматываться. Это также вызовет некоторые проблемы. Но я предполагаю, что иногда некоторые функции не тестируются так долго.

На 32-разрядной машине замените time_before_eq() на time_before_eq64() и определите определение переменных с «unsigned long» на «u64». Конечно, на 64-битной машине все будет хорошо.

Смежные вопросы