diff options
author | Igor Ryzhov <iryzhov@nfware.com> | 2020-10-09 14:14:58 +0200 |
---|---|---|
committer | Igor Ryzhov <iryzhov@nfware.com> | 2020-10-09 14:14:58 +0200 |
commit | eb6b38854f0591c853e27d41392fa0d047705eeb (patch) | |
tree | a642a1c62d3343667d33755e41090b079a234e06 /ripngd | |
parent | Merge pull request #7266 from idryzhov/isis-fixes (diff) | |
download | frr-eb6b38854f0591c853e27d41392fa0d047705eeb.tar.xz frr-eb6b38854f0591c853e27d41392fa0d047705eeb.zip |
rip(ng)d: fix interfaces cleaning
rip(ng)d_instance_disable unlinks the vrf from the instance which means
that rip(ng)_interfaces_clean never works, because rip(ng)->vrf is
always NULL there. This leads to the crash #6477.
Clean interfaces before disabling the instance to fix the issue.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'ripngd')
-rw-r--r-- | ripngd/ripngd.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index 8a7950daf..c2eb7c6ee 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -2533,6 +2533,8 @@ static void ripng_distribute_update_all_wrapper(struct access_list *notused) /* delete all the added ripng routes. */ void ripng_clean(struct ripng *ripng) { + ripng_interface_clean(ripng); + if (ripng->enabled) ripng_instance_disable(ripng); @@ -2554,7 +2556,6 @@ void ripng_clean(struct ripng *ripng) agg_table_finish(ripng->enable_network); vector_free(ripng->passive_interface); list_delete(&ripng->offset_list_master); - ripng_interface_clean(ripng); RB_REMOVE(ripng_instance_head, &ripng_instances, ripng); XFREE(MTYPE_RIPNG_VRF_NAME, ripng->vrf_name); |