From 4eda93ab0bb51da95f239b9e7eaecf8487ef4424 Mon Sep 17 00:00:00 2001 From: hasso Date: Sun, 18 Sep 2005 17:51:02 +0000 Subject: * isis_lsp.c (lsp_update): Fix previous commit - manipulate the right database and only if LSP is really in the database (sanity check). --- isisd/ChangeLog | 5 +++++ isisd/isis_lsp.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/isisd/ChangeLog b/isisd/ChangeLog index 6a2be940..d9e65bbd 100644 --- a/isisd/ChangeLog +++ b/isisd/ChangeLog @@ -1,3 +1,8 @@ +2005-09-18 Hasso Tepper + + * isis_lsp.c (lsp_update): Fix previous commit - manipulate the right + database and only if LSP is really in the database (sanity check). + 2005-09-16 Hasso Tepper * isis_lsp.c (lsp_update): Remove LSP from database before updating diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c index d147c650..a294bc8f 100644 --- a/isisd/isis_lsp.c +++ b/isisd/isis_lsp.c @@ -418,11 +418,12 @@ void lsp_update (struct isis_lsp *lsp, struct isis_link_state_hdr *lsp_hdr, struct stream *stream, struct isis_area *area, int level) { - dnode_t *dnode; + dnode_t *dnode = NULL; /* Remove old LSP from LSP database. */ - dnode = dict_lookup (area->lspdb[level], lsp->lsp_header->lsp_id); - dnode_destroy (dict_delete (area->lspdb[level], dnode)); + dnode = dict_lookup (area->lspdb[level - 1], lsp->lsp_header->lsp_id); + if (dnode) + dnode_destroy (dict_delete (area->lspdb[level - 1], dnode)); /* free the old lsp data */ XFREE (MTYPE_STREAM_DATA, lsp->pdu); @@ -434,8 +435,8 @@ lsp_update (struct isis_lsp *lsp, struct isis_link_state_hdr *lsp_hdr, /* set the new values for lsp header */ memcpy (lsp->lsp_header, lsp_hdr, ISIS_LSP_HDR_LEN); - /* Put LSP back into LSP database, now with updated data. */ - lsp_insert (lsp, area->lspdb[level]); + if (dnode) + lsp_insert (lsp, area->lspdb[level - 1]); } /* creation of LSP directly from what we received */ -- cgit v1.2.1