diff options
51 files changed, 157 insertions, 160 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 61119ced80..4468408415 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 aa98515c3f..b9156df617 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 412c8e3e5e..b14ac8b782 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 f01325577c..3f0325eac6 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 eba355fadd..dd5f8c35b1 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 1685f98181..21eca78abc 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 010fd2d3ab..009b57e05f 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 e7c6b2e072..dd43dd0478 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 59403b6c23..71d4758163 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 3eb3b900a5..730d224cb8 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 3324d74e0f..d03f857a0c 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 c4c95138c4..0b987fc5cf 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 8360dfc59e..988af64c48 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 2e38663d3f..d8ad4cd510 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 2710c3c13f..23a646663d 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 63be8841c3..72de5d6543 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 842103de1e..3f62f4dcac 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 57d3e9c7c0..075daaec93 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 323558d7fd..9bba0f5ddd 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 3923c169d6..795a41491c 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 6554f0a6f1..3b77765952 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 8b3dd71fd7..3e9f2fa991 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 df64f908ea..67b695150e 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 bed276c7b1..9db931677d 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 940333f83c..d6da45c862 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 d3374a62db..ffc1d17f51 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 423410f290..75deaad2c0 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 06ada5957e..fdcaa79d23 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 07f146bae4..603d8d6172 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 9657f0b1df..c9d7eb37cf 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 a7f3a1b305..7048df99fb 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 acb208e5e7..ac6dd29f06 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 90c6c6f0a8..012194a47b 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 a581796d30..e2b7763c51 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 cf338a0876..309f733526 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 8509cedcee..085cab347f 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 6c0df9a1ee..c41ba6c843 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 96fa04b588..68792ebcc2 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 4e32732c86..b0b273fb23 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 6caa3181e7..15a1041e21 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 4d6625bf6f..167aa3c604 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 6bb25c436a..d95b092d94 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 07f24b5a99..059a0e2efd 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 417bd5b3b1..99718f7b9e 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 97291829bd..a42c32ebb7 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 cd5ec6725d..319bd6a771 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 c53d28a18c..601e3dfa84 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 73996c526f..2bf48c6277 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 013cb6449c..1e7b38086b 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 cdcca1e930..ecae021dba 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 cf8cd0639e..294f2c17ff 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();  }  | 
