From 9229d914dd36d7cc75cef6269976b4e47e8a6a62 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 14 Oct 2015 08:50:39 -0400 Subject: [PATCH] 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 --- bgpd/bgp_damp.c | 4 ++-- bgpd/bgp_dump.c | 4 ++-- bgpd/bgp_fsm.c | 6 +++--- bgpd/bgp_fsm.h | 12 ++++++------ bgpd/bgp_main.c | 15 +++++---------- bgpd/bgp_network.c | 4 ++-- bgpd/bgp_route.c | 4 ++-- bgpd/bgp_routemap.c | 2 +- bgpd/bgp_updgrp.c | 2 +- bgpd/bgp_updgrp_adv.c | 2 +- bgpd/bgpd.c | 4 ++-- bgpd/bgpd.h | 2 -- 12 files changed, 27 insertions(+), 34 deletions(-) diff --git a/bgpd/bgp_damp.c b/bgpd/bgp_damp.c index 21df08657a..a4ce5ae3f9 100644 --- a/bgpd/bgp_damp.c +++ b/bgpd/bgp_damp.c @@ -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; } diff --git a/bgpd/bgp_dump.c b/bgpd/bgp_dump.c index 58c661227b..8edf63640e 100644 --- a/bgpd/bgp_dump.c +++ b/bgpd/bgp_dump.c @@ -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); } diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index f85bf059d5..bd13e1c4b9 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -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, diff --git a/bgpd/bgp_fsm.h b/bgpd/bgp_fsm.h index 6937a6c3b7..e47d07702b 100644 --- a/bgpd/bgp_fsm.h +++ b/bgpd/bgp_fsm.h @@ -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 diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c index 09e83b8a51..49712fcf99 100644 --- a/bgpd/bgp_main.c +++ b/bgpd/bgp_main.c @@ -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. */ diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 6b0b792f4a..592c8416b6 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -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; diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 256561f2d1..42613d49b5 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -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 : diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index 6706c8544b..bf3f8c35f0 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -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); diff --git a/bgpd/bgp_updgrp.c b/bgpd/bgp_updgrp.c index a0e4a5d9e7..f07e886eb0 100644 --- a/bgpd/bgp_updgrp.c +++ b/bgpd/bgp_updgrp.c @@ -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); diff --git a/bgpd/bgp_updgrp_adv.c b/bgpd/bgp_updgrp_adv.c index d885e5e7d2..16ec20e24d 100644 --- a/bgpd/bgp_updgrp_adv.c +++ b/bgpd/bgp_updgrp_adv.c @@ -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); } } diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 32966c4947..8ba772be1b 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -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 (); diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 00e6a1a1fa..69ce7219f5 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -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); -- 2.39.5