summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_circuit.c20
-rw-r--r--isisd/isis_circuit.h1
-rw-r--r--isisd/isis_pdu.c44
3 files changed, 15 insertions, 50 deletions
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index c5812a658d..0ea6c3d453 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -606,6 +606,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)
{
@@ -715,13 +727,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 efe153f32e..035e558c0a 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 6fec498a4d..96e459a797 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -2134,41 +2134,6 @@ isis_handle_pdu (struct isis_circuit *circuit, u_char * ssnpa)
return retval;
}
-#ifdef GNU_LINUX
-int
-isis_receive (struct thread *thread)
-{
- struct isis_circuit *circuit;
- u_char ssnpa[ETH_ALEN];
- int retval;
-
- /*
- * Get the circuit
- */
- circuit = THREAD_ARG (thread);
- assert (circuit);
-
- isis_circuit_stream(circuit, &circuit->rcv_stream);
-
- retval = circuit->rx (circuit, ssnpa);
- circuit->t_read = NULL;
-
- if (retval == ISIS_OK)
- retval = isis_handle_pdu (circuit, ssnpa);
-
- /*
- * prepare for next packet.
- */
- if (!circuit->is_passive)
- {
- THREAD_READ_ON (master, circuit->t_read, isis_receive, circuit,
- circuit->fd);
- }
-
- return retval;
-}
-
-#else
int
isis_receive (struct thread *thread)
{
@@ -2195,18 +2160,11 @@ isis_receive (struct thread *thread)
* prepare for next packet.
*/
if (!circuit->is_passive)
- {
- circuit->t_read = thread_add_timer_msec (master, isis_receive, circuit,
- listcount
- (circuit->area->circuit_list) *
- 100);
- }
+ isis_circuit_prepare (circuit);
return retval;
}
-#endif
-
/* filling of the fixed isis header */
void
fill_fixed_hdr (struct isis_fixed_hdr *hdr, u_char pdu_type)