summaryrefslogtreecommitdiff
path: root/ospfd/ospfd.c
diff options
context:
space:
mode:
Diffstat (limited to 'ospfd/ospfd.c')
-rw-r--r--ospfd/ospfd.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index a1ad929d..20300676 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -472,14 +472,12 @@ ospf_area_free (struct ospf_area *area)
ospf_lsa_discard_callback);
foreach_lsa (OPAQUE_LINK_LSDB (area), area->lsdb, 0,
ospf_lsa_discard_callback);
+ ospf_opaque_type10_lsa_term (area);
#endif /* HAVE_OPAQUE_LSA */
ospf_lsdb_delete_all (area->lsdb);
ospf_lsdb_free (area->lsdb);
-#ifdef HAVE_OPAQUE_LSA
- ospf_opaque_type10_lsa_term (area);
-#endif /* HAVE_OPAQUE_LSA */
ospf_lsa_unlock (area->router_lsa_self);
route_table_finish (area->ranges);
@@ -722,8 +720,11 @@ ospf_network_run (struct ospf *ospf, struct prefix *p, struct ospf_area *area)
else
addr = co->address;
- if (ospf_network_match_iface(co,p))
+ if (p->family == co->address->family
+ && ! ospf_if_is_configured (&(addr->u.prefix4))
+ && ospf_network_match_iface(co,p))
{
+ assert(co);
struct ospf_interface *oi;
oi = ospf_if_new (ifp, co->address);