diff --exclude=ospfd.c --exclude='*~' --exclude=Makefile --exclude='*.Po' --exclude='*.o' -ur /home/paul/cvs/zebra/quagga/ospfd/ospf_interface.c ./quagga-0.96.4/ospfd/ospf_interface.c --- quagga/ospfd/ospf_interface.c 2003-10-15 22:29:16.000000000 +0100 +++ quagga-0.96.4/ospfd/ospf_interface.c 2003-10-29 12:16:57.000000000 +0000 @@ -658,11 +658,18 @@ ospf_if_delete_hook (struct interface *ifp) { int rc = 0; + struct route_node *rn; #ifdef HAVE_OPAQUE_LSA rc = ospf_opaque_del_if (ifp); #endif /* HAVE_OPAQUE_LSA */ + route_table_finish (IF_OIFS (ifp)); + + for (rn = route_top (IF_OIFS_PARAMS (ifp)); rn; rn = route_next (rn)) + if (rn->info) + ospf_del_if_params (rn->info); route_table_finish (IF_OIFS_PARAMS (ifp)); + ospf_del_if_params ((struct ospf_if_params *) IF_DEF_PARAMS (ifp)); XFREE (MTYPE_OSPF_IF_INFO, ifp->info); ifp->info = NULL; diff --exclude=ospfd.c --exclude='*~' --exclude=Makefile --exclude='*.Po' --exclude='*.o' -ur /home/paul/cvs/zebra/quagga/ospfd/ospf_zebra.c ./quagga-0.96.4/ospfd/ospf_zebra.c --- quagga/ospfd/ospf_zebra.c 2003-10-27 21:44:36.000000000 +0000 +++ quagga-0.96.4/ospfd/ospf_zebra.c 2003-10-29 12:33:22.000000000 +0000 @@ -125,12 +125,6 @@ if (rn->info) ospf_if_free ((struct ospf_interface *) rn->info); - for (rn = route_top (IF_OIFS_PARAMS (ifp)); rn; rn = route_next (rn)) - if (rn->info) - ospf_del_if_params (rn->info); - - if_delete (ifp); - return 0; }