[cmaster-next] [PATCH 2/2] isisd: create the isis_circuit_prepare() helper function
Renato Westphal
renato at opensourcerouting.org
Mon Nov 28 16:02:18 EST 2016
This reduces code duplication and the likelihood of a bug like 186534
("isisd: fix loss of packets after circuit is brought up") to happen
again.
Signed-off-by: Renato Westphal <renato at opensourcerouting.org>
---
isisd/isis_circuit.c | 20 +++++++++++++-------
isisd/isis_circuit.h | 1 +
isisd/isis_pdu.c | 12 +-----------
3 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index 0332023..ea3f18a 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -607,6 +607,18 @@ isis_circuit_stream(struct isis_circuit *circuit, struct stream **stream)
}
}
+void
+isis_circuit_prepare (struct isis_circuit *circuit)
+{
+#ifdef GNU_LINUX
+ THREAD_READ_ON (master, circuit->t_read, isis_receive, circuit,
+ circuit->fd);
+#else
+ THREAD_TIMER_MSEC_ON (master, circuit->t_read, isis_receive, circuit,
+ listcount (circuit->area->circuit_list) * 100);
+#endif
+}
+
int
isis_circuit_up (struct isis_circuit *circuit)
{
@@ -716,13 +728,7 @@ isis_circuit_up (struct isis_circuit *circuit)
isis_circuit_stream(circuit, &circuit->rcv_stream);
isis_circuit_stream(circuit, &circuit->snd_stream);
-#ifdef GNU_LINUX
- THREAD_READ_ON (master, circuit->t_read, isis_receive, circuit,
- circuit->fd);
-#else
- THREAD_TIMER_MSEC_ON (master, circuit->t_read, isis_receive, circuit,
- listcount (circuit->area->circuit_list) * 100);
-#endif
+ isis_circuit_prepare (circuit);
circuit->lsp_queue = list_new ();
circuit->lsp_queue_last_cleared = time (NULL);
diff --git a/isisd/isis_circuit.h b/isisd/isis_circuit.h
index efe153f..035e558 100644
--- a/isisd/isis_circuit.h
+++ b/isisd/isis_circuit.h
@@ -168,6 +168,7 @@ void isis_circuit_add_addr (struct isis_circuit *circuit,
struct connected *conn);
void isis_circuit_del_addr (struct isis_circuit *circuit,
struct connected *conn);
+void isis_circuit_prepare (struct isis_circuit *circuit);
int isis_circuit_up (struct isis_circuit *circuit);
void isis_circuit_down (struct isis_circuit *);
void circuit_update_nlpids (struct isis_circuit *circuit);
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index 39d2df7..2965a97 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -2165,17 +2165,7 @@ isis_receive (struct thread *thread)
* prepare for next packet.
*/
if (!circuit->is_passive)
- {
-#ifdef GNU_LINUX
- THREAD_READ_ON (master, circuit->t_read, isis_receive, circuit,
- circuit->fd);
-#else
- circuit->t_read = thread_add_timer_msec (master, isis_receive, circuit,
- listcount
- (circuit->area->circuit_list) *
- 100);
-#endif
- }
+ isis_circuit_prepare (circuit);
return retval;
}
--
1.9.1
More information about the dev
mailing list