Go to file
Paul Jakma ca058a30b1 [bgpd] Fix 0.99 shutdown regression, introduce Clearing and Deleted states
2006-09-14 Paul Jakma <paul.jakma@sun.com>

	* (general) Fix some niggly issues around 'shutdown' and clearing
	  by adding a Clearing FSM wait-state and a hidden 'Deleted'
	  FSM state, to allow deleted peers to 'cool off' and hit 0
	  references. This introduces a slow memory leak of struct peer,
	  however that's more a testament to the fragility of the
	  reference counting than a bug in this patch, cleanup of
	  reference counting to fix this is to follow.
	* bgpd.h: Add Clearing, Deleted states and Clearing_Completed
	  and event.
	* bgp_debug.c: (bgp_status_msg[]) Add strings for Clearing and
	  Deleted.
	* bgp_fsm.h: Don't allow timer/event threads to set anything
	  for Deleted peers.
	* bgp_fsm.c: (bgp_timer_set) Add Clearing and Deleted. Deleted
	  needs to stop everything.
	  (bgp_stop) Remove explicit fsm_change_status call, the
	  general framework handles the transition.
	  (bgp_start) Log a warning if a start is attempted on a peer
	  that should stay down, trying to start a peer.
	  (struct .. FSM) Add Clearing_Completed
	  events, has little influence except when in state
	  Clearing to signal wait-state can end.
	  Add Clearing and Deleted states, former is a wait-state,
	  latter is a placeholder state to allow peers to disappear
	  quietly once refcounts settle.
	  (bgp_event) Try reduce verbosity of FSM state-change debug,
	  changes to same state are not interesting (Established->Established)
	  Allow NULL action functions in FSM.
	* bgp_packet.c: (bgp_write) Use FSM events, rather than trying
	  to twiddle directly with FSM state behind the back of FSM.
	  (bgp_write_notify) ditto.
	  (bgp_read) Remove the vague ACCEPT_PEER peer_unlock, or else
	  this patch crashes, now it leaks instead.
	* bgp_route.c: (bgp_clear_node_complete) Clearing_Completed
	  event, to end clearing.
	  (bgp_clear_route) See extensive comments.
	* bgpd.c: (peer_free) should only be called while in Deleted,
	  peer refcounting controls when peer_free is called.
	  bgp_sync_delete should be here, not in peer_delete.
	  (peer_delete) Initiate delete.
	  Transition to Deleted state manually.
	  When removing peer from indices that provide visibility of it,
	  take great care to be idempotent wrt the reference counting
	  of struct peer through those indices.
	  Use bgp_timer_set, rather than replicating.
	  Call to bgp_sync_delete isn't appropriate here, sync can be
	  referenced while shutting down and finishing deletion.
	  (peer_group_bind) Take care to be idempotent wrt list references
	  indexing peers.
2006-09-14 02:58:49 +00:00
bgpd [bgpd] Fix 0.99 shutdown regression, introduce Clearing and Deleted states 2006-09-14 02:58:49 +00:00
doc [doc] Expand/cross-ref MD5 commands, tweak anchors to avoid added spacing 2006-07-28 04:42:39 +00:00
guile - Add .arch-ids and .arch-inventory to cvsignore, to allow one to use arch 2004-11-02 18:59:49 +00:00
init CVS ignore Linux NFS silly-delete .nfs* files 2004-06-06 15:25:35 +00:00
isisd [zserv] fix up custom isisd and bgpd Zserv functions for new format. 2006-01-17 17:33:46 +00:00
lib [lib] Bug #134: threads should be more robust against backward time jumps 2006-08-27 06:44:02 +00:00
m4 - Add .arch-ids and .arch-inventory to cvsignore, to allow one to use arch 2004-11-02 18:59:49 +00:00
ospf6d [ospf6d] GNU Zebra 3563: Fix as-external forwarding address 2006-05-15 10:47:53 +00:00
ospfclient [ospfclient] add static qualifier 2005-11-24 12:40:39 +00:00
ospfd [ospfd] Fix assertion in DB-exchange fix, hit by ogier-db-ex-opt commit 2006-08-30 18:47:37 +00:00
pkgsrc - Add .arch-ids and .arch-inventory to cvsignore, to allow one to use arch 2004-11-02 18:59:49 +00:00
ports - Add .arch-ids and .arch-inventory to cvsignore, to allow one to use arch 2004-11-02 18:59:49 +00:00
redhat [redhat quagga.spec] Detect fedora release automatically 2006-06-15 22:31:39 +00:00
ripd [ripd] bug #293: routemap set metric doesn't check for underflow correctly 2006-09-11 02:14:16 +00:00
ripngd [ripngd] CID #72, remove unneeded NULL check 2006-05-11 13:20:47 +00:00
solaris [solaris] Manifest referenced non-existent services, fix. 2006-04-03 21:27:20 +00:00
tests [tests] update heavywq for workqueue api changes 2006-08-27 06:53:24 +00:00
tools - Add .arch-ids and .arch-inventory to cvsignore, to allow one to use arch 2004-11-02 18:59:49 +00:00
vtysh [vtysh] Never skip authentication, and add support for multiple -c commands 2006-07-27 18:01:41 +00:00
watchquagga 2005-02-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu> 2005-02-17 20:11:58 +00:00
zebra 2006-09-13 Tom Everett <tom@khubla.com> 2006-09-13 12:13:08 +00:00
.cvsignore Ignore <dist tarball>.asc - i always seem to have one hanging around from 2005-01-12 23:49:05 +00:00
AUTHORS Initial revision 2002-12-13 20:15:29 +00:00
ChangeLog [0.99] version bump to 0.99.5 2006-08-27 22:06:12 +00:00
configure.ac [0.99] version bump to 0.99.5 2006-08-27 22:06:12 +00:00
COPYING Initial revision 2002-12-13 20:15:29 +00:00
COPYING.LIB Initial revision 2002-12-13 20:15:29 +00:00
HACKING 2005-11-10 Paul Jakma <paul.jakma@sun.com> 2005-11-10 10:21:19 +00:00
INSTALL.quagga.txt rework 2005-08-10 15:07:02 +00:00
Makefile.am 2005-08-13 Paul Jakma <paul@jakma.org> 2005-08-13 13:42:38 +00:00
mkinstalldirs Revert to zebra.org automake files 2003-02-17 23:54:05 +00:00
NEWS 2005-11-11 Paul Jakma <paul.jakma@sun.com> 2005-11-11 10:28:59 +00:00
README 2004-11-12 Paul Jakma <paul@dishone.st> 2004-11-12 10:30:21 +00:00
README.NetBSD shell script and hints for building on NetBSD. (gdt deleted private 2005-12-29 15:40:49 +00:00
REPORTING-BUGS Zebra -> Quagga and reformatting. 2004-02-20 20:33:43 +00:00
SERVICES 2607/tcp is already used by ospfapi. 2003-12-23 10:42:45 +00:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
TODO [TODO] Note MED functionality we should implement 2006-03-30 14:36:23 +00:00
update-autotools 2004-11-06 Paul Jakma <paul@dishone.st> 2004-11-07 22:34:23 +00:00

Quagga is free software that manages various IPv4 and IPv6 routing
protocols.

Currently Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1,
RIPv2, and RIPng as well as very early support for IS-IS.
  
See the file INSTALL.quagga.txt for building and installation instructions.
  
See the file REPORTING-BUGS to report bugs.
  
Quagga is free software. See the file COPYING for copying conditions.