[quagga-dev 7042] [RESEND] [PATCH] 5/7 isisd Regenerate LSP instead of reoriginating after DIS election

Fritz Reichmann fritz at reichmann.nl
Thu Aug 6 20:42:18 BST 2009


From http://lists.quagga.net/pipermail/quagga-dev/2009-April/006512.html.

Author: Peter Szilagyi <peszilagyi at gmail.com>
Date:   Apr 13 13:31:14 IST 2009

    [isisd] After an IS has been elected as the Designated IS for a LAN, it did not refresh the content of the pseudo-node after a new node has been connected to the same LAN. Instead, the periodically reoriginated pseudo-node LSP still contained only those IS neighbors that were already present when the DIS election process was commenced. The fix for the problem schedules an LSP regeneration rather than just reoriginating the same LSP with the old content.

Index: isisd/isis_pdu.c
===================================================================
--- isisd/isis_pdu.c    (revision 520)
+++ isisd/isis_pdu.c    (revision 523)
@@ -1187,6 +1187,7 @@
       /* 7.3.15.1 e) 1) LSP newer than the one in db or no LSP in db */
       if ((!lsp || comp == LSP_NEWER))
        {
+          int regenerate = (lsp == NULL);
          /* i */
          if (lsp)
            {
@@ -1232,6 +1233,9 @@
          if (circuit->circ_type != CIRCUIT_T_BROADCAST)
            ISIS_SET_FLAG (lsp->SSNflags, circuit);
          /* FIXME: v) */
+          if (regenerate && circuit->u.bc.is_dr[level - 1]) {
+            lsp_l1_pseudo_generate (circuit);
+          }
        }
       /* 7.3.15.1 e) 2) LSP equal to the one in db */
       else if (comp == LSP_EQUAL)



More information about the Quagga-dev mailing list