* isis_lsp.c (lsp_update): Remove LSP from database before updating
its data and put it back after. Database entry MUST contain at least
correct pointers to the sysid to get correct compare results.
* isis_lsp.[ch], isis_pdu.c: Pass level to the lsp_update() function.
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index b15d455..87f3790 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -1085,7 +1085,8 @@
/* 7.3.16.4 b) 1) */
if (comp == LSP_NEWER)
{
- lsp_update (lsp, hdr, circuit->rcv_stream, circuit->area);
+ lsp_update (lsp, hdr, circuit->rcv_stream, circuit->area,
+ level);
/* ii */
ISIS_FLAGS_SET_ALL (lsp->SRMflags);
/* iii */
@@ -1239,7 +1240,7 @@
else if (comp == LSP_EQUAL)
{
ISIS_CLEAR_FLAG (lsp->SRMflags, circuit);
- lsp_update (lsp, hdr, circuit->rcv_stream, circuit->area);
+ lsp_update (lsp, hdr, circuit->rcv_stream, circuit->area, level);
if (circuit->circ_type != CIRCUIT_T_BROADCAST)
{
ISIS_SET_FLAG (lsp->SSNflags, circuit);