ospfd: Fix various route_unlock discrepencies
* ospf_ase.c: (ospf_ase_calculate_route) Fix compiler warning about eval
needing brackets.
(various) add defensive asserts.
* ospf_lsdb.c: (ospf_lsdb_add) add missing node unlock if same lsa already
was indexed.
(ospf_lsdb_delete) check it's actually the same as specified lsa before
deleting
(ospf_lsdb_lookup_by_id_next) fix another corner case - no result =>
don't go on.
diff --git a/ospfd/ospf_ase.c b/ospfd/ospf_ase.c
index 5d0cae4..3c19931 100644
--- a/ospfd/ospf_ase.c
+++ b/ospfd/ospf_ase.c
@@ -451,8 +451,8 @@
/* if there is a Intra/Inter area route to the N
do not install external route */
- if (rn = route_node_lookup (ospf->new_table,
- (struct prefix *) &p))
+ if ((rn = route_node_lookup (ospf->new_table,
+ (struct prefix *) &p)))
{
route_unlock_node(rn);
if (rn->info == NULL)
@@ -463,8 +463,8 @@
}
/* Find a route to the same dest */
/* If there is no route, create new one. */
- if (rn = route_node_lookup (ospf->new_external_route,
- (struct prefix *) &p))
+ if ((rn = route_node_lookup (ospf->new_external_route,
+ (struct prefix *) &p)))
route_unlock_node(rn);
if (!rn || (or = rn->info) == NULL)
@@ -718,7 +718,6 @@
/* We assume that if LSA is deleted from DB
is is also deleted from this RT */
-
listnode_add (lst, ospf_lsa_lock (lsa)); /* external_lsas lst */
}
@@ -799,7 +798,8 @@
}
rn = route_node_lookup (ospf->external_lsas, (struct prefix *) &p);
- assert (rn && rn->info);
+ assert (rn);
+ assert (rn->info);
lsas = rn->info;
route_unlock_node (rn);