[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