]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge pull request #1536 from opensourcerouting/isis-l2conv
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 14 Dec 2017 12:40:23 +0000 (07:40 -0500)
committerGitHub <noreply@github.com>
Thu, 14 Dec 2017 12:40:23 +0000 (07:40 -0500)
Fix ISIS L2 formations

isisd/isis_circuit.c
isisd/isis_circuit.h
isisd/isis_lsp.c
isisd/isis_spf.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)) {
index 47d2c5caa7256b7e7b615377830c0732ba202fe8..a076bb555c2cf64994ad86fd44a65922a9e5d812 100644 (file)
@@ -1436,9 +1436,8 @@ int isis_spf_schedule(struct isis_area *area, int level)
                         timer, &area->spf_timer[level - 1]);
 
        if (isis->debugs & DEBUG_SPF_EVENTS)
-               zlog_debug("ISIS-Spf (%s) L%d SPF scheduled %d sec from now",
-                          area->area_tag, level,
-                          area->min_spf_interval[level - 1] - diff);
+               zlog_debug("ISIS-Spf (%s) L%d SPF scheduled %ld sec from now",
+                          area->area_tag, level, timer);
 
        return ISIS_OK;
 }