[Xorp-cvs] XORP cvs commit: xorp/bgp
Atanu Ghosh
atanu@icir.org
Mon, 22 Aug 2005 06:57:31 GMT
CVSROOT: /usr/local/www/data/cvs
Module name: xorp
Changes by: atanu@xorpc.icir.org 2005-08-22 06:57:31 UTC
XORP CVS repository
Modified files:
bgp next_hop_resolver.cc next_hop_resolver.hh
route_table_nhlookup.cc route_table_nhlookup.hh
Log message:
A clique of six routers with a seventh router feeding in a single
route and then withdrawing the route was causing BGP to fail. The
failure was either the fatal message "Unknown nexthop" from the next
hop resolver or the next hop routing would dereference an iterator
that was pointing at end.
The first problem is that on a slow system with an unresponsive RIB
many registrations can be queued. Test9 in test next hop resolver
demonstrates the problem. While waiting for the RIB, requests were
queued keyed on the subnet associated with the next hop that was being
requested. Two registrations followed by two deregistrations (with the
same subnet) were failing as all the state was being removed by the
first deregistration. The state is now stored in a multiset and the
regression test and the six router test seems to work.
The next hop resolver has also had some debugging added.
The route table nh lookup has methods to track the two queues which it
holds so that both queues can be handled in a consistent manor.
Bug found by: Dario Vieira
Revision Changes Path
1.45 +49 -13; commitid: 91974309775a7ea6; xorp/bgp/next_hop_resolver.cc
1.29 +3 -2; commitid: 91974309775a7ea6; xorp/bgp/next_hop_resolver.hh
1.22 +98 -86; commitid: 91974309775a7ea6; xorp/bgp/route_table_nhlookup.cc
1.14 +22 -1; commitid: 91974309775a7ea6; xorp/bgp/route_table_nhlookup.hh