]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: fix using of two pointers for struct thread_master *
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 14 Oct 2015 12:50:39 +0000 (08:50 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 14 Oct 2015 13:16:10 +0000 (06:16 -0700)
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>
12 files changed:
bgpd/bgp_damp.c
bgpd/bgp_dump.c
bgpd/bgp_fsm.c
bgpd/bgp_fsm.h
bgpd/bgp_main.c
bgpd/bgp_network.c
bgpd/bgp_route.c
bgpd/bgp_routemap.c
bgpd/bgp_updgrp.c
bgpd/bgp_updgrp_adv.c
bgpd/bgpd.c
bgpd/bgpd.h

index 21df08657a7da034e215d4db4f7581ed45bcde0c..a4ce5ae3f9c3088c59dc5bce4c92722052dfbda7 100644 (file)
@@ -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;
 }
index 58c661227bffe7c750878d10cfd0206165dc6fca..8edf63640e571299df52fc935d9248eb112705d7 100644 (file)
@@ -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);
     }
 
index f85bf059d5457daa8debc76b59b1dcc82ead5415..bd13e1c4b9fb3e7564e1345a50b9a1bc82416e25 100644 (file)
@@ -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,
index 6937a6c3b78415199490641cfc874d29010edad6..e47d07702ba8b9a7c845f82e88624a3daa150760 100644 (file)
@@ -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
index 09e83b8a51f9b6d4de4ac8c02d2892014a17a7c1..49712fcf99fb2d554c8eda84d40b9d20149d330b 100644 (file)
@@ -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. */
index 6b0b792f4a192e547603c73d06a0db7a27068403..592c8416b63bb343d14188c3861333f0d0863e16 100644 (file)
@@ -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;
index 256561f2d131af705f511e12a11a669b6b1ceec8..42613d49b58030f340ea4827f8cabc225eb64275 100644 (file)
@@ -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 :
index 6706c8544b6ae7a97c8c81f11b57a7dc1adf779a..bf3f8c35f0407b9ddd0a1c4e40ee59dcda7f61d5 100644 (file)
@@ -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);
index a0e4a5d9e7ac73611679480a743bd9d4aee7b9bc..f07e886eb035f3cf519f7a24252e179e0e100b28 100644 (file)
@@ -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);
 
index d885e5e7d27f66c71218e372a56c911156292075..16ec20e24d0317d151104db4012123972da2d233 100644 (file)
@@ -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);
     }
 }
index 32966c4947f3d6b273050b8e665a26ad64e932b6..8ba772be1b4be26d0f04424e304f2feb7fa9deda 100644 (file)
@@ -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 ();
index 00e6a1a1faef8399455489e2a74eae3ce76c4571..69ce7219f54a299469726bc0b192644cd87e3f45 100644 (file)
@@ -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);