From f9956b9524ddafdb9d0cec042213eaa8229aad8c Mon Sep 17 00:00:00 2001 From: Chris Hall Date: Tue, 29 Mar 2011 01:49:16 +0100 Subject: Bring "ex" version up to date with 0.99.18 Release: 0.99.18ex15p -- Pipework Branch Also fixes issue with unknown attributes -- does not release them prematurely. Contains the "bgpd: New show commands for improved view and address family support", which is post 0.99.18. (But not RFC 5082 GTSM.) --- ospfd/ospf_lsdb.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'ospfd/ospf_lsdb.c') diff --git a/ospfd/ospf_lsdb.c b/ospfd/ospf_lsdb.c index c906f052..ea9a3528 100644 --- a/ospfd/ospf_lsdb.c +++ b/ospfd/ospf_lsdb.c @@ -120,7 +120,10 @@ ospf_lsdb_add (struct ospf_lsdb *lsdb, struct ospf_lsa *lsa) /* nothing to do? */ if (rn->info && rn->info == lsa) - return; + { + route_unlock_node (rn); + return; + } /* purge old entry? */ if (rn->info) @@ -162,12 +165,13 @@ ospf_lsdb_delete (struct ospf_lsdb *lsdb, struct ospf_lsa *lsa) return; } + assert (lsa->data->type < OSPF_MAX_LSA); table = lsdb->type[lsa->data->type].db; lsdb_prefix_set (&lp, lsa); - rn = route_node_lookup (table, (struct prefix *) &lp); - if (rn && (rn->info == lsa)) + if ((rn = route_node_lookup (table, (struct prefix *) &lp))) { - ospf_lsdb_delete_entry (lsdb, rn); + if (rn->info == lsa) + ospf_lsdb_delete_entry (lsdb, rn); route_unlock_node (rn); /* route_node_lookup */ } } @@ -274,7 +278,8 @@ ospf_lsdb_lookup_by_id_next (struct ospf_lsdb *lsdb, u_char type, rn = route_top (table); else { - rn = route_node_get (table, (struct prefix *) &lp); + if ((rn = route_node_lookup (table, (struct prefix *) &lp)) == NULL) + return NULL; rn = route_next (rn); } -- cgit v1.2.3