summaryrefslogtreecommitdiffstats
path: root/isisd
diff options
context:
space:
mode:
authorAmritha Nambiar <amritha.nambiar@intel.com>2015-07-03 00:42:58 +0200
committerDaniel Walton <dwalton@cumulusnetworks.com>2016-05-26 17:33:31 +0200
commita2d2c0d2268863f6a6300f8e5b9df98276329fad (patch)
treef890437f5658add6af681b319f998cf57c7df238 /isisd
parentospfd: ospf_nbr_nbma_set()/ospf_snmp_vl_add() add unlock (diff)
downloadfrr-a2d2c0d2268863f6a6300f8e5b9df98276329fad.tar.xz
frr-a2d2c0d2268863f6a6300f8e5b9df98276329fad.zip
isisd: Add new adjacency to LSP neighbor list
isis_pdu.c : New adjacency did not always get added to LSP neighbor list. The adjacencies that were created once minimum time allowed before LSP retransmission had surpassed, instantly got their LSP regenerated, but the adjacency circuit type was not set to IIH PDU circuit type before the LSP was regenerated , hence didn't pass the check for adjacency circuit type in lsp_build(), and the adjacency was not added to neighbor list. When a new adjacency is up, to build LSP with neighbor entry corresponding to the adjacency, set adjacency circuit type to circuit type from hello PDU header before new LSP is regenerated/built. This will result in the new adjacency entry getting added to the LSP neighbor list TLV. Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com> (cherry picked from commit 06cc655c0345d610eb946bd41968caa03dc118ed)
Diffstat (limited to 'isisd')
-rw-r--r--isisd/isis_pdu.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index d0b67501b..70bc004b1 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -601,6 +601,13 @@ process_p2p_hello (struct isis_circuit *circuit)
adj->level = hdr->circuit_t;
}
circuit->u.p2p.neighbor = adj;
+ /* Build lsp with the new neighbor entry when a new
+ * adjacency is formed. Set adjacency circuit type to
+ * IIH PDU header circuit type before lsp is regenerated
+ * when an adjacency is up. This will result in the new
+ * adjacency entry getting added to the lsp tlv neighbor list.
+ */
+ adj->circuit_t = hdr->circuit_t;
isis_adj_state_change (adj, ISIS_ADJ_INITIALIZING, NULL);
adj->sys_type = ISIS_SYSTYPE_UNKNOWN;
}
@@ -886,7 +893,6 @@ process_p2p_hello (struct isis_circuit *circuit)
break;
}
- adj->circuit_t = hdr->circuit_t;
if (isis->debugs & DEBUG_ADJ_PACKETS)
{