diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-11-25 11:51:38 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-11-25 11:51:38 +0100 |
commit | ed1a908e535e4333b358d83b472453a2ad6d3f51 (patch) | |
tree | 3ee46e6d922c3e363dad23976fcc2de0a7e19429 /lib/hash.h | |
parent | 261816b0d4f3d4549a4402b95541b82fc7f10a4b (diff) |
BGP: Fix memory leak in graceful restart code
Prefix and bucket tables are initialized when entering established state
but not explicitly freed when leaving it (that is handled by protocol
restart). With graceful restart, BGP may enter and leave established
state multiple times without hard protocol restart causing memory leak.
Diffstat (limited to 'lib/hash.h')
-rw-r--r-- | lib/hash.h | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -25,6 +25,12 @@ (v).data = mb_allocz(pool, HASH_SIZE(v) * sizeof(* (v).data)); \ }) +#define HASH_FREE(v) \ + ({ \ + mb_free((v).data); \ + (v) = (typeof(v)){ }; \ + }) + #define HASH_FIND(v,id,key...) \ ({ \ u32 _h = HASH_FN(v, id, key); \ |