diff options
Diffstat (limited to 'bgpd')
| -rw-r--r-- | bgpd/ChangeLog | 10 | ||||
| -rw-r--r-- | bgpd/bgp_fsm.c | 6 | ||||
| -rw-r--r-- | bgpd/bgp_fsm.h | 6 | ||||
| -rw-r--r-- | bgpd/bgp_packet.c | 8 | 
4 files changed, 17 insertions, 13 deletions
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index 2294f89a..c33562da 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -1,3 +1,13 @@ +2006-10-14 Paul Jakma <paul.jakma@sun.com> + +	* bgp_fsm.h: Remove BGP_EVENT_FLUSH_ADD, dangerous and not +	  needed. +	* bgp_fsm.c: (bgp_stop) Move BGP_EVENT_FLUSH to the top of the +	  of the function, otherwise it could flush a ClearingCompleted +          event, bug #302. +	* bgp_packet.c: Replace all BGP_EVENT_FLUSH_ADD with +	  BGP_EVENT_ADD, fixing bug #302. +  2006-09-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>  	* bgpd.c: (peer_uptime) Fix printf format/arg mismatch in diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index cc2b2c3a..ef8dfea4 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -428,6 +428,9 @@ bgp_stop (struct peer *peer)    safi_t safi;    char orf_name[BUFSIZ]; +  /* Delete all existing events of the peer */ +  BGP_EVENT_FLUSH (peer); +    /* Increment Dropped count. */    if (peer->status == Established)      { @@ -499,9 +502,6 @@ bgp_stop (struct peer *peer)    BGP_TIMER_OFF (peer->t_asorig);    BGP_TIMER_OFF (peer->t_routeadv); -  /* Delete all existing events of the peer */ -  BGP_EVENT_FLUSH (peer); -      /* Stream reset. */    peer->packet_size = 0; diff --git a/bgpd/bgp_fsm.h b/bgpd/bgp_fsm.h index c51bed37..a749f8ea 100644 --- a/bgpd/bgp_fsm.h +++ b/bgpd/bgp_fsm.h @@ -71,12 +71,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA      thread_cancel_event (master, (P)); 		\    } while (0) -#define BGP_EVENT_FLUSH_ADD(P,E)	\ -  do {					\ -    BGP_EVENT_FLUSH(P);			\ -    BGP_EVENT_ADD(P,E);			\ -  } while (0) -  /* Prototypes. */  extern int bgp_event (struct thread *);  extern int bgp_stop (struct peer *peer); diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index da59d329..cf6d00f1 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -637,7 +637,7 @@ bgp_write (struct thread *thread)  	  if (write_errno == EWOULDBLOCK || write_errno == EAGAIN)  	      break; -	  BGP_EVENT_FLUSH_ADD (peer, TCP_fatal_error); +	  BGP_EVENT_ADD (peer, TCP_fatal_error);  	  return 0;  	}        if (num != writenum) @@ -672,7 +672,7 @@ bgp_write (struct thread *thread)  	    peer->v_start = (60 * 2);  	  /* Flush any existing events */ -	  BGP_EVENT_FLUSH_ADD (peer, BGP_Stop); +	  BGP_EVENT_ADD (peer, BGP_Stop);  	  return 0;  	case BGP_MSG_KEEPALIVE:  	  peer->keepalive_out++; @@ -717,7 +717,7 @@ bgp_write_notify (struct peer *peer)    ret = writen (peer->fd, STREAM_DATA (s), stream_get_endp (s));    if (ret <= 0)      { -      BGP_EVENT_FLUSH_ADD (peer, TCP_fatal_error); +      BGP_EVENT_ADD (peer, TCP_fatal_error);        return 0;      } @@ -737,7 +737,7 @@ bgp_write_notify (struct peer *peer)    if (peer->v_start >= (60 * 2))      peer->v_start = (60 * 2); -  BGP_EVENT_FLUSH_ADD (peer, BGP_Stop); +  BGP_EVENT_ADD (peer, BGP_Stop);    return 0;  }  | 
