diff options
author | Renato Westphal <renato@opensourcerouting.org> | 2016-11-25 00:28:03 +0100 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-11-25 01:56:59 +0100 |
commit | 18653436b7e7e5cb7a3ea8ba8a182598cbfbd247 (patch) | |
tree | 5b5a790b69a416ba82bc6f2b59f1b7aacb0e679a /isisd/isis_circuit.c | |
parent | lib: Fix nexthop strings to coincide with enum (diff) | |
download | frr-18653436b7e7e5cb7a3ea8ba8a182598cbfbd247.tar.xz frr-18653436b7e7e5cb7a3ea8ba8a182598cbfbd247.zip |
isisd: fix loss of packets after circuit is brought up
The last parameter of THREAD_TIMER_ON() is the timeout, and we were
using circuit->fd for that. So, when a circuit was brought up, isisd
would miss all received packets on this circuit for quite a few seconds,
slowing down the convergence process.
To fix this, use the same logic we use in isis_receive() to calculate
this timeout.
This bug doesn't happen on Linux, which uses a different method to read
packets from the network.
Fixes the following ANVL tests on FreeBSD: ISIS-17.1, ISIS-18.6 (and
probably others too).
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'isisd/isis_circuit.c')
-rw-r--r-- | isisd/isis_circuit.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index c2b7ec750..0332023f3 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -720,8 +720,8 @@ isis_circuit_up (struct isis_circuit *circuit) THREAD_READ_ON (master, circuit->t_read, isis_receive, circuit, circuit->fd); #else - THREAD_TIMER_ON (master, circuit->t_read, isis_receive, circuit, - circuit->fd); + THREAD_TIMER_MSEC_ON (master, circuit->t_read, isis_receive, circuit, + listcount (circuit->area->circuit_list) * 100); #endif circuit->lsp_queue = list_new (); |