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 ();
/* 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;
}
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);
}
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);
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,
#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) \
#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) \
#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) \
#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
/* 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;
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);
}
}
- /* 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. */
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. */
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);
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;
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);
}
* 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 :
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);
return 0;
subgrp->t_merge_check =
- thread_add_background (master,
+ thread_add_background (bm->master,
update_subgroup_merge_check_thread_cb,
subgrp, 0);
*/
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);
}
}
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);
bgp_scan_init ();
/* Init zebra. */
- bgp_zebra_init(master);
+ bgp_zebra_init(bm->master);
/* BGP VTY commands installation. */
bgp_vty_init ();
extern struct bgp_master *bm;
-extern struct thread_master *master;
-
/* Prototypes. */
extern void bgp_terminate (void);
extern void bgp_reset (void);