]> git.puffer.fish Git - mirror/frr.git/commitdiff
Revert "ripngd: Cleanup memory allocations on shutdown" mergify/bp/dev/9.0/pr-13800
authorIgor Ryzhov <iryzhov@nfware.com>
Thu, 15 Jun 2023 14:42:05 +0000 (17:42 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Tue, 20 Jun 2023 14:41:46 +0000 (14:41 +0000)
This reverts commit b1d29673ca16e558aea5d632da181555c83980cf.

This commit introduced a crash. When the VRF is deleted, the RIPNG
instance should not be freed, because the NB infrastructure still stores
the pointer to it. The instance should be deleted only when it's actually
deleted from the configuration.

To reproduce the crash:
```
frr# conf t
frr(config)# vrf vrf1
frr(config-vrf)# exit
frr(config)# router ripng vrf vrf1
frr(config-router)# exit
frr(config)# no vrf vrf1
frr(config)# no router ripng vrf vrf1
vtysh: error reading from ripngd: Resource temporarily unavailable (11)Warning: closing connection to ripngd because of an I/O error!
frr(config)#
```

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
(cherry picked from commit 9f6dade90e5e4686f67ae17b42c2873ec7ca6532)

ripngd/ripngd.c

index 7269e76656b8f487f46ff77de8f8a6f7cc2aecd4..d5618b63f2f941cca8772c4402211cdf8506037f 100644 (file)
@@ -2624,17 +2624,10 @@ static int ripng_vrf_new(struct vrf *vrf)
 
 static int ripng_vrf_delete(struct vrf *vrf)
 {
-       struct ripng *ripng;
-
        if (IS_RIPNG_DEBUG_EVENT)
                zlog_debug("%s: VRF deleted: %s(%u)", __func__, vrf->name,
                           vrf->vrf_id);
 
-       ripng = ripng_lookup_by_vrf_name(vrf->name);
-       if (!ripng)
-               return 0;
-
-       ripng_clean(ripng);
        return 0;
 }