X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=bgpd%2Fbgp_fsm.h;h=d021c9884a55acd011696c522b4282ab80f0930d;hb=d90b788e38db54ff6392bb6999f1bc9434bbba61;hp=33cba868ee30cf7c254db34f3732eb7dd3bf2c32;hpb=57463530f3f8b687f238bc76020c0f168b19f0a8;p=mirror_frr.git diff --git a/bgpd/bgp_fsm.h b/bgpd/bgp_fsm.h index 33cba868e..d021c9884 100644 --- a/bgpd/bgp_fsm.h +++ b/bgpd/bgp_fsm.h @@ -1,4 +1,4 @@ -/* BGP-4 Finite State Machine +/* BGP-4 Finite State Machine * From RFC1771 [A Border Gateway Protocol 4 (BGP-4)] * Copyright (C) 1998 Kunihiro Ishiguro * @@ -23,82 +23,59 @@ #define _QUAGGA_BGP_FSM_H /* Macro for BGP read, write and timer thread. */ -#define BGP_READ_ON(T,F,V) \ - do { \ - if ((peer->status != Deleted)) \ - thread_add_read (bm->master,(F),peer,(V),&(T)); \ - } while (0) - -#define BGP_READ_OFF(T) \ - do { \ - if (T) \ - THREAD_READ_OFF(T); \ - } while (0) - -#define BGP_WRITE_ON(T,F,V) \ - do { \ - if ((peer)->status != Deleted) \ - thread_add_write (bm->master,(F),(peer),(V),&(T)); \ - } while (0) - -#define BGP_PEER_WRITE_ON(T,F,V, peer) \ - do { \ - if ((peer)->status != Deleted) \ - thread_add_write (bm->master,(F),(peer),(V),&(T)); \ - } while (0) - -#define BGP_WRITE_OFF(T) \ - do { \ - if (T) \ - THREAD_WRITE_OFF(T); \ - } while (0) - -#define BGP_TIMER_ON(T,F,V) \ - do { \ - if ((peer->status != Deleted)) \ - thread_add_timer (bm->master,(F),peer,(V),&(T)); \ - } while (0) - -#define BGP_TIMER_OFF(T) \ - do { \ - if (T) \ - THREAD_TIMER_OFF(T); \ - } while (0) - -#define BGP_EVENT_ADD(P,E) \ - do { \ - if ((P)->status != Deleted) \ - thread_add_event (bm->master, bgp_event, (P), (E), NULL); \ - } while (0) - -#define BGP_EVENT_FLUSH(P) \ - do { \ - assert (peer); \ - thread_cancel_event (bm->master, (P)); \ - } while (0) +#define BGP_TIMER_ON(T, F, V) \ + do { \ + if ((peer->status != Deleted)) \ + thread_add_timer(bm->master, (F), peer, (V), &(T)); \ + } while (0) + +#define BGP_TIMER_OFF(T) \ + do { \ + if (T) \ + THREAD_TIMER_OFF(T); \ + } while (0) + +#define BGP_EVENT_ADD(P, E) \ + do { \ + if ((P)->status != Deleted) \ + thread_add_event(bm->master, bgp_event, (P), (E), \ + NULL); \ + } while (0) + +#define BGP_EVENT_FLUSH(P) \ + do { \ + assert(peer); \ + thread_cancel_event(bm->master, (P)); \ + } while (0) #define BGP_MSEC_JITTER 10 +/* Status codes for bgp_event_update() */ +#define FSM_PEER_NOOP 0 +#define FSM_PEER_STOPPED 1 +#define FSM_PEER_TRANSFERRED 2 +#define FSM_PEER_TRANSITIONED 3 + /* Prototypes. */ extern void bgp_fsm_nht_update(struct peer *, int valid); -extern int bgp_event (struct thread *); -extern int bgp_event_update (struct peer *, int event); -extern int bgp_stop (struct peer *peer); -extern void bgp_timer_set (struct peer *); -extern int bgp_routeadv_timer (struct thread *); -extern void bgp_fsm_change_status (struct peer *peer, int status); +extern int bgp_event(struct thread *); +extern int bgp_event_update(struct peer *, int event); +extern int bgp_stop(struct peer *peer); +extern void bgp_timer_set(struct peer *); +extern int bgp_routeadv_timer(struct thread *); +extern void bgp_fsm_change_status(struct peer *peer, int status); extern const char *peer_down_str[]; -extern void bgp_update_delay_end (struct bgp *); -extern void bgp_maxmed_update (struct bgp *); -extern int bgp_maxmed_onstartup_configured (struct bgp *); -extern int bgp_maxmed_onstartup_active (struct bgp *); +extern void bgp_update_delay_end(struct bgp *); +extern void bgp_maxmed_update(struct bgp *); +extern int bgp_maxmed_onstartup_configured(struct bgp *); +extern int bgp_maxmed_onstartup_active(struct bgp *); /** * Start the route advertisement timer (that honors MRAI) for all the * peers. Typically called at the end of initial convergence, coming * out of read-only mode. */ -extern void bgp_start_routeadv (struct bgp *); +extern void bgp_start_routeadv(struct bgp *); /** * See if the route advertisement timer needs to be adjusted for a @@ -107,10 +84,10 @@ extern void bgp_start_routeadv (struct bgp *); * timer to expire to send the new set of prefixes. It should fire * instantly and updates should go out sooner. */ -extern void bgp_adjust_routeadv (struct peer *); +extern void bgp_adjust_routeadv(struct peer *); #include "hook.h" -DECLARE_HOOK(peer_backward_transition, (struct peer *peer), (peer)) -DECLARE_HOOK(peer_established, (struct peer *peer), (peer)) +DECLARE_HOOK(peer_backward_transition, (struct peer * peer), (peer)) +DECLARE_HOOK(peer_established, (struct peer * peer), (peer)) #endif /* _QUAGGA_BGP_FSM_H */