diff options
51 files changed, 157 insertions, 160 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 61119ced8..446840841 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -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; diff --git a/bgpd/bgp_fsm.h b/bgpd/bgp_fsm.h index aa98515c3..b9156df61 100644 --- a/bgpd/bgp_fsm.h +++ b/bgpd/bgp_fsm.h @@ -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) \ diff --git a/bgpd/bgp_io.c b/bgpd/bgp_io.c index 412c8e3e5..b14ac8b78 100644 --- a/bgpd/bgp_io.c +++ b/bgpd/bgp_io.c @@ -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" diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index f01325577..3f0325eac 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -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; } diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index eba355fad..dd5f8c35b 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -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); } /* diff --git a/bgpd/bgp_updgrp.c b/bgpd/bgp_updgrp.c index 1685f9818..21eca78ab 100644 --- a/bgpd/bgp_updgrp.c +++ b/bgpd/bgp_updgrp.c @@ -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; diff --git a/eigrpd/eigrp_filter.c b/eigrpd/eigrp_filter.c index 010fd2d3a..009b57e05 100644 --- a/eigrpd/eigrp_filter.c +++ b/eigrpd/eigrp_filter.c @@ -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; diff --git a/eigrpd/eigrp_interface.c b/eigrpd/eigrp_interface.c index e7c6b2e07..dd43dd047 100644 --- a/eigrpd/eigrp_interface.c +++ b/eigrpd/eigrp_interface.c @@ -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); } diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c index 59403b6c2..71d475816 100644 --- a/isisd/isis_adjacency.c +++ b/isisd/isis_adjacency.c @@ -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; diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 3eb3b900a..730d224cb 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -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); diff --git a/isisd/isis_dr.c b/isisd/isis_dr.c index 3324d74e0..d03f857a0 100644 --- a/isisd/isis_dr.c +++ b/isisd/isis_dr.c @@ -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], diff --git a/isisd/isis_events.c b/isisd/isis_events.c index c4c95138c..0b987fc5c 100644 --- a/isisd/isis_events.c +++ b/isisd/isis_events.c @@ -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; diff --git a/isisd/isis_ldp_sync.c b/isisd/isis_ldp_sync.c index 8360dfc59..988af64c4 100644 --- a/isisd/isis_ldp_sync.c +++ b/isisd/isis_ldp_sync.c @@ -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) { diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c index 2e38663d3..d8ad4cd51 100644 --- a/isisd/isis_lsp.c +++ b/isisd/isis_lsp.c @@ -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 = diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c index 2710c3c13..23a646663 100644 --- a/isisd/isis_nb_config.c +++ b/isisd/isis_nb_config.c @@ -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; diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c index 63be8841c..72de5d654 100644 --- a/isisd/isis_pdu.c +++ b/isisd/isis_pdu.c @@ -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); diff --git a/isisd/isis_sr.c b/isisd/isis_sr.c index 842103de1..3f62f4dca 100644 --- a/isisd/isis_sr.c +++ b/isisd/isis_sr.c @@ -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)) diff --git a/isisd/isisd.c b/isisd/isisd.c index 57d3e9c7c..075daaec9 100644 --- a/isisd/isisd.c +++ b/isisd/isisd.c @@ -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; } diff --git a/ldpd/accept.c b/ldpd/accept.c index 323558d7f..9bba0f5dd 100644 --- a/ldpd/accept.c +++ b/ldpd/accept.c @@ -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 diff --git a/ldpd/adjacency.c b/ldpd/adjacency.c index 3923c169d..795a41491 100644 --- a/ldpd/adjacency.c +++ b/ldpd/adjacency.c @@ -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 * diff --git a/ldpd/control.c b/ldpd/control.c index 6554f0a6f..3b7776595 100644 --- a/ldpd/control.c +++ b/ldpd/control.c @@ -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); diff --git a/ldpd/interface.c b/ldpd/interface.c index 8b3dd71fd..3e9f2fa99 100644 --- a/ldpd/interface.c +++ b/ldpd/interface.c @@ -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 diff --git a/ldpd/lde.c b/ldpd/lde.c index df64f908e..67b695150 100644 --- a/ldpd/lde.c +++ b/ldpd/lde.c @@ -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(); } diff --git a/ldpd/lde_lib.c b/ldpd/lde_lib.c index bed276c7b..9db931677 100644 --- a/ldpd/lde_lib.c +++ b/ldpd/lde_lib.c @@ -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); } diff --git a/ldpd/ldpd.c b/ldpd/ldpd.c index 940333f83..d6da45c86 100644 --- a/ldpd/ldpd.c +++ b/ldpd/ldpd.c @@ -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; } diff --git a/ldpd/ldpe.c b/ldpd/ldpe.c index d3374a62d..ffc1d17f5 100644 --- a/ldpd/ldpe.c +++ b/ldpd/ldpe.c @@ -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; diff --git a/ldpd/neighbor.c b/ldpd/neighbor.c index 423410f29..75deaad2c 100644 --- a/ldpd/neighbor.c +++ b/ldpd/neighbor.c @@ -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 diff --git a/ldpd/packet.c b/ldpd/packet.c index 06ada5957..fdcaa79d2 100644 --- a/ldpd/packet.c +++ b/ldpd/packet.c @@ -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); } diff --git a/lib/agentx.c b/lib/agentx.c index 07f146bae..603d8d617 100644 --- a/lib/agentx.c +++ b/lib/agentx.c @@ -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); diff --git a/lib/ldp_sync.c b/lib/ldp_sync.c index 9657f0b1d..c9d7eb37c 100644 --- a/lib/ldp_sync.c +++ b/lib/ldp_sync.c @@ -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 = diff --git a/lib/northbound_cli.c b/lib/northbound_cli.c index a7f3a1b30..7048df99f 100644 --- a/lib/northbound_cli.c +++ b/lib/northbound_cli.c @@ -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, diff --git a/lib/spf_backoff.c b/lib/spf_backoff.c index acb208e5e..ac6dd29f0 100644 --- a/lib/spf_backoff.c +++ b/lib/spf_backoff.c @@ -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); diff --git a/lib/thread.c b/lib/thread.c index 90c6c6f0a..012194a47 100644 --- a/lib/thread.c +++ b/lib/thread.c @@ -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; } /* ------------------------------------------------------------------------- */ diff --git a/lib/thread.h b/lib/thread.h index a581796d3..e2b7763c5 100644 --- a/lib/thread.h +++ b/lib/thread.h @@ -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 diff --git a/nhrpd/netlink_arp.c b/nhrpd/netlink_arp.c index cf338a087..309f73352 100644 --- a/nhrpd/netlink_arp.c +++ b/nhrpd/netlink_arp.c @@ -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; } diff --git a/nhrpd/nhrp_nhs.c b/nhrpd/nhrp_nhs.c index 8509cedce..085cab347 100644 --- a/nhrpd/nhrp_nhs.c +++ b/nhrpd/nhrp_nhs.c @@ -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; diff --git a/ospfd/ospf_ism.h b/ospfd/ospf_ism.h index 6c0df9a1e..c41ba6c84 100644 --- a/ospfd/ospf_ism.h +++ b/ospfd/ospf_ism.h @@ -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) \ diff --git a/ospfd/ospf_ldp_sync.c b/ospfd/ospf_ldp_sync.c index 96fa04b58..68792ebcc 100644 --- a/ospfd/ospf_ldp_sync.c +++ b/ospfd/ospf_ldp_sync.c @@ -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; diff --git a/ospfd/ospf_sr.c b/ospfd/ospf_sr.c index 4e32732c8..b0b273fb2 100644 --- a/ospfd/ospf_sr.c +++ b/ospfd/ospf_sr.c @@ -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) diff --git a/pimd/pim_msdp.h b/pimd/pim_msdp.h index 6caa3181e..15a1041e2 100644 --- a/pimd/pim_msdp.h +++ b/pimd/pim_msdp.h @@ -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; diff --git a/pimd/pim_neighbor.c b/pimd/pim_neighbor.c index 4d6625bf6..167aa3c60 100644 --- a/pimd/pim_neighbor.c +++ b/pimd/pim_neighbor.c @@ -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); } diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 6bb25c436..d95b092d9 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -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); diff --git a/ripd/ripd.c b/ripd/ripd.c index 07f24b5a9..059a0e2ef 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -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); diff --git a/ripd/ripd.h b/ripd/ripd.h index 417bd5b3b..99718f7b9 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -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 diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h index 97291829b..a42c32ebb 100644 --- a/ripngd/ripngd.h +++ b/ripngd/ripngd.h @@ -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 diff --git a/watchfrr/watchfrr.c b/watchfrr/watchfrr.c index cd5ec6725..319bd6a77 100644 --- a/watchfrr/watchfrr.c +++ b/watchfrr/watchfrr.c @@ -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); } diff --git a/zebra/kernel_netlink.c b/zebra/kernel_netlink.c index c53d28a18..601e3dfa8 100644 --- a/zebra/kernel_netlink.c +++ b/zebra/kernel_netlink.c @@ -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); diff --git a/zebra/zebra_fpm.c b/zebra/zebra_fpm.c index 73996c526..2bf48c627 100644 --- a/zebra/zebra_fpm.c +++ b/zebra/zebra_fpm.c @@ -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); } /* diff --git a/zebra/zebra_ptm.c b/zebra/zebra_ptm.c index 013cb6449..1e7b38086 100644 --- a/zebra/zebra_ptm.c +++ b/zebra/zebra_ptm.c @@ -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, diff --git a/zebra/zebra_pw.c b/zebra/zebra_pw.c index cdcca1e93..ecae021db 100644 --- a/zebra/zebra_pw.c +++ b/zebra/zebra_pw.c @@ -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); diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c index cf8cd0639..294f2c17f 100644 --- a/zebra/zebra_routemap.c +++ b/zebra/zebra_routemap.c @@ -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(); } |