*: unify thread/event cancel macros

Replace all lib/thread cancel macros, use thread_cancel()
everywhere. Only the THREAD_OFF macro and thread_cancel() api are
supported. Also adjust thread_cancel_async() to NULL caller's pointer (if
present).

Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
Mark Stapp 2020-07-17 17:09:51 -04:00
parent b3d6bc6ef0
commit 5047884528
51 changed files with 157 additions and 160 deletions

View file

@ -704,8 +704,8 @@ bool bgp_update_delay_configured(struct bgp *bgp)
on ending the update delay. */
void bgp_update_delay_end(struct bgp *bgp)
{
THREAD_TIMER_OFF(bgp->t_update_delay);
THREAD_TIMER_OFF(bgp->t_establish_wait);
THREAD_OFF(bgp->t_update_delay);
THREAD_OFF(bgp->t_establish_wait);
/* Reset update-delay related state */
bgp->update_delay_over = 1;
@ -924,7 +924,7 @@ static int bgp_maxmed_onstartup_timer(struct thread *thread)
zlog_info("Max med on startup ended - timer expired.");
bgp = THREAD_ARG(thread);
THREAD_TIMER_OFF(bgp->t_maxmed_onstartup);
THREAD_OFF(bgp->t_maxmed_onstartup);
bgp->maxmed_onstartup_over = 1;
bgp_maxmed_update(bgp);
@ -968,7 +968,7 @@ static int bgp_update_delay_timer(struct thread *thread)
zlog_info("Update delay ended - timer expired.");
bgp = THREAD_ARG(thread);
THREAD_TIMER_OFF(bgp->t_update_delay);
THREAD_OFF(bgp->t_update_delay);
bgp_update_delay_end(bgp);
return 0;
@ -982,7 +982,7 @@ static int bgp_establish_wait_timer(struct thread *thread)
zlog_info("Establish wait - timer expired.");
bgp = THREAD_ARG(thread);
THREAD_TIMER_OFF(bgp->t_establish_wait);
THREAD_OFF(bgp->t_establish_wait);
bgp_check_update_delay(bgp);
return 0;

View file

@ -31,7 +31,7 @@
#define BGP_TIMER_OFF(T) \
do { \
THREAD_TIMER_OFF(T); \
THREAD_OFF(T); \
} while (0)
#define BGP_EVENT_ADD(P, E) \

View file

@ -31,7 +31,7 @@
#include "network.h" // for ERRNO_IO_RETRY
#include "stream.h" // for stream_get_endp, stream_getw_from, str...
#include "ringbuf.h" // for ringbuf_remain, ringbuf_peek, ringbuf_...
#include "thread.h" // for THREAD_OFF, THREAD_ARG, thread, thread...
#include "thread.h" // for THREAD_OFF, THREAD_ARG, thread...
#include "zassert.h" // for assert
#include "bgpd/bgp_io.h"

View file

@ -509,7 +509,7 @@ int bgp_global_med_config_max_med_onstart_up_time_destroy(
/* Cancel max-med onstartup if its on */
if (bgp->t_maxmed_onstartup) {
THREAD_TIMER_OFF(bgp->t_maxmed_onstartup);
THREAD_OFF(bgp->t_maxmed_onstartup);
bgp->maxmed_onstartup_over = 1;
}

View file

@ -4289,7 +4289,7 @@ void bgp_stop_announce_route_timer(struct peer_af *paf)
if (!paf->t_announce_route)
return;
THREAD_TIMER_OFF(paf->t_announce_route);
thread_cancel(&paf->t_announce_route);
}
/*

View file

@ -796,13 +796,11 @@ static void update_subgroup_delete(struct update_subgroup *subgrp)
UPDGRP_INCR_STAT(subgrp->update_group, subgrps_deleted);
THREAD_OFF(subgrp->t_merge_check);
THREAD_TIMER_OFF(subgrp->t_coalesce);
THREAD_OFF(subgrp->t_coalesce);
bpacket_queue_cleanup(SUBGRP_PKTQ(subgrp));
subgroup_clear_table(subgrp);
THREAD_TIMER_OFF(subgrp->t_coalesce);
sync_delete(subgrp);
if (BGP_DEBUG(update_groups, UPDATE_GROUPS) && subgrp->update_group)
@ -1768,7 +1766,7 @@ int update_group_refresh_default_originate_route_map(struct thread *thread)
bgp = THREAD_ARG(thread);
update_group_walk(bgp, update_group_default_originate_route_map_walkcb,
reason);
THREAD_TIMER_OFF(bgp->t_rmap_def_originate_eval);
thread_cancel(&bgp->t_rmap_def_originate_eval);
bgp_unlock(bgp);
return 0;

View file

@ -159,8 +159,8 @@ void eigrp_distribute_update(struct distribute_ctx *ctx,
#endif
// TODO: check Graceful restart after 10sec
/* cancel GR scheduled */
thread_cancel(&(e->t_distribute));
/* cancel GR scheduled */
thread_cancel(&(e->t_distribute));
/* schedule Graceful restart for whole process in 10sec */
thread_add_timer(master, eigrp_distribute_timer_process, e,
@ -264,7 +264,7 @@ void eigrp_distribute_update(struct distribute_ctx *ctx,
#endif
// TODO: check Graceful restart after 10sec
/* Cancel GR scheduled */
/* Cancel GR scheduled */
thread_cancel(&(ei->t_distribute));
/* schedule Graceful restart for interface in 10sec */
e->t_distribute = NULL;

View file

@ -420,7 +420,7 @@ void eigrp_if_free(struct eigrp_interface *ei, int source)
struct eigrp *eigrp = ei->eigrp;
if (source == INTERFACE_DOWN_BY_VTY) {
THREAD_OFF(ei->t_hello);
thread_cancel(&ei->t_hello);
eigrp_hello_send(ei, EIGRP_HELLO_GRACEFUL_SHUTDOWN, NULL);
}

View file

@ -147,7 +147,7 @@ void isis_delete_adj(void *arg)
if (!adj)
return;
THREAD_TIMER_OFF(adj->t_expire);
thread_cancel(&adj->t_expire);
if (adj->adj_state != ISIS_ADJ_DOWN)
adj->adj_state = ISIS_ADJ_DOWN;

View file

@ -788,12 +788,12 @@ void isis_circuit_down(struct isis_circuit *circuit)
memset(circuit->u.bc.l2_desig_is, 0, ISIS_SYS_ID_LEN + 1);
memset(circuit->u.bc.snpa, 0, ETH_ALEN);
THREAD_TIMER_OFF(circuit->u.bc.t_send_lan_hello[0]);
THREAD_TIMER_OFF(circuit->u.bc.t_send_lan_hello[1]);
THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[0]);
THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[1]);
THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[0]);
THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[1]);
thread_cancel(&circuit->u.bc.t_send_lan_hello[0]);
thread_cancel(&circuit->u.bc.t_send_lan_hello[1]);
thread_cancel(&circuit->u.bc.t_run_dr[0]);
thread_cancel(&circuit->u.bc.t_run_dr[1]);
thread_cancel(&circuit->u.bc.t_refresh_pseudo_lsp[0]);
thread_cancel(&circuit->u.bc.t_refresh_pseudo_lsp[1]);
circuit->lsp_regenerate_pending[0] = 0;
circuit->lsp_regenerate_pending[1] = 0;
@ -803,15 +803,15 @@ void isis_circuit_down(struct isis_circuit *circuit)
} else if (circuit->circ_type == CIRCUIT_T_P2P) {
isis_delete_adj(circuit->u.p2p.neighbor);
circuit->u.p2p.neighbor = NULL;
THREAD_TIMER_OFF(circuit->u.p2p.t_send_p2p_hello);
thread_cancel(&circuit->u.p2p.t_send_p2p_hello);
}
/* Cancel all active threads */
THREAD_TIMER_OFF(circuit->t_send_csnp[0]);
THREAD_TIMER_OFF(circuit->t_send_csnp[1]);
THREAD_TIMER_OFF(circuit->t_send_psnp[0]);
THREAD_TIMER_OFF(circuit->t_send_psnp[1]);
THREAD_OFF(circuit->t_read);
thread_cancel(&circuit->t_send_csnp[0]);
thread_cancel(&circuit->t_send_csnp[1]);
thread_cancel(&circuit->t_send_psnp[0]);
thread_cancel(&circuit->t_send_psnp[1]);
thread_cancel(&circuit->t_read);
if (circuit->tx_queue) {
isis_tx_queue_free(circuit->tx_queue);

View file

@ -221,8 +221,8 @@ int isis_dr_resign(struct isis_circuit *circuit, int level)
circuit->u.bc.is_dr[level - 1] = 0;
circuit->u.bc.run_dr_elect[level - 1] = 0;
THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[level - 1]);
THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[level - 1]);
thread_cancel(&circuit->u.bc.t_run_dr[level - 1]);
thread_cancel(&circuit->u.bc.t_refresh_pseudo_lsp[level - 1]);
circuit->lsp_regenerate_pending[level - 1] = 0;
memcpy(id, circuit->isis->sysid, ISIS_SYS_ID_LEN);
@ -246,7 +246,7 @@ int isis_dr_resign(struct isis_circuit *circuit, int level)
&circuit->t_send_psnp[1]);
}
THREAD_TIMER_OFF(circuit->t_send_csnp[level - 1]);
thread_cancel(&circuit->t_send_csnp[level - 1]);
thread_add_timer(master, isis_run_dr,
&circuit->level_arg[level - 1],

View file

@ -109,13 +109,13 @@ static void circuit_resign_level(struct isis_circuit *circuit, int level)
circuit->area->area_tag, circuit->circuit_id,
circuit->interface->name, level);
THREAD_TIMER_OFF(circuit->t_send_csnp[idx]);
THREAD_TIMER_OFF(circuit->t_send_psnp[idx]);
thread_cancel(&circuit->t_send_csnp[idx]);
thread_cancel(&circuit->t_send_psnp[idx]);
if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
THREAD_TIMER_OFF(circuit->u.bc.t_send_lan_hello[idx]);
THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[idx]);
THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[idx]);
thread_cancel(&circuit->u.bc.t_send_lan_hello[idx]);
thread_cancel(&circuit->u.bc.t_run_dr[idx]);
thread_cancel(&circuit->u.bc.t_refresh_pseudo_lsp[idx]);
circuit->lsp_regenerate_pending[idx] = 0;
circuit->u.bc.run_dr_elect[idx] = 0;
circuit->u.bc.is_dr[idx] = 0;

