]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: send proper LSP after DIS election
authorPeter Szilagyi <peszilagyi@gmail.com>
Sat, 1 Oct 2011 13:15:46 +0000 (17:15 +0400)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 13 Feb 2012 23:06:09 +0000 (03:06 +0400)
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.

Signed-off-by: Fritz Reichmann <fritz@reichmann.nl>
isisd/isis_pdu.c

index 4c602eea76fea963564c499494554d09f266f6d2..3d2629a8c459ff22d562dfacdc982158fdfade42 100644 (file)
@@ -1187,6 +1187,7 @@ dontcheckadj:
       /* 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 @@ dontcheckadj:
          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)