summaryrefslogtreecommitdiffstats
path: root/isisd
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2023-04-19 14:13:18 +0200
committerDonald Sharp <sharpd@nvidia.com>2023-06-26 20:59:21 +0200
commit161972c9fe108ffe3de851a537d9b34efeb09e31 (patch)
tree6de17e2202d18969ee4aae4c85ecaccdc89c4f89 /isisd
parentMerge pull request #13804 from LabNConsulting/aceelindem/ospf6d-config-callbacks (diff)
downloadfrr-161972c9fe108ffe3de851a537d9b34efeb09e31.tar.xz
frr-161972c9fe108ffe3de851a537d9b34efeb09e31.zip
*: Rearrange vrf_bitmap_X api to reduce memory footprint
When running all daemons with config for most of them, FRR has sharpd@janelle:~/frr$ vtysh -c "show debug hashtable" | grep "VRF BIT HASH" | wc -l 3570 3570 hashes for bitmaps associated with the vrf. This is a very large number of hashes. Let's do two things: a) Reduce the created size of the actually created hashes to 2 instead of 32. b) Delay generation of the hash *until* a set operation happens. As that no hash directly implies a unset value if/when checked. This reduces the number of hashes to 61 in my setup for normal operation. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'isisd')
-rw-r--r--isisd/isisd.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/isisd/isisd.c b/isisd/isisd.c
index ea304ba5e..c6a7e803c 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -638,22 +638,22 @@ static void isis_set_redist_vrf_bitmaps(struct isis *isis, bool set)
if (type == DEFAULT_ROUTE) {
if (set)
vrf_bitmap_set(
- zclient->default_information
- [afi],
+ &zclient->default_information
+ [afi],
isis->vrf_id);
else
vrf_bitmap_unset(
- zclient->default_information
- [afi],
+ &zclient->default_information
+ [afi],
isis->vrf_id);
} else {
if (set)
vrf_bitmap_set(
- zclient->redist[afi][type],
+ &zclient->redist[afi][type],
isis->vrf_id);
else
vrf_bitmap_unset(
- zclient->redist[afi][type],
+ &zclient->redist[afi][type],
isis->vrf_id);
}
}