View file

@ -135,8 +135,8 @@ int isis_ldp_sync_announce_update(struct ldp_igp_sync_announce announce)
}
}
THREAD_TIMER_OFF(isis->ldp_sync_cmd.t_hello);
isis->ldp_sync_cmd.t_hello = NULL;
THREAD_OFF(isis->ldp_sync_cmd.t_hello);
isis->ldp_sync_cmd.sequence = 0;
isis_ldp_sync_hello_timer_add();
@ -186,7 +186,7 @@ int isis_ldp_sync_hello_update(struct ldp_igp_sync_hello hello)
}
}
} else {
THREAD_TIMER_OFF(isis->ldp_sync_cmd.t_hello);
THREAD_OFF(isis->ldp_sync_cmd.t_hello);
isis_ldp_sync_hello_timer_add();
}
isis->ldp_sync_cmd.sequence = hello.sequence;
@ -280,8 +280,9 @@ void isis_ldp_sync_if_complete(struct isis_circuit *circuit)
if (ldp_sync_info && ldp_sync_info->enabled == LDP_IGP_SYNC_ENABLED) {
if (ldp_sync_info->state == LDP_IGP_SYNC_STATE_REQUIRED_NOT_UP)
ldp_sync_info->state = LDP_IGP_SYNC_STATE_REQUIRED_UP;
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->t_holddown = NULL;
THREAD_OFF(ldp_sync_info->t_holddown);
isis_ldp_sync_set_if_metric(circuit, true);
}
}
@ -300,7 +301,7 @@ void isis_ldp_sync_ldp_fail(struct isis_circuit *circuit)
if (ldp_sync_info &&
ldp_sync_info->enabled == LDP_IGP_SYNC_ENABLED &&
ldp_sync_info->state != LDP_IGP_SYNC_STATE_NOT_REQUIRED) {
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
THREAD_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->state = LDP_IGP_SYNC_STATE_REQUIRED_NOT_UP;
isis_ldp_sync_set_if_metric(circuit, true);
}
@ -323,7 +324,7 @@ void isis_ldp_sync_if_remove(struct isis_circuit *circuit, bool remove)
ils_debug("ldp_sync: remove if %s", circuit->interface
? circuit->interface->name : "");
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
THREAD_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->state = LDP_IGP_SYNC_STATE_NOT_REQUIRED;
isis_ldp_sync_set_if_metric(circuit, true);
if (remove) {
@ -662,8 +663,7 @@ void isis_ldp_sync_gbl_exit(bool remove)
UNSET_FLAG(isis->ldp_sync_cmd.flags, LDP_SYNC_FLAG_ENABLE);
UNSET_FLAG(isis->ldp_sync_cmd.flags, LDP_SYNC_FLAG_HOLDDOWN);
isis->ldp_sync_cmd.holddown = LDP_IGP_SYNC_HOLDDOWN_DEFAULT;
THREAD_TIMER_OFF(isis->ldp_sync_cmd.t_hello);
isis->ldp_sync_cmd.t_hello = NULL;
THREAD_OFF(isis->ldp_sync_cmd.t_hello);
/* remove LDP-SYNC on all ISIS interfaces */
FOR_ALL_INTERFACES (vrf, ifp) {

View file

@ -1241,7 +1241,7 @@ int lsp_generate(struct isis_area *area, int level)
refresh_time = lsp_refresh_time(newlsp, rem_lifetime);
THREAD_TIMER_OFF(area->t_lsp_refresh[level - 1]);
thread_cancel(&area->t_lsp_refresh[level - 1]);
area->lsp_regenerate_pending[level - 1] = 0;
thread_add_timer(master, lsp_refresh,
&area->lsp_refresh_arg[level - 1], refresh_time,
@ -1451,7 +1451,7 @@ int _lsp_regenerate_schedule(struct isis_area *area, int level,
"ISIS (%s): Will schedule regen timer. Last run was: %lld, Now is: %lld",
area->area_tag, (long long)lsp->last_generated,
(long long)now);
THREAD_TIMER_OFF(area->t_lsp_refresh[lvl - 1]);
thread_cancel(&area->t_lsp_refresh[lvl - 1]);
diff = now - lsp->last_generated;
if (diff < area->lsp_gen_interval[lvl - 1]
&& !(area->bfd_signalled_down)) {
@ -1628,7 +1628,7 @@ int lsp_generate_pseudo(struct isis_circuit *circuit, int level)
lsp_flood(lsp, NULL);
refresh_time = lsp_refresh_time(lsp, rem_lifetime);
THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[level - 1]);
thread_cancel(&circuit->u.bc.t_refresh_pseudo_lsp[level - 1]);
circuit->lsp_regenerate_pending[level - 1] = 0;
if (level == IS_LEVEL_1)
thread_add_timer(
@ -1819,7 +1819,7 @@ int lsp_regenerate_schedule_pseudo(struct isis_circuit *circuit, int level)
"ISIS (%s): Will schedule PSN regen timer. Last run was: %lld, Now is: %lld",
area->area_tag, (long long)lsp->last_generated,
(long long)now);
THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[lvl - 1]);
thread_cancel(&circuit->u.bc.t_refresh_pseudo_lsp[lvl - 1]);
diff = now - lsp->last_generated;
if (diff < circuit->area->lsp_gen_interval[lvl - 1]) {
timeout =

View file

@ -2844,8 +2844,7 @@ int lib_interface_isis_mpls_ldp_sync_modify(struct nb_cb_modify_args *args)
SET_FLAG(ldp_sync_info->flags, LDP_SYNC_FLAG_IF_CONFIG);
ldp_sync_info->enabled = LDP_IGP_SYNC_DEFAULT;
ldp_sync_info->state = LDP_IGP_SYNC_STATE_NOT_REQUIRED;
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->t_holddown = NULL;
THREAD_OFF(ldp_sync_info->t_holddown);
isis_ldp_sync_set_if_metric(circuit, true);
}
break;

View file

@ -205,7 +205,7 @@ static int process_p2p_hello(struct iih_info *iih)
adj);
/* lets take care of the expiry */
THREAD_TIMER_OFF(adj->t_expire);
thread_cancel(&adj->t_expire);
thread_add_timer(master, isis_adj_expire, adj, (long)adj->hold_time,
&adj->t_expire);
@ -497,7 +497,7 @@ static int process_lan_hello(struct iih_info *iih)
adj);
/* lets take care of the expiry */
THREAD_TIMER_OFF(adj->t_expire);
thread_cancel(&adj->t_expire);
thread_add_timer(master, isis_adj_expire, adj, (long)adj->hold_time,
&adj->t_expire);

