summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJorge Boncompte [DTI2] <jorge@dti2.net>2012-05-07 16:52:52 +0000
committerDavid Lamparter <equinox@opensourcerouting.org>2012-05-22 20:25:07 +0200
commit10f9bf3f2021f874e574e4ebae9413bee982ed2b (patch)
tree5102a98c91d7d60380c07c08d0aaa32aa19cdbdf /lib
parentf669f7d25f0f491d5e487897227ff434aef20406 (diff)
bgpd: optimize bgp_nexthop_self()
This function scores 2nd, profiling a full internet table load. It's called for every prefix received. Instead of looping in the interface lists comparing addresses use a hash to mantain them. * bgpd.c: Init the own address hash. * bgp_nexthop.c: Introduce methods to maintain an own address hash. (bgp_connected_add) add addresses to the hash. (bgp_connected_delete) delete addresses from the hash. (bgp_nexthop_self) lookup addresses in the hash. Removed the unused afi_t parameter. * bgp_route.c: (bgp_update_main) Micro-optimization, rearranged condition to not lookup the hash for bogus nexthops (0.0.0.0 or a class D/E address) Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/memtypes.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/memtypes.c b/lib/memtypes.c
index acbd16b9..1723490f 100644
--- a/lib/memtypes.c
+++ b/lib/memtypes.c
@@ -150,6 +150,7 @@ struct memory_list memory_list_bgp[] =
{ MTYPE_BGP_DAMP_ARRAY, "BGP Dampening array" },
{ MTYPE_BGP_REGEXP, "BGP regexp" },
{ MTYPE_BGP_AGGREGATE, "BGP aggregate" },
+ { MTYPE_BGP_ADDR, "BGP own address" },
{ -1, NULL }
};