summaryrefslogtreecommitdiffstats
path: root/isisd
diff options
context:
space:
mode:
authorRafael Zalamena <rzalamena@opensourcerouting.org>2017-12-11 21:25:06 +0100
committerRafael Zalamena <rzalamena@opensourcerouting.org>2017-12-14 01:57:15 +0100
commitc60158ae6b572c342212a145ab1c4891b83dcd72 (patch)
tree5e10b47d0caa31cc06482ac6d8335421ebc4293f /isisd
parentisisd: fix debug message (diff)
downloadfrr-c60158ae6b572c342212a145ab1c4891b83dcd72.tar.xz
frr-c60158ae6b572c342212a145ab1c4891b83dcd72.zip
isisd: fix l2 neighbor formations
Add a timestamp information for level 2 circuits, otherwise if the circuit is marked as already processed on level 1 we will not process level 2 areas. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'isisd')
-rw-r--r--isisd/isis_circuit.c3
-rw-r--r--isisd/isis_circuit.h2
-rw-r--r--isisd/isis_lsp.c4
3 files changed, 5 insertions, 4 deletions
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index 30679367c..0b7dc86ad 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -676,7 +676,8 @@ int isis_circuit_up(struct isis_circuit *circuit)
circuit->lsp_queue = list_new();
circuit->lsp_hash = isis_lsp_hash_new();
- circuit->lsp_queue_last_push = monotime(NULL);
+ circuit->lsp_queue_last_push[0] = circuit->lsp_queue_last_push[1] =
+ monotime(NULL);
return ISIS_OK;
}
diff --git a/isisd/isis_circuit.h b/isisd/isis_circuit.h
index ac1e15f6b..ab181189a 100644
--- a/isisd/isis_circuit.h
+++ b/isisd/isis_circuit.h
@@ -84,7 +84,7 @@ struct isis_circuit {
struct thread *t_send_lsp;
struct list *lsp_queue; /* LSPs to be txed (both levels) */
struct isis_lsp_hash *lsp_hash; /* Hashtable synchronized with lsp_queue */
- time_t lsp_queue_last_push; /* timestamp used to enforce transmit
+ time_t lsp_queue_last_push[2]; /* timestamp used to enforce transmit
* interval;
* for scalability, use one timestamp per
* circuit, instead of one per lsp per
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index ff9114c50..614f46c78 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -1873,12 +1873,12 @@ int lsp_tick(struct thread *thread)
if (!circuit->lsp_queue)
continue;
- if (now - circuit->lsp_queue_last_push
+ if (now - circuit->lsp_queue_last_push[level]
< MIN_LSP_RETRANS_INTERVAL) {
continue;
}
- circuit->lsp_queue_last_push = now;
+ circuit->lsp_queue_last_push[level] = now;
for (ALL_LIST_ELEMENTS_RO(
lsp_list, lspnode, lsp)) {