]> git.proxmox.com Git - mirror_frr.git/commitdiff
isisd: fix l2 neighbor formations
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Mon, 11 Dec 2017 20:25:06 +0000 (18:25 -0200)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 14 Dec 2017 00:57:15 +0000 (22:57 -0200)
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>
isisd/isis_circuit.c
isisd/isis_circuit.h
isisd/isis_lsp.c

index 30679367c04df30af569d36be28161dd86b4fbc8..0b7dc86ad6c88f58294d58ec3a0562135d965ddc 100644 (file)
@@ -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;
 }
index ac1e15f6bf6f16035b52621df0933a789855bb54..ab181189a983186719b0b4d4ebce136540c12824 100644 (file)
@@ -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
index ff9114c506a63131ba3d4c6c2467105eb0cefeeb..614f46c78bb6795dcd63be2b9e2f7963b6d7c284 100644 (file)
@@ -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)) {