View file

@ -2284,7 +2284,7 @@ void isis_sr_stop(struct isis_area *area)
area->area_tag);
/* Disable any re-attempt to connect to Label Manager */
THREAD_TIMER_OFF(srdb->t_start_lm);
thread_cancel(&srdb->t_start_lm);
/* Uninstall all local Adjacency-SIDs. */
for (ALL_LIST_ELEMENTS(area->srdb.adj_sids, node, nnode, sra))

View file

@ -442,8 +442,8 @@ void isis_area_destroy(struct isis_area *area)
spftree_area_del(area);
THREAD_TIMER_OFF(area->spf_timer[0]);
THREAD_TIMER_OFF(area->spf_timer[1]);
thread_cancel(&area->spf_timer[0]);
thread_cancel(&area->spf_timer[1]);
spf_backoff_free(area->spf_delay_ietf[0]);
spf_backoff_free(area->spf_delay_ietf[1]);
@ -457,9 +457,9 @@ void isis_area_destroy(struct isis_area *area)
}
area->area_addrs = NULL;
THREAD_TIMER_OFF(area->t_tick);
THREAD_TIMER_OFF(area->t_lsp_refresh[0]);
THREAD_TIMER_OFF(area->t_lsp_refresh[1]);
thread_cancel(&area->t_tick);
thread_cancel(&area->t_lsp_refresh[0]);
thread_cancel(&area->t_lsp_refresh[1]);
thread_cancel_event(master, area);
@ -2373,12 +2373,12 @@ static void area_resign_level(struct isis_area *area, int level)
}
}
THREAD_TIMER_OFF(area->spf_timer[level - 1]);
thread_cancel(&area->spf_timer[level - 1]);
sched_debug(
"ISIS (%s): Resigned from L%d - canceling LSP regeneration timer.",
area->area_tag, level);
THREAD_TIMER_OFF(area->t_lsp_refresh[level - 1]);
thread_cancel(&area->t_lsp_refresh[level - 1]);
area->lsp_regenerate_pending[level - 1] = 0;
}

View file

