forked from Mirror/frr
*: 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:
parent
b3d6bc6ef0
commit
5047884528
|
@ -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;
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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],
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
14
ldpd/ldpd.c
14
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;
|
||||
}
|
||||
|
|
14
ldpd/ldpe.c
14
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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
|
|
14
lib/thread.h
14
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
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue