diff options
author | paul <paul> | 2004-02-17 20:07:30 +0000 |
---|---|---|
committer | paul <paul> | 2004-02-17 20:07:30 +0000 |
commit | 940b01aa6a8d9a2dd12fd121a39f9b53d23081ad (patch) | |
tree | ae20e672855d840076d0f4fb531586c8f8160e8d /ospfd | |
parent | 6ad23f05e36e743b89fc5a9a41e3db7eccb917fb (diff) |
2004-02-17 Paul Jakma <paul@dishone.st>
* ospf_zebra.c: (ospf_interface_delete) Do not delete the interface
params, nor the interface structure, if an interface delete
message is received from zebra.
* ospf_interface.c: (ospf_if_delete_hook) Delete the interface
params and interface, ie that which was previously removed in
(ospf_interface_delete) above.
Diffstat (limited to 'ospfd')
-rw-r--r-- | ospfd/ChangeLog | 9 | ||||
-rw-r--r-- | ospfd/ospf_interface.c | 7 | ||||
-rw-r--r-- | ospfd/ospf_zebra.c | 6 |
3 files changed, 16 insertions, 6 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog index b2a5ad2e..6c8955a3 100644 --- a/ospfd/ChangeLog +++ b/ospfd/ChangeLog @@ -1,3 +1,12 @@ +2004-02-17 Paul Jakma <paul@dishone.st> + + * ospf_zebra.c: (ospf_interface_delete) Do not delete the interface + params, nor the interface structure, if an interface delete + message is received from zebra. + * ospf_interface.c: (ospf_if_delete_hook) Delete the interface + params and interface, ie that which was previously removed in + (ospf_interface_delete) above. + 2004-02-11 Hasso Tepper <hasso@estpak.ee> * ospf_interface.c, ospf_zebra.c: Don't attempt to read path->oi->ifp if oi doesn't exist any more. diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c index 2f94b43f..acce9076 100644 --- a/ospfd/ospf_interface.c +++ b/ospfd/ospf_interface.c @@ -677,11 +677,18 @@ int 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 --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c index 0910a506..e3738bed 100644 --- a/ospfd/ospf_zebra.c +++ b/ospfd/ospf_zebra.c @@ -125,12 +125,6 @@ ospf_interface_delete (int command, struct zclient *zclient, 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; } |