@ -74,7 +74,7 @@ accept_del(int fd)
LIST_FOREACH(av, &accept_queue.queue, entry)
if (av->fd == fd) {
log_debug("%s: %d removed from queue", __func__, fd);
THREAD_READ_OFF(av->ev);
thread_cancel(&av->ev);
LIST_REMOVE(av, entry);
free(av);
return;
@ -95,7 +95,7 @@ accept_unpause(void)
{
if (accept_queue.evt != NULL) {
log_debug(__func__);
THREAD_TIMER_OFF(accept_queue.evt);
thread_cancel(&accept_queue.evt);
accept_arm();
}
}
@ -115,7 +115,7 @@ accept_unarm(void)
{
struct accept_ev *av;
LIST_FOREACH(av, &accept_queue.queue, entry)
THREAD_READ_OFF(av->ev);
thread_cancel(&av->ev);
}
static int

View file

@ -198,7 +198,7 @@ adj_itimer(struct thread *thread)
void
adj_start_itimer(struct adj *adj)
{
THREAD_TIMER_OFF(adj->inactivity_timer);
thread_cancel(&adj->inactivity_timer);
adj->inactivity_timer = NULL;
thread_add_timer(master, adj_itimer, adj, adj->holdtime,
&adj->inactivity_timer);
@ -207,7 +207,7 @@ adj_start_itimer(struct adj *adj)
void
adj_stop_itimer(struct adj *adj)
{
THREAD_TIMER_OFF(adj->inactivity_timer);
thread_cancel(&adj->inactivity_timer);
}
/* targeted neighbors */
@ -359,7 +359,7 @@ tnbr_hello_timer(struct thread *thread)
static void
tnbr_start_hello_timer(struct tnbr *tnbr)
{
THREAD_TIMER_OFF(tnbr->hello_timer);
thread_cancel(&tnbr->hello_timer);
tnbr->hello_timer = NULL;
thread_add_timer(master, tnbr_hello_timer, tnbr, tnbr_get_hello_interval(tnbr),
&tnbr->hello_timer);
@ -368,7 +368,7 @@ tnbr_start_hello_timer(struct tnbr *tnbr)
static void
tnbr_stop_hello_timer(struct tnbr *tnbr)
{
THREAD_TIMER_OFF(tnbr->hello_timer);
thread_cancel(&tnbr->hello_timer);
}
struct ctl_adj *

View file

@ -183,8 +183,8 @@ control_close(int fd)
msgbuf_clear(&c->iev.ibuf.w);
TAILQ_REMOVE(&ctl_conns, c, entry);
THREAD_READ_OFF(c->iev.ev_read);
THREAD_WRITE_OFF(c->iev.ev_write);
thread_cancel(&c->iev.ev_read);
thread_cancel(&c->iev.ev_write);
close(c->iev.ibuf.fd);
accept_unpause();
free(c);

View file

@ -470,7 +470,7 @@ if_hello_timer(struct thread *thread)
static void
if_start_hello_timer(struct iface_af *ia)
{
THREAD_TIMER_OFF(ia->hello_timer);
thread_cancel(&ia->hello_timer);
ia->hello_timer = NULL;
thread_add_timer(master, if_hello_timer, ia, if_get_hello_interval(ia),
&ia->hello_timer);
@ -479,7 +479,7 @@ if_start_hello_timer(struct iface_af *ia)
static void
if_stop_hello_timer(struct iface_af *ia)
{
THREAD_TIMER_OFF(ia->hello_timer);
thread_cancel(&ia->hello_timer);
}
struct ctl_iface *
@ -753,8 +753,7 @@ static void start_wait_for_ldp_sync_timer(struct iface *iface)
if (iface->ldp_sync.wait_for_sync_timer)
return;
THREAD_TIMER_OFF(iface->ldp_sync.wait_for_sync_timer);
iface->ldp_sync.wait_for_sync_timer = NULL;
THREAD_OFF(iface->ldp_sync.wait_for_sync_timer);
thread_add_timer(master, iface_wait_for_ldp_sync_timer, iface,
if_get_wait_for_sync_interval(),
&iface->ldp_sync.wait_for_sync_timer);
@ -762,8 +761,7 @@ static void start_wait_for_ldp_sync_timer(struct iface *iface)
static void stop_wait_for_ldp_sync_timer(struct iface *iface)
{
THREAD_TIMER_OFF(iface->ldp_sync.wait_for_sync_timer);
iface->ldp_sync.wait_for_sync_timer = NULL;
THREAD_OFF(iface->ldp_sync.wait_for_sync_timer);
}
static int

View file

@ -415,8 +415,8 @@ lde_dispatch_imsg(struct thread *thread)
imsg_event_add(iev);
else {
/* this pipe is dead, so remove the event handlers and exit */
THREAD_READ_OFF(iev->ev_read);
THREAD_WRITE_OFF(iev->ev_write);
thread_cancel(&iev->ev_read);
thread_cancel(&iev->ev_write);
lde_shutdown();
}
@ -661,8 +661,8 @@ lde_dispatch_parent(struct thread *thread)
imsg_event_add(iev);
else {
/* this pipe is dead, so remove the event handlers and exit */
THREAD_READ_OFF(iev->ev_read);
THREAD_WRITE_OFF(iev->ev_write);
thread_cancel(&iev->ev_read);
thread_cancel(&iev->ev_write);
lde_shutdown();
}

View file

@ -1060,7 +1060,7 @@ lde_gc_timer(struct thread *thread)
void
lde_gc_start_timer(void)
{
THREAD_TIMER_OFF(gc_timer);
thread_cancel(&gc_timer);
gc_timer = NULL;
thread_add_timer(master, lde_gc_timer, NULL, LDE_GC_INTERVAL,
&gc_timer);
@ -1069,5 +1069,5 @@ lde_gc_start_timer(void)
void
lde_gc_stop_timer(void)
{
THREAD_TIMER_OFF(gc_timer);
thread_cancel(&gc_timer);
}

View file

@ -604,8 +604,8 @@ main_dispatch_ldpe(struct thread *thread)
imsg_event_add(iev);
else {
/* this pipe is dead, so remove the event handlers and exit */
THREAD_READ_OFF(iev->ev_read);
THREAD_WRITE_OFF(iev->ev_write);
thread_cancel(&iev->ev_read);
thread_cancel(&iev->ev_write);
ldpe_pid = 0;
if (lde_pid == 0)
ldpd_shutdown();
@ -702,8 +702,8 @@ main_dispatch_lde(struct thread *thread)
imsg_event_add(iev);
else {
/* this pipe is dead, so remove the event handlers and exit */
THREAD_READ_OFF(iev->ev_read);
THREAD_WRITE_OFF(iev->ev_write);
thread_cancel(&iev->ev_read);
thread_cancel(&iev->ev_write);
lde_pid = 0;
if (ldpe_pid == 0)
ldpd_shutdown();
@ -728,8 +728,8 @@ ldp_write_handler(struct thread *thread)
fatal("msgbuf_write");
if (n == 0) {
/* this pipe is dead, so remove the event handlers */
THREAD_READ_OFF(iev->ev_read);
THREAD_WRITE_OFF(iev->ev_write);
thread_cancel(&iev->ev_read);
thread_cancel(&iev->ev_write);
return (0);
}
@ -816,7 +816,7 @@ evbuf_init(struct evbuf *eb, int fd, int (*handler)(struct thread *),
void
evbuf_clear(struct evbuf *eb)
{
THREAD_WRITE_OFF(eb->ev);
thread_cancel(&eb->ev);
msgbuf_clear(&eb->wbuf);
eb->wbuf.fd = -1;
}

View file

@ -208,7 +208,7 @@ ldpe_shutdown(void)
#ifdef __OpenBSD__
if (sysdep.no_pfkey == 0) {
THREAD_READ_OFF(pfkey_ev);
thread_cancel(&pfkey_ev);
close(global.pfkeysock);
}
#endif
@ -580,8 +580,8 @@ ldpe_dispatch_main(struct thread *thread)
imsg_event_add(iev);
else {
/* this pipe is dead, so remove the event handlers and exit */
THREAD_READ_OFF(iev->ev_read);
THREAD_WRITE_OFF(iev->ev_write);
thread_cancel(&iev->ev_read);
thread_cancel(&iev->ev_write);
ldpe_shutdown();
}
@ -719,8 +719,8 @@ ldpe_dispatch_lde(struct thread *thread)
imsg_event_add(iev);
else {
/* this pipe is dead, so remove the event handlers and exit */
THREAD_READ_OFF(iev->ev_read);
THREAD_WRITE_OFF(iev->ev_write);
thread_cancel(&iev->ev_read);
thread_cancel(&iev->ev_write);
ldpe_shutdown();
}
@ -778,14 +778,14 @@ ldpe_close_sockets(int af)
af_global = ldp_af_global_get(&global, af);
/* discovery socket */
THREAD_READ_OFF(af_global->disc_ev);
thread_cancel(&af_global->disc_ev);
if (af_global->ldp_disc_socket != -1) {
close(af_global->ldp_disc_socket);
af_global->ldp_disc_socket = -1;
}
/* extended discovery socket */
THREAD_READ_OFF(af_global->edisc_ev);
thread_cancel(&af_global->edisc_ev);
if (af_global->ldp_edisc_socket != -1) {
close(af_global->ldp_edisc_socket);
af_global->ldp_edisc_socket = -1;

View file

@ -302,7 +302,7 @@ nbr_del(struct nbr *nbr)
nbr->auth.method = AUTH_NONE;
if (nbr_pending_connect(nbr))
THREAD_WRITE_OFF(nbr->ev_connect);
thread_cancel(&nbr->ev_connect);
nbr_stop_ktimer(nbr);
nbr_stop_ktimeout(nbr);
nbr_stop_itimeout(nbr);
@ -416,7 +416,7 @@ nbr_start_ktimer(struct nbr *nbr)
/* send three keepalives per period */
secs = nbr->keepalive / KEEPALIVE_PER_PERIOD;
THREAD_TIMER_OFF(nbr->keepalive_timer);
thread_cancel(&nbr->keepalive_timer);
nbr->keepalive_timer = NULL;
thread_add_timer(master, nbr_ktimer, nbr, secs, &nbr->keepalive_timer);
}
@ -424,7 +424,7 @@ nbr_start_ktimer(struct nbr *nbr)
void
nbr_stop_ktimer(struct nbr *nbr)
{
THREAD_TIMER_OFF(nbr->keepalive_timer);
thread_cancel(&nbr->keepalive_timer);
}
/* Keepalive timeout: if the nbr hasn't sent keepalive */
@ -446,7 +446,7 @@ nbr_ktimeout(struct thread *thread)
static void
nbr_start_ktimeout(struct nbr *nbr)
{
THREAD_TIMER_OFF(nbr->keepalive_timeout);
thread_cancel(&nbr->keepalive_timeout);
nbr->keepalive_timeout = NULL;
thread_add_timer(master, nbr_ktimeout, nbr, nbr->keepalive,
&nbr->keepalive_timeout);
@ -455,7 +455,7 @@ nbr_start_ktimeout(struct nbr *nbr)
void
nbr_stop_ktimeout(struct nbr *nbr)
{
THREAD_TIMER_OFF(nbr->keepalive_timeout);
thread_cancel(&nbr->keepalive_timeout);
}
/* Session initialization timeout: if nbr got stuck in the initialization FSM */
@ -478,7 +478,7 @@ nbr_start_itimeout(struct nbr *nbr)
int secs;
secs = INIT_FSM_TIMEOUT;
THREAD_TIMER_OFF(nbr->init_timeout);
thread_cancel(&nbr->init_timeout);
nbr->init_timeout = NULL;
thread_add_timer(master, nbr_itimeout, nbr, secs, &nbr->init_timeout);
}
@ -486,7 +486,7 @@ nbr_start_itimeout(struct nbr *nbr)
void
nbr_stop_itimeout(struct nbr *nbr)
{
THREAD_TIMER_OFF(nbr->init_timeout);
thread_cancel(&nbr->init_timeout);
}
/* Init delay timer: timer to retry to iniziatize session */
@ -527,7 +527,7 @@ nbr_start_idtimer(struct nbr *nbr)
break;
}
THREAD_TIMER_OFF(nbr->initdelay_timer);
thread_cancel(&nbr->initdelay_timer);
nbr->initdelay_timer = NULL;
thread_add_timer(master, nbr_idtimer, nbr, secs,
&nbr->initdelay_timer);
@ -536,7 +536,7 @@ nbr_start_idtimer(struct nbr *nbr)
void
nbr_stop_idtimer(struct nbr *nbr)
{
THREAD_TIMER_OFF(nbr->initdelay_timer);
thread_cancel(&nbr->initdelay_timer);
}
int

View file

@ -662,7 +662,7 @@ session_shutdown(struct nbr *nbr, uint32_t status, uint32_t msg_id,
switch (nbr->state) {
case NBR_STA_PRESENT:
if (nbr_pending_connect(nbr))
THREAD_WRITE_OFF(nbr->ev_connect);
thread_cancel(&nbr->ev_connect);
break;
case NBR_STA_INITIAL:
case NBR_STA_OPENREC:
@ -762,7 +762,7 @@ tcp_close(struct tcp_conn *tcp)
evbuf_clear(&tcp->wbuf);
if (tcp->nbr) {
THREAD_READ_OFF(tcp->rev);
thread_cancel(&tcp->rev);
free(tcp->rbuf);
tcp->nbr->tcp = NULL;
}
@ -794,7 +794,7 @@ pending_conn_new(int fd, int af, union ldpd_addr *addr)
void
pending_conn_del(struct pending_conn *pconn)
{
THREAD_TIMER_OFF(pconn->ev_timeout);
thread_cancel(&pconn->ev_timeout);
TAILQ_REMOVE(&global.pending_conns, pconn, entry);
free(pconn);
}

View file

@ -107,7 +107,7 @@ static void agentx_events_update(void)
struct thread *thr;
int fd, thr_fd;
THREAD_OFF(timeout_thr);
thread_cancel(&timeout_thr);
FD_ZERO(&fds);
snmp_select_info(&maxfd, &fds, &timeout, &block);

View file

@ -79,7 +79,7 @@ bool ldp_sync_if_down(struct ldp_sync_info *ldp_sync_info)
* update state
*/
if (ldp_sync_info && ldp_sync_info->enabled == LDP_IGP_SYNC_ENABLED) {
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
THREAD_OFF(ldp_sync_info->t_holddown);
if (ldp_sync_info->state == LDP_IGP_SYNC_STATE_REQUIRED_UP)
ldp_sync_info->state =

View file

@ -89,7 +89,7 @@ static int nb_cli_classic_commit(struct vty *vty)
static void nb_cli_pending_commit_clear(struct vty *vty)
{
THREAD_TIMER_OFF(vty->t_pending_commit);
THREAD_OFF(vty->t_pending_commit);
vty->backoff_cmd_count = 0;
XFREE(MTYPE_TMP, vty->pending_cmds_buf);
vty->pending_cmds_buflen = 0;
@ -154,7 +154,7 @@ static int nb_cli_schedule_command(struct vty *vty)
vty->pending_cmds_buflen);
/* Schedule the commit operation. */
THREAD_TIMER_OFF(vty->t_pending_commit);
THREAD_OFF(vty->t_pending_commit);
thread_add_timer_msec(master, nb_cli_pending_commit_cb, vty, 100,
&vty->t_pending_commit);
@ -312,7 +312,7 @@ int nb_cli_rpc(struct vty *vty, const char *xpath, struct list *input,
void nb_cli_confirmed_commit_clean(struct vty *vty)
{
THREAD_TIMER_OFF(vty->t_confirmed_commit_timeout);
thread_cancel(&vty->t_confirmed_commit_timeout);
nb_config_free(vty->confirmed_commit_rollback);
vty->confirmed_commit_rollback = NULL;
}
@ -377,7 +377,7 @@ static int nb_cli_commit(struct vty *vty, bool force,
"%% Resetting confirmed-commit timeout to %u minute(s)\n\n",
confirmed_timeout);
THREAD_TIMER_OFF(vty->t_confirmed_commit_timeout);
thread_cancel(&vty->t_confirmed_commit_timeout);
thread_add_timer(master,
nb_cli_confirmed_commit_timeout, vty,
confirmed_timeout * 60,

View file

@ -110,8 +110,8 @@ void spf_backoff_free(struct spf_backoff *backoff)
if (!backoff)
return;
THREAD_TIMER_OFF(backoff->t_holddown);
THREAD_TIMER_OFF(backoff->t_timetolearn);
thread_cancel(&backoff->t_holddown);
thread_cancel(&backoff->t_timetolearn);
XFREE(MTYPE_SPF_BACKOFF_NAME, backoff->name);
XFREE(MTYPE_SPF_BACKOFF, backoff);
@ -121,7 +121,6 @@ static int spf_backoff_timetolearn_elapsed(struct thread *thread)
{
struct spf_backoff *backoff = THREAD_ARG(thread);
backoff->t_timetolearn = NULL;
backoff->state = SPF_BACKOFF_LONG_WAIT;
backoff_debug("SPF Back-off(%s) TIMETOLEARN elapsed, move to state %s",
backoff->name, spf_backoff_state2str(backoff->state));
@ -132,7 +131,7 @@ static int spf_backoff_holddown_elapsed(struct thread *thread)
{
struct spf_backoff *backoff = THREAD_ARG(thread);
THREAD_TIMER_OFF(backoff->t_timetolearn);
THREAD_OFF(backoff->t_timetolearn);
timerclear(&backoff->first_event_time);
backoff->state = SPF_BACKOFF_QUIET;
backoff_debug("SPF Back-off(%s) HOLDDOWN elapsed, move to state %s",
@ -166,7 +165,7 @@ long spf_backoff_schedule(struct spf_backoff *backoff)
break;
case SPF_BACKOFF_SHORT_WAIT:
case SPF_BACKOFF_LONG_WAIT:
THREAD_TIMER_OFF(backoff->t_holddown);
thread_cancel(&backoff->t_holddown);
thread_add_timer_msec(backoff->m, spf_backoff_holddown_elapsed,
backoff, backoff->holddown,
&backoff->t_holddown);

View file

@ -1234,6 +1234,9 @@ void thread_cancel_async(struct thread_master *master, struct thread **thread,
while (!master->canceled)
pthread_cond_wait(&master->cancel_cond, &master->mtx);
}
if (thread)
*thread = NULL;
}
/* ------------------------------------------------------------------------- */

View file

@ -89,8 +89,6 @@ struct thread_master {
pthread_t owner;
};
typedef struct thread_master event_master;
/* Thread itself. */
struct thread {
uint8_t type; /* thread type */
@ -149,10 +147,14 @@ struct cpu_thread_history {
#define THREAD_FD(X) ((X)->u.fd)
#define THREAD_VAL(X) ((X)->u.val)
#define THREAD_OFF(thread) thread_cancel(&(thread))
#define THREAD_READ_OFF(thread) thread_cancel(&(thread))
#define THREAD_WRITE_OFF(thread) thread_cancel(&(thread))
#define THREAD_TIMER_OFF(thread) thread_cancel(&(thread))
/*
* Please consider this macro deprecated, and do not use it in new code.
*/
#define THREAD_OFF(thread) \
do { \
if ((thread)) \
thread_cancel(&(thread)); \
} while (0)
#define debugargdef const char *funcname, const char *schedfrom, int fromln

View file

@ -257,7 +257,7 @@ static int netlink_log_recv(struct thread *t)
void netlink_set_nflog_group(int nlgroup)
{
if (netlink_log_fd >= 0) {
THREAD_OFF(netlink_log_thread);
thread_cancel(&netlink_log_thread);
close(netlink_log_fd);
netlink_log_fd = -1;
}

View file

@ -137,7 +137,7 @@ static void nhrp_reg_peer_notify(struct notifier_block *n, unsigned long cmd)
debugf(NHRP_DEBUG_COMMON, "NHS: Flush timer for %s",
sockunion2str(&r->peer->vc->remote.nbma, buf,
sizeof(buf)));
THREAD_TIMER_OFF(r->t_register);
THREAD_OFF(r->t_register);
thread_add_timer_msec(master, nhrp_reg_send_req, r, 10,
&r->t_register);
break;

View file

@ -79,7 +79,7 @@
} while (0)
/* Macro for OSPF ISM timer turn off. */
#define OSPF_ISM_TIMER_OFF(X) thread_cancel(&(X));
#define OSPF_ISM_TIMER_OFF(X) thread_cancel(&(X))
/* Macro for OSPF schedule event. */
#define OSPF_ISM_EVENT_SCHEDULE(I, E) \

View file

@ -99,8 +99,7 @@ int ospf_ldp_sync_announce_update(struct ldp_igp_sync_announce announce)
FOR_ALL_INTERFACES (vrf, ifp)
ospf_ldp_sync_if_start(ifp, true);
THREAD_TIMER_OFF(ospf->ldp_sync_cmd.t_hello);
ospf->ldp_sync_cmd.t_hello = NULL;
THREAD_OFF(ospf->ldp_sync_cmd.t_hello);
ospf->ldp_sync_cmd.sequence = 0;
ospf_ldp_sync_hello_timer_add(ospf);
@ -140,7 +139,7 @@ int ospf_ldp_sync_hello_update(struct ldp_igp_sync_hello hello)
FOR_ALL_INTERFACES (vrf, ifp)
ospf_ldp_sync_if_start(ifp, true);
} else {
THREAD_TIMER_OFF(ospf->ldp_sync_cmd.t_hello);
THREAD_OFF(ospf->ldp_sync_cmd.t_hello);
ospf_ldp_sync_hello_timer_add(ospf);
}
ospf->ldp_sync_cmd.sequence = hello.sequence;
@ -249,8 +248,7 @@ void ospf_ldp_sync_if_complete(struct interface *ifp)
if (ldp_sync_info && ldp_sync_info->enabled == LDP_IGP_SYNC_ENABLED) {
if (ldp_sync_info->state == LDP_IGP_SYNC_STATE_REQUIRED_NOT_UP)
ldp_sync_info->state = LDP_IGP_SYNC_STATE_REQUIRED_UP;
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->t_holddown = NULL;
THREAD_OFF(ldp_sync_info->t_holddown);
ospf_if_recalculate_output_cost(ifp);
}
}
@ -274,7 +272,7 @@ void ospf_ldp_sync_ldp_fail(struct interface *ifp)
if (ldp_sync_info &&
ldp_sync_info->enabled == LDP_IGP_SYNC_ENABLED &&
ldp_sync_info->state != LDP_IGP_SYNC_STATE_NOT_REQUIRED) {
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
THREAD_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->state = LDP_IGP_SYNC_STATE_REQUIRED_NOT_UP;
ospf_if_recalculate_output_cost(ifp);
}
@ -337,7 +335,9 @@ void ospf_ldp_sync_if_remove(struct interface *ifp, bool remove)
* restore cost
*/
ols_debug("ldp_sync: Removed from if %s", ifp->name);
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
THREAD_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->state = LDP_IGP_SYNC_STATE_NOT_REQUIRED;
ospf_if_recalculate_output_cost(ifp);
if (!CHECK_FLAG(ldp_sync_info->flags, LDP_SYNC_FLAG_IF_CONFIG))
@ -386,7 +386,6 @@ static int ospf_ldp_sync_holddown_timer(struct thread *thread)
ldp_sync_info = params->ldp_sync_info;
ldp_sync_info->state = LDP_IGP_SYNC_STATE_REQUIRED_UP;
ldp_sync_info->t_holddown = NULL;
ols_debug("ldp_sync: holddown timer expired for %s state: %s",
ifp->name, "Sync achieved");
@ -436,7 +435,6 @@ static int ospf_ldp_sync_hello_timer(struct thread *thread)
*/
ospf = ospf_lookup_by_vrf_id(VRF_DEFAULT);
if (ospf) {
ospf->ldp_sync_cmd.t_hello = NULL;
vrf = vrf_lookup_by_id(ospf->vrf_id);
FOR_ALL_INTERFACES (vrf, ifp)
@ -486,8 +484,8 @@ void ospf_ldp_sync_gbl_exit(struct ospf *ospf, bool remove)
UNSET_FLAG(ospf->ldp_sync_cmd.flags, LDP_SYNC_FLAG_ENABLE);
UNSET_FLAG(ospf->ldp_sync_cmd.flags, LDP_SYNC_FLAG_HOLDDOWN);
ospf->ldp_sync_cmd.holddown = LDP_IGP_SYNC_HOLDDOWN_DEFAULT;
THREAD_TIMER_OFF(ospf->ldp_sync_cmd.t_hello);
ospf->ldp_sync_cmd.t_hello = NULL;
THREAD_OFF(ospf->ldp_sync_cmd.t_hello);
/* turn off LDP-IGP Sync on all OSPF interfaces */
vrf = vrf_lookup_by_id(ospf->vrf_id);
@ -980,8 +978,7 @@ DEFPY (no_mpls_ldp_sync,
SET_FLAG(ldp_sync_info->flags, LDP_SYNC_FLAG_IF_CONFIG);
ldp_sync_info->enabled = LDP_IGP_SYNC_DEFAULT;
ldp_sync_info->state = LDP_IGP_SYNC_STATE_NOT_REQUIRED;
THREAD_TIMER_OFF(ldp_sync_info->t_holddown);
ldp_sync_info->t_holddown = NULL;
THREAD_OFF(ldp_sync_info->t_holddown);
ospf_if_recalculate_output_cost(ifp);
return CMD_SUCCESS;

View file

@ -519,7 +519,7 @@ static void ospf_sr_stop(void)
osr_debug("SR (%s): Stop Segment Routing", __func__);
/* Disable any re-attempt to connect to Label Manager */
THREAD_TIMER_OFF(OspfSR.t_start_lm);
THREAD_OFF(OspfSR.t_start_lm);
/* Release SRGB & SRLB if active. */
if (OspfSR.srgb.reserved)

View file

@ -208,8 +208,8 @@ struct pim_msdp {
thread_add_write(mp->pim->msdp.master, pim_msdp_write, mp, mp->fd, \
&mp->t_write)
#define PIM_MSDP_PEER_READ_OFF(mp) THREAD_READ_OFF(mp->t_read)
#define PIM_MSDP_PEER_WRITE_OFF(mp) THREAD_WRITE_OFF(mp->t_write)
#define PIM_MSDP_PEER_READ_OFF(mp) thread_cancel(&mp->t_read)
#define PIM_MSDP_PEER_WRITE_OFF(mp) thread_cancel(&mp->t_write)
// struct pim_msdp *msdp;
struct pim_instance;

View file

@ -294,7 +294,7 @@ static int on_neighbor_jp_timer(struct thread *t)
static void pim_neighbor_start_jp_timer(struct pim_neighbor *neigh)
{
THREAD_TIMER_OFF(neigh->jp_timer);
THREAD_OFF(neigh->jp_timer);
thread_add_timer(router->master, on_neighbor_jp_timer, neigh,
router->t_periodic, &neigh->jp_timer);
}

View file

@ -1768,7 +1768,7 @@ void pim_upstream_start_register_stop_timer(struct pim_upstream *up,
{
uint32_t time;
THREAD_TIMER_OFF(up->t_rs_timer);
THREAD_OFF(up->t_rs_timer);
if (!null_register) {
uint32_t lower = (0.5 * PIM_REGISTER_SUPPRESSION_PERIOD);

View file

@ -3596,7 +3596,7 @@ static void rip_instance_disable(struct rip *rip)
RIP_TIMER_OFF(rip->t_triggered_interval);
/* Cancel read thread. */
THREAD_READ_OFF(rip->t_read);
thread_cancel(&rip->t_read);
/* Close RIP socket. */
close(rip->sock);

View file

@ -405,7 +405,7 @@ enum rip_event {
#define RIP_TIMER_ON(T,F,V) thread_add_timer (master, (F), rinfo, (V), &(T))
/* Macro for timer turn off. */
#define RIP_TIMER_OFF(X) THREAD_TIMER_OFF(X)
#define RIP_TIMER_OFF(X) thread_cancel(&(X))
#define RIP_OFFSET_LIST_IN 0
#define RIP_OFFSET_LIST_OUT 1

View file

@ -351,7 +351,7 @@ enum ripng_event {
/* RIPng timer on/off macro. */
#define RIPNG_TIMER_ON(T,F,V) thread_add_timer (master, (F), rinfo, (V), &(T))
#define RIPNG_TIMER_OFF(T) thread_cancel(&(T));
#define RIPNG_TIMER_OFF(T) thread_cancel(&(T))
#define RIPNG_OFFSET_LIST_IN 0
#define RIPNG_OFFSET_LIST_OUT 1

View file

@ -586,6 +586,7 @@ static void restart_done(struct daemon *dmn)
return;
}
THREAD_OFF(dmn->t_wakeup);
if (try_connect(dmn) < 0)
SET_WAKEUP_DOWN(dmn);
}

View file

@ -1501,7 +1501,7 @@ void kernel_init(struct zebra_ns *zns)
void kernel_terminate(struct zebra_ns *zns, bool complete)
{
THREAD_READ_OFF(zns->t_netlink);
thread_cancel(&zns->t_netlink);
if (zns->netlink.sock >= 0) {
close(zns->netlink.sock);

View file

@ -489,7 +489,7 @@ static inline void zfpm_write_on(void)
*/
static inline void zfpm_read_off(void)
{
THREAD_READ_OFF(zfpm_g->t_read);
thread_cancel(&zfpm_g->t_read);
}
/*
@ -497,12 +497,12 @@ static inline void zfpm_read_off(void)
*/
static inline void zfpm_write_off(void)
{
THREAD_WRITE_OFF(zfpm_g->t_write);
thread_cancel(&zfpm_g->t_write);
}
static inline void zfpm_connect_off(void)
{
THREAD_TIMER_OFF(zfpm_g->t_connect);
thread_cancel(&zfpm_g->t_connect);
}
/*
@ -1687,7 +1687,7 @@ static void zfpm_stop_stats_timer(void)
return;
zfpm_debug("Stopping existing stats timer");
THREAD_TIMER_OFF(zfpm_g->t_stats);
thread_cancel(&zfpm_g->t_stats);
}
/*

View file

@ -215,7 +215,7 @@ static int zebra_ptm_send_message(char *data, int size)
ptm_cb.reconnect_time, &ptm_cb.t_timer);
return -1;
case BUFFER_EMPTY:
THREAD_OFF(ptm_cb.t_write);
thread_cancel(&ptm_cb.t_write);
break;
case BUFFER_PENDING:
thread_add_write(zrouter.master, zebra_ptm_flush_messages, NULL,

View file

@ -102,7 +102,7 @@ void zebra_pw_del(struct zebra_vrf *zvrf, struct zebra_pw *pw)
hook_call(pw_uninstall, pw);
dplane_pw_uninstall(pw);
} else if (pw->install_retry_timer)
THREAD_TIMER_OFF(pw->install_retry_timer);
thread_cancel(&pw->install_retry_timer);
/* unlink and release memory */
RB_REMOVE(zebra_pw_head, &zvrf->pseudowires, pw);
@ -219,7 +219,7 @@ void zebra_pw_install_failure(struct zebra_pw *pw, int pwstatus)
pw->vrf_id, pw->ifname, PW_INSTALL_RETRY_INTERVAL);
/* schedule to retry later */
THREAD_TIMER_OFF(pw->install_retry_timer);
thread_cancel(&pw->install_retry_timer);
thread_add_timer(zrouter.master, zebra_pw_install_retry, pw,
PW_INSTALL_RETRY_INTERVAL, &pw->install_retry_timer);

View file

@ -1705,7 +1705,7 @@ void zebra_routemap_finish(void)
/* Set zebra_rmap_update_timer to 0 so that it wont schedule again */
zebra_rmap_update_timer = 0;
/* Thread off if any scheduled already */
THREAD_TIMER_OFF(zebra_t_rmap_update);
thread_cancel(&zebra_t_rmap_update);
route_map_finish();
}