]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Track RTRLib memory allocations separately
authorDonatas Abraitis <donatas@opensourcerouting.org>
Tue, 5 Apr 2022 08:02:07 +0000 (11:02 +0300)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Tue, 5 Apr 2022 08:14:34 +0000 (11:14 +0300)
With fast `rpki reset`, seems that RTRLib related memory allocations leak
the memory. Need to figure this out later.

```
$ vtysh -c 'show memory | include RPKI'
BGP RPKI Cache server         :       12 variable       576       12       576
BGP RPKI Cache server group   :        0     48           0        1        56
BGP RPKI RTRLib               :   849657 variable  34453096   849662  41293504

$ for x in $(seq 1 60); do vtysh -c 'con' -c 'rpki' -c 'rpki reset'; sleep 1; done

$ vtysh -c 'show memory | include RPKI'
BGP RPKI Cache server         :       12 variable       576       12       576
BGP RPKI Cache server group   :        0     48           0        1        56
BGP RPKI RTRLib               :   849699 variable  69490616   849701  76323832
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd/bgp_rpki.c

index c724b938d1c3f3aa8c1f4afb0a88ce9e29ac91a2..cbccc4423fd68c77c96c71e820381b860ab6872f 100644 (file)
@@ -67,6 +67,7 @@ static struct thread *t_rpki;
 
 DEFINE_MTYPE_STATIC(BGPD, BGP_RPKI_CACHE, "BGP RPKI Cache server");
 DEFINE_MTYPE_STATIC(BGPD, BGP_RPKI_CACHE_GROUP, "BGP RPKI Cache server group");
+DEFINE_MTYPE_STATIC(BGPD, BGP_RPKI_RTRLIB, "BGP RPKI RTRLib");
 
 #define POLLING_PERIOD_DEFAULT 3600
 #define EXPIRE_INTERVAL_DEFAULT 7200
@@ -156,17 +157,17 @@ static const struct route_map_rule_cmd route_match_rpki_cmd = {
 
 static void *malloc_wrapper(size_t size)
 {
-       return XMALLOC(MTYPE_BGP_RPKI_CACHE, size);
+       return XMALLOC(MTYPE_BGP_RPKI_RTRLIB, size);
 }
 
 static void *realloc_wrapper(void *ptr, size_t size)
 {
-       return XREALLOC(MTYPE_BGP_RPKI_CACHE, ptr, size);
+       return XREALLOC(MTYPE_BGP_RPKI_RTRLIB, ptr, size);
 }
 
 static void free_wrapper(void *ptr)
 {
-       XFREE(MTYPE_BGP_RPKI_CACHE, ptr);
+       XFREE(MTYPE_BGP_RPKI_RTRLIB, ptr);
 }
 
 static void init_tr_socket(struct cache *cache)