mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 15:43:55 +00:00
bgpd: Convert #define of bgp fsm events to an enum
In PR #6052 which fixes issue #5963 the bgp fsm events were confused with the bgp fsm status leading to a bug. Let's start separating those out so these types of failures cannot just easily occur. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
c133ddca17
commit
d1060698b4
@ -131,7 +131,7 @@ static struct peer *peer_xfer_conn(struct peer *from_peer)
|
|||||||
safi_t safi;
|
safi_t safi;
|
||||||
int fd;
|
int fd;
|
||||||
int status, pstatus;
|
int status, pstatus;
|
||||||
unsigned char last_evt, last_maj_evt;
|
enum bgp_fsm_events last_evt, last_maj_evt;
|
||||||
|
|
||||||
assert(from_peer != NULL);
|
assert(from_peer != NULL);
|
||||||
|
|
||||||
@ -2184,7 +2184,7 @@ static const struct {
|
|||||||
/* Execute event process. */
|
/* Execute event process. */
|
||||||
int bgp_event(struct thread *thread)
|
int bgp_event(struct thread *thread)
|
||||||
{
|
{
|
||||||
int event;
|
enum bgp_fsm_events event;
|
||||||
struct peer *peer;
|
struct peer *peer;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -2196,7 +2196,7 @@ int bgp_event(struct thread *thread)
|
|||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bgp_event_update(struct peer *peer, int event)
|
int bgp_event_update(struct peer *peer, enum bgp_fsm_events event)
|
||||||
{
|
{
|
||||||
int next;
|
int next;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -111,7 +111,7 @@
|
|||||||
/* Prototypes. */
|
/* Prototypes. */
|
||||||
extern void bgp_fsm_event_update(struct peer *peer, int valid);
|
extern void bgp_fsm_event_update(struct peer *peer, int valid);
|
||||||
extern int bgp_event(struct thread *);
|
extern int bgp_event(struct thread *);
|
||||||
extern int bgp_event_update(struct peer *, int event);
|
extern int bgp_event_update(struct peer *, enum bgp_fsm_events event);
|
||||||
extern int bgp_stop(struct peer *peer);
|
extern int bgp_stop(struct peer *peer);
|
||||||
extern void bgp_timer_set(struct peer *);
|
extern void bgp_timer_set(struct peer *);
|
||||||
extern int bgp_routeadv_timer(struct thread *);
|
extern int bgp_routeadv_timer(struct thread *);
|
||||||
|
41
bgpd/bgpd.h
41
bgpd/bgpd.h
@ -838,6 +838,24 @@ struct bgp_peer_gr {
|
|||||||
bgp_peer_gr_action_ptr action_fun;
|
bgp_peer_gr_action_ptr action_fun;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* BGP finite state machine events. */
|
||||||
|
enum bgp_fsm_events {
|
||||||
|
BGP_Start = 1,
|
||||||
|
BGP_Stop,
|
||||||
|
TCP_connection_open,
|
||||||
|
TCP_connection_closed,
|
||||||
|
TCP_connection_open_failed,
|
||||||
|
TCP_fatal_error,
|
||||||
|
ConnectRetry_timer_expired,
|
||||||
|
Hold_Timer_expired,
|
||||||
|
KeepAlive_timer_expired,
|
||||||
|
Receive_OPEN_message,
|
||||||
|
Receive_KEEPALIVE_message,
|
||||||
|
Receive_UPDATE_message,
|
||||||
|
Receive_NOTIFICATION_message,
|
||||||
|
Clearing_Completed,
|
||||||
|
BGP_EVENTS_MAX,
|
||||||
|
};
|
||||||
|
|
||||||
/* BGP neighbor structure. */
|
/* BGP neighbor structure. */
|
||||||
struct peer {
|
struct peer {
|
||||||
@ -902,9 +920,9 @@ struct peer {
|
|||||||
/* FSM events, stored for debug purposes.
|
/* FSM events, stored for debug purposes.
|
||||||
* Note: uchar used for reduced memory usage.
|
* Note: uchar used for reduced memory usage.
|
||||||
*/
|
*/
|
||||||
unsigned char cur_event;
|
enum bgp_fsm_events cur_event;
|
||||||
unsigned char last_event;
|
enum bgp_fsm_events last_event;
|
||||||
unsigned char last_major_event;
|
enum bgp_fsm_events last_major_event;
|
||||||
|
|
||||||
/* Peer index, used for dumping TABLE_DUMP_V2 format */
|
/* Peer index, used for dumping TABLE_DUMP_V2 format */
|
||||||
uint16_t table_dump_index;
|
uint16_t table_dump_index;
|
||||||
@ -1561,23 +1579,6 @@ struct bgp_nlri {
|
|||||||
#define Deleted 8
|
#define Deleted 8
|
||||||
#define BGP_STATUS_MAX 9
|
#define BGP_STATUS_MAX 9
|
||||||
|
|
||||||
/* BGP finite state machine events. */
|
|
||||||
#define BGP_Start 1
|
|
||||||
#define BGP_Stop 2
|
|
||||||
#define TCP_connection_open 3
|
|
||||||
#define TCP_connection_closed 4
|
|
||||||
#define TCP_connection_open_failed 5
|
|
||||||
#define TCP_fatal_error 6
|
|
||||||
#define ConnectRetry_timer_expired 7
|
|
||||||
#define Hold_Timer_expired 8
|
|
||||||
#define KeepAlive_timer_expired 9
|
|
||||||
#define Receive_OPEN_message 10
|
|
||||||
#define Receive_KEEPALIVE_message 11
|
|
||||||
#define Receive_UPDATE_message 12
|
|
||||||
#define Receive_NOTIFICATION_message 13
|
|
||||||
#define Clearing_Completed 14
|
|
||||||
#define BGP_EVENTS_MAX 15
|
|
||||||
|
|
||||||
/* BGP timers default value. */
|
/* BGP timers default value. */
|
||||||
#define BGP_INIT_START_TIMER 1
|
#define BGP_INIT_START_TIMER 1
|
||||||
/* The following 3 are RFC defaults that are overridden in bgp_vty.c with
|
/* The following 3 are RFC defaults that are overridden in bgp_vty.c with
|
||||||
|
Loading…
Reference in New Issue
Block a user