]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Do not try to redistribute routes if we are shutting down
authorDonatas Abraitis <donatas@opensourcerouting.org>
Tue, 18 Jul 2023 10:14:08 +0000 (13:14 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Tue, 18 Jul 2023 14:56:08 +0000 (14:56 +0000)
When switching `router bgp`, `no router bgp` and doing redistributions, we should
ignore this action, otherwise memory leak happens:

```
Indirect leak of 400 byte(s) in 2 object(s) allocated from:
    0 0x7f81b36b3a06 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:153
    1 0x7f81b327bd2e in qcalloc lib/memory.c:105
    2 0x55f301d28628 in bgp_node_create bgpd/bgp_table.c:92
    3 0x7f81b3309d0b in route_node_new lib/table.c:52
    4 0x7f81b3309d0b in route_node_set lib/table.c:61
    5 0x7f81b330be0a in route_node_get lib/table.c:319
    6 0x55f301ce89df in bgp_redistribute_add bgpd/bgp_route.c:8907
    7 0x55f301dac182 in zebra_read_route bgpd/bgp_zebra.c:593
    8 0x7f81b334dcd7 in zclient_read lib/zclient.c:4179
    9 0x7f81b331d702 in event_call lib/event.c:1995
    10 0x7f81b325d597 in frr_run lib/libfrr.c:1213
    11 0x55f301b94b12 in main bgpd/bgp_main.c:505
    12 0x7f81b2b57082 in __libc_start_main ../csu/libc-start.c:308
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit bddf5c13b277195e6e654401fe3f5490b183cda4)

bgpd/bgp_route.c

index 7b7a7ad207a4379dbece9249dd2e7345089aad2b..f170b3ef8195bf0be5f0699bb6121bf27371fc6f 100644 (file)
@@ -8665,6 +8665,10 @@ void bgp_redistribute_add(struct bgp *bgp, struct prefix *p,
        route_map_result_t ret;
        struct bgp_redist *red;
 
+       if (CHECK_FLAG(bgp->flags, BGP_FLAG_DELETE_IN_PROGRESS) ||
+           bgp->peer_self == NULL)
+               return;
+
        /* Make default attribute. */
        bgp_attr_default_set(&attr, bgp, BGP_ORIGIN_INCOMPLETE);
        /*