diff options
| author | Jorge Boncompte [DTI2] <jorge@dti2.net> | 2012-05-07 16:52:52 +0000 | 
|---|---|---|
| committer | David Lamparter <equinox@opensourcerouting.org> | 2012-05-22 20:25:07 +0200 | 
| commit | 10f9bf3f2021f874e574e4ebae9413bee982ed2b (patch) | |
| tree | 5102a98c91d7d60380c07c08d0aaa32aa19cdbdf /bgpd/bgpd.c | |
| parent | f669f7d25f0f491d5e487897227ff434aef20406 (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 'bgpd/bgpd.c')
| -rw-r--r-- | bgpd/bgpd.c | 1 | 
1 files changed, 1 insertions, 0 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index ab27783f..30fb091f 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -5358,6 +5358,7 @@ bgp_init (void)    bgp_dump_init ();    bgp_route_init ();    bgp_route_map_init (); +  bgp_address_init ();    bgp_scan_init ();    bgp_mplsvpn_init ();  | 
