mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 05:03:40 +00:00
bgpd: fix using of two pointers for struct thread_master *
Ticket: CM-7861 Reviewed by: CCR-3651 Testing: See bug bgp is using both bm->master and master pointers interchangebly for thread manipulation. Since they are the same thing consolidate to one pointer. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
87d4a78163
commit
9229d914dd
@ -116,7 +116,7 @@ bgp_reuse_timer (struct thread *t)
|
||||
|
||||
damp->t_reuse = NULL;
|
||||
damp->t_reuse =
|
||||
thread_add_timer (master, bgp_reuse_timer, NULL, DELTA_REUSE);
|
||||
thread_add_timer (bm->master, bgp_reuse_timer, NULL, DELTA_REUSE);
|
||||
|
||||
t_now = bgp_clock ();
|
||||
|
||||
@ -448,7 +448,7 @@ bgp_damp_enable (struct bgp *bgp, afi_t afi, safi_t safi, time_t half,
|
||||
/* Register reuse timer. */
|
||||
if (! damp->t_reuse)
|
||||
damp->t_reuse =
|
||||
thread_add_timer (master, bgp_reuse_timer, NULL, DELTA_REUSE);
|
||||
thread_add_timer (bm->master, bgp_reuse_timer, NULL, DELTA_REUSE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -159,13 +159,13 @@ bgp_dump_interval_add (struct bgp_dump *bgp_dump, int interval)
|
||||
secs_into_day = tm->tm_sec + 60*tm->tm_min + 60*60*tm->tm_hour;
|
||||
interval = interval - secs_into_day % interval; /* always > 0 */
|
||||
}
|
||||
bgp_dump->t_interval = thread_add_timer (master, bgp_dump_interval_func,
|
||||
bgp_dump->t_interval = thread_add_timer (bm->master, bgp_dump_interval_func,
|
||||
bgp_dump, interval);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* One-off dump: execute immediately, don't affect any scheduled dumps */
|
||||
bgp_dump->t_interval = thread_add_event (master, bgp_dump_interval_func,
|
||||
bgp_dump->t_interval = thread_add_event (bm->master, bgp_dump_interval_func,
|
||||
bgp_dump, 0);
|
||||
}
|
||||
|
||||
|
@ -799,7 +799,7 @@ bgp_maxmed_onstartup_begin (struct bgp *bgp)
|
||||
zlog_info ("Begin maxmed onstartup mode - timer %d seconds",
|
||||
bgp->v_maxmed_onstartup);
|
||||
|
||||
THREAD_TIMER_ON (master, bgp->t_maxmed_onstartup,
|
||||
THREAD_TIMER_ON (bm->master, bgp->t_maxmed_onstartup,
|
||||
bgp_maxmed_onstartup_timer,
|
||||
bgp, bgp->v_maxmed_onstartup);
|
||||
|
||||
@ -869,11 +869,11 @@ bgp_update_delay_begin (struct bgp *bgp)
|
||||
peer->update_delay_over = 0;
|
||||
|
||||
/* Start the update-delay timer */
|
||||
THREAD_TIMER_ON (master, bgp->t_update_delay, bgp_update_delay_timer,
|
||||
THREAD_TIMER_ON (bm->master, bgp->t_update_delay, bgp_update_delay_timer,
|
||||
bgp, bgp->v_update_delay);
|
||||
|
||||
if (bgp->v_establish_wait != bgp->v_update_delay)
|
||||
THREAD_TIMER_ON (master, bgp->t_establish_wait, bgp_establish_wait_timer,
|
||||
THREAD_TIMER_ON (bm->master, bgp->t_establish_wait, bgp_establish_wait_timer,
|
||||
bgp, bgp->v_establish_wait);
|
||||
|
||||
quagga_timestamp(3, bgp->update_delay_begin_time,
|
||||
|
@ -26,7 +26,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
#define BGP_READ_ON(T,F,V) \
|
||||
do { \
|
||||
if (!(T) && (peer->status != Deleted)) \
|
||||
THREAD_READ_ON(master,T,F,peer,V); \
|
||||
THREAD_READ_ON(bm->master,T,F,peer,V); \
|
||||
} while (0)
|
||||
|
||||
#define BGP_READ_OFF(T) \
|
||||
@ -38,13 +38,13 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
#define BGP_WRITE_ON(T,F,V) \
|
||||
do { \
|
||||
if (!(T) && (peer->status != Deleted)) \
|
||||
THREAD_WRITE_ON(master,(T),(F),peer,(V)); \
|
||||
THREAD_WRITE_ON(bm->master,(T),(F),peer,(V)); \
|
||||
} while (0)
|
||||
|
||||
#define BGP_PEER_WRITE_ON(T,F,V, peer) \
|
||||
do { \
|
||||
if (!(T) && ((peer)->status != Deleted)) \
|
||||
THREAD_WRITE_ON(master,(T),(F),(peer),(V)); \
|
||||
THREAD_WRITE_ON(bm->master,(T),(F),(peer),(V)); \
|
||||
} while (0)
|
||||
|
||||
#define BGP_WRITE_OFF(T) \
|
||||
@ -56,7 +56,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
#define BGP_TIMER_ON(T,F,V) \
|
||||
do { \
|
||||
if (!(T) && (peer->status != Deleted)) \
|
||||
THREAD_TIMER_ON(master,(T),(F),peer,(V)); \
|
||||
THREAD_TIMER_ON(bm->master,(T),(F),peer,(V)); \
|
||||
} while (0)
|
||||
|
||||
#define BGP_TIMER_OFF(T) \
|
||||
@ -68,13 +68,13 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
#define BGP_EVENT_ADD(P,E) \
|
||||
do { \
|
||||
if ((P)->status != Deleted) \
|
||||
thread_add_event (master, bgp_event, (P), (E)); \
|
||||
thread_add_event (bm->master, bgp_event, (P), (E)); \
|
||||
} while (0)
|
||||
|
||||
#define BGP_EVENT_FLUSH(P) \
|
||||
do { \
|
||||
assert (peer); \
|
||||
thread_cancel_event (master, (P)); \
|
||||
thread_cancel_event (bm->master, (P)); \
|
||||
} while (0)
|
||||
|
||||
#define BGP_MSEC_JITTER 10
|
||||
|
@ -105,9 +105,6 @@ char config_default[] = SYSCONFDIR BGP_DEFAULT_CONFIG;
|
||||
/* Route retain mode flag. */
|
||||
static int retain_mode = 0;
|
||||
|
||||
/* Master of threads. */
|
||||
struct thread_master *master;
|
||||
|
||||
/* Manually specified configuration file name. */
|
||||
char *config_file = NULL;
|
||||
|
||||
@ -296,8 +293,8 @@ bgp_exit (int status)
|
||||
bgp_scan_finish ();
|
||||
|
||||
/* reverse bgp_master_init */
|
||||
if (master)
|
||||
thread_master_free (master);
|
||||
if (bm->master)
|
||||
thread_master_free (bm->master);
|
||||
|
||||
if (zlog_default)
|
||||
closezlog (zlog_default);
|
||||
@ -407,15 +404,13 @@ main (int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
/* Make thread master. */
|
||||
master = bm->master;
|
||||
|
||||
/* Initializations. */
|
||||
srand (time (NULL));
|
||||
signal_init (master, array_size(bgp_signals), bgp_signals);
|
||||
signal_init (bm->master, array_size(bgp_signals), bgp_signals);
|
||||
zprivs_init (&bgpd_privs);
|
||||
cmd_init (1);
|
||||
vty_init (master);
|
||||
vty_init (bm->master);
|
||||
memory_init ();
|
||||
|
||||
/* BGP related initialization. */
|
||||
@ -449,7 +444,7 @@ main (int argc, char **argv)
|
||||
bm->port);
|
||||
|
||||
/* Start finite state machine, here we go! */
|
||||
while (thread_fetch (master, &thread))
|
||||
while (thread_fetch (bm->master, &thread))
|
||||
thread_call (&thread);
|
||||
|
||||
/* Not reached. */
|
||||
|
@ -236,7 +236,7 @@ bgp_accept (struct thread *thread)
|
||||
zlog_err ("accept_sock is nevative value %d", accept_sock);
|
||||
return -1;
|
||||
}
|
||||
listener->thread = thread_add_read (master, bgp_accept, listener, accept_sock);
|
||||
listener->thread = thread_add_read (bm->master, bgp_accept, listener, accept_sock);
|
||||
|
||||
/* Accept client connection. */
|
||||
bgp_sock = sockunion_accept (accept_sock, &su);
|
||||
@ -611,7 +611,7 @@ bgp_listener (int sock, struct sockaddr *sa, socklen_t salen)
|
||||
listener = XMALLOC (MTYPE_BGP_LISTENER, sizeof(*listener));
|
||||
listener->fd = sock;
|
||||
memcpy(&listener->su, sa, salen);
|
||||
listener->thread = thread_add_read (master, bgp_accept, listener, sock);
|
||||
listener->thread = thread_add_read (bm->master, bgp_accept, listener, sock);
|
||||
listnode_add (bm->listen_sockets, listener);
|
||||
|
||||
return 0;
|
||||
|
@ -2110,7 +2110,7 @@ bgp_process_main (struct work_queue *wq, void *data)
|
||||
if (!bgp->t_rmap_def_originate_eval)
|
||||
{
|
||||
bgp_lock (bgp);
|
||||
THREAD_TIMER_ON(master, bgp->t_rmap_def_originate_eval,
|
||||
THREAD_TIMER_ON(bm->master, bgp->t_rmap_def_originate_eval,
|
||||
update_group_refresh_default_originate_route_map,
|
||||
bgp, RMAP_DEFAULT_ORIGINATE_EVAL_TIMER);
|
||||
}
|
||||
@ -3233,7 +3233,7 @@ bgp_announce_route (struct peer *peer, afi_t afi, safi_t safi)
|
||||
* multiple peers and the announcement doesn't happen in the
|
||||
* vty context.
|
||||
*/
|
||||
THREAD_TIMER_MSEC_ON (master, paf->t_announce_route,
|
||||
THREAD_TIMER_MSEC_ON (bm->master, paf->t_announce_route,
|
||||
bgp_announce_route_timer_expired, paf,
|
||||
(subgrp->peer_count == 1) ?
|
||||
BGP_ANNOUNCE_ROUTE_SHORT_DELAY_MS :
|
||||
|
@ -2969,7 +2969,7 @@ bgp_route_map_mark_update (const char *rmap_name)
|
||||
if (bgp->rmap_update_timer)
|
||||
{
|
||||
bgp->t_rmap_update =
|
||||
thread_add_timer(master, bgp_route_map_update_timer, bgp,
|
||||
thread_add_timer(bm->master, bgp_route_map_update_timer, bgp,
|
||||
bgp->rmap_update_timer);
|
||||
/* Signal the groups that a route-map update event has started */
|
||||
update_group_policy_update(bgp, BGP_POLICY_ROUTE_MAP, rmap_name, 1, 1);
|
||||
|
@ -1182,7 +1182,7 @@ update_subgroup_trigger_merge_check (struct update_subgroup *subgrp,
|
||||
return 0;
|
||||
|
||||
subgrp->t_merge_check =
|
||||
thread_add_background (master,
|
||||
thread_add_background (bm->master,
|
||||
update_subgroup_merge_check_thread_cb,
|
||||
subgrp, 0);
|
||||
|
||||
|
@ -743,7 +743,7 @@ subgroup_announce_all (struct update_subgroup *subgrp)
|
||||
*/
|
||||
if (!subgrp->t_coalesce)
|
||||
{
|
||||
THREAD_TIMER_MSEC_ON (master, subgrp->t_coalesce, subgroup_coalesce_timer,
|
||||
THREAD_TIMER_MSEC_ON (bm->master, subgrp->t_coalesce, subgroup_coalesce_timer,
|
||||
subgrp, subgrp->v_coalesce);
|
||||
}
|
||||
}
|
||||
|
@ -2710,7 +2710,7 @@ bgp_create (as_t *as, const char *name)
|
||||
bgp->wpkt_quanta = BGP_WRITE_PACKET_MAX;
|
||||
bgp->coalesce_time = BGP_DEFAULT_SUBGROUP_COALESCE_TIME;
|
||||
|
||||
THREAD_TIMER_ON (master, bgp->t_startup, bgp_startup_timer_expire,
|
||||
THREAD_TIMER_ON (bm->master, bgp->t_startup, bgp_startup_timer_expire,
|
||||
bgp, bgp->restart_time);
|
||||
|
||||
update_bgp_group_init(bgp);
|
||||
@ -6889,7 +6889,7 @@ bgp_init (void)
|
||||
bgp_scan_init ();
|
||||
|
||||
/* Init zebra. */
|
||||
bgp_zebra_init(master);
|
||||
bgp_zebra_init(bm->master);
|
||||
|
||||
/* BGP VTY commands installation. */
|
||||
bgp_vty_init ();
|
||||
|
@ -1110,8 +1110,6 @@ typedef enum
|
||||
|
||||
extern struct bgp_master *bm;
|
||||
|
||||
extern struct thread_master *master;
|
||||
|
||||
/* Prototypes. */
|
||||
extern void bgp_terminate (void);
|
||||
extern void bgp_reset (void);
|
||||
|
Loading…
Reference in New Issue
Block a user