thread_cancel(e->t_distribute);
}
/* schedule Graceful restart for whole process in 10sec */
- e->t_distribute = thread_add_timer(master, eigrp_distribute_timer_process, e,(10));
+ e->t_distribute = NULL;
+ thread_add_timer(master, eigrp_distribute_timer_process, e, (10),
+ &e->t_distribute);
return;
}
thread_cancel(ei->t_distribute);
}
/* schedule Graceful restart for interface in 10sec */
- e->t_distribute = thread_add_timer(master, eigrp_distribute_timer_interface, ei, 10);
+ e->t_distribute = NULL;
+ thread_add_timer(master, eigrp_distribute_timer_interface, ei, 10,
+ &e->t_distribute);
}
/*
eigrp_hello_send(ei, EIGRP_HELLO_NORMAL, NULL);
/* Hello timer set. */
- ei->t_hello = thread_add_timer(master, eigrp_hello_timer, ei,
- EIGRP_IF_PARAM(ei, v_hello));
+ ei->t_hello = NULL;
+ thread_add_timer(master, eigrp_hello_timer, ei, EIGRP_IF_PARAM(ei, v_hello),
+ &ei->t_hello);
return 0;
}
listnode_add(nbr->ei->eigrp->oi_write_q, nbr->ei);
nbr->ei->on_write_q = 1;
}
- if (nbr->ei->eigrp->t_write == NULL)
- nbr->ei->eigrp->t_write =
- thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd);
+ thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd,
+ &nbr->ei->eigrp->t_write);
}
}
{
if(flags & EIGRP_HELLO_GRACEFUL_SHUTDOWN)
{
- ei->eigrp->t_write =
- thread_execute(master, eigrp_write, ei->eigrp, ei->eigrp->fd);
+ thread_execute(master, eigrp_write, ei->eigrp, ei->eigrp->fd);
}
else
{
- ei->eigrp->t_write =
- thread_add_write(master, eigrp_write, ei->eigrp, ei->eigrp->fd);
+ thread_add_write(master, eigrp_write, ei->eigrp, ei->eigrp->fd,
+ &ei->eigrp->t_write);
}
}
}
/* Set multicast memberships appropriately for new state. */
eigrp_if_set_multicast (ei);
- thread_add_event (master, eigrp_hello_timer, ei, (1));
+ thread_add_event(master, eigrp_hello_timer, ei, (1), NULL);
/*Prepare metrics*/
metric.bandwith = eigrp_bandwidth_to_scaled (EIGRP_IF_PARAM (ei,bandwidth));
{
/*Reset Hold Down Timer for neighbor*/
THREAD_OFF(nbr->t_holddown);
- THREAD_TIMER_ON(master, nbr->t_holddown, holddown_timer_expired, nbr,
- nbr->v_holddown);
+ thread_add_timer(master, holddown_timer_expired, nbr,
+ nbr->v_holddown, &nbr->t_holddown);
break;
}
case EIGRP_NEIGHBOR_UP:
{
/*Reset Hold Down Timer for neighbor*/
THREAD_OFF(nbr->t_holddown);
- THREAD_TIMER_ON(master, nbr->t_holddown, holddown_timer_expired, nbr,
- nbr->v_holddown);
+ thread_add_timer(master, holddown_timer_expired, nbr,
+ nbr->v_holddown, &nbr->t_holddown);
break;
}
}
}
/* If packets still remain in queue, call write thread. */
- if (!list_isempty(eigrp->oi_write_q))
- eigrp->t_write = thread_add_write(master, eigrp_write, eigrp, eigrp->fd);
+ if (!list_isempty(eigrp->oi_write_q)) {
+ eigrp->t_write = NULL;
+ thread_add_write(master, eigrp_write, eigrp, eigrp->fd, &eigrp->t_write);
+ }
return 0;
}
eigrp = THREAD_ARG(thread);
/* prepare for next packet. */
- eigrp->t_read = thread_add_read(master, eigrp_read, eigrp, eigrp->fd);
+ eigrp->t_read = NULL;
+ thread_add_read(master, eigrp_read, eigrp, eigrp->fd, &eigrp->t_read);
stream_reset(eigrp->ibuf);
if (!(ibuf = eigrp_recv_packet(eigrp->fd, &ifp, eigrp->ibuf)))
eigrp_fifo_push_head(nbr->ei->obuf, duplicate);
/*Start retransmission timer*/
- THREAD_TIMER_ON(master, ep->t_retrans_timer, eigrp_unack_packet_retrans,
- nbr, EIGRP_PACKET_RETRANS_TIME);
+ thread_add_timer(master, eigrp_unack_packet_retrans, nbr,
+ EIGRP_PACKET_RETRANS_TIME, &ep->t_retrans_timer);
/*Increment sequence number counter*/
nbr->ei->eigrp->sequence_number++;
listnode_add(nbr->ei->eigrp->oi_write_q, nbr->ei);
nbr->ei->on_write_q = 1;
}
- if (nbr->ei->eigrp->t_write == NULL)
- nbr->ei->eigrp->t_write =
- thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd);
+ thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd,
+ &nbr->ei->eigrp->t_write);
}
}
return eigrp_retrans_count_exceeded(ep, nbr);
/*Start retransmission timer*/
- ep->t_retrans_timer =
- thread_add_timer(master, eigrp_unack_packet_retrans, nbr,EIGRP_PACKET_RETRANS_TIME);
+ ep->t_retrans_timer = NULL;
+ thread_add_timer(master, eigrp_unack_packet_retrans, nbr, EIGRP_PACKET_RETRANS_TIME,
+ &ep->t_retrans_timer);
/* Hook thread to write packet. */
if (nbr->ei->on_write_q == 0)
listnode_add(nbr->ei->eigrp->oi_write_q, nbr->ei);
nbr->ei->on_write_q = 1;
}
- if (nbr->ei->eigrp->t_write == NULL)
- nbr->ei->eigrp->t_write =
- thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd);
+ thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd,
+ &nbr->ei->eigrp->t_write);
}
return 0;
return eigrp_retrans_count_exceeded(ep, nbr);
/*Start retransmission timer*/
- ep->t_retrans_timer =
- thread_add_timer(master, eigrp_unack_multicast_packet_retrans, nbr,EIGRP_PACKET_RETRANS_TIME);
+ ep->t_retrans_timer = NULL;
+ thread_add_timer(master, eigrp_unack_multicast_packet_retrans, nbr, EIGRP_PACKET_RETRANS_TIME,
+ &ep->t_retrans_timer);
/* Hook thread to write packet. */
if (nbr->ei->on_write_q == 0)
listnode_add(nbr->ei->eigrp->oi_write_q, nbr->ei);
nbr->ei->on_write_q = 1;
}
- if (nbr->ei->eigrp->t_write == NULL)
- nbr->ei->eigrp->t_write =
- thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd);
+ thread_add_write(master, eigrp_write, nbr->ei->eigrp, nbr->ei->eigrp->fd,
+ &nbr->ei->eigrp->t_write);
}
return 0;
* schedule this thread again with small delay */
if(nbr->retrans_queue->count > 0)
{
- nbr->t_nbr_send_gr = thread_add_timer_msec(master, eigrp_update_send_GR_thread, nbr, 10);
+ nbr->t_nbr_send_gr = NULL;
+ thread_add_timer_msec(master, eigrp_update_send_GR_thread, nbr, 10,
+ &nbr->t_nbr_send_gr);
return 0;
}
eigrp_update_send_GR_part(nbr);
/* if it wasn't last chunk, schedule this thread again */
- if(nbr->nbr_gr_packet_type != EIGRP_PACKET_PART_LAST)
- nbr->t_nbr_send_gr = thread_execute(master, eigrp_update_send_GR_thread, nbr, 0);
+ if(nbr->nbr_gr_packet_type != EIGRP_PACKET_PART_LAST) {
+ thread_execute(master, eigrp_update_send_GR_thread, nbr, 0);
+ nbr->t_nbr_send_gr = NULL;
+ }
return 0;
}
/* indicate, that this is first GR Update packet chunk */
nbr->nbr_gr_packet_type = EIGRP_PACKET_PART_FIRST;
/* execute packet sending in thread */
- nbr->t_nbr_send_gr = thread_execute(master, eigrp_update_send_GR_thread, nbr, 0);
+ thread_execute(master, eigrp_update_send_GR_thread, nbr, 0);
+ nbr->t_nbr_send_gr = NULL;
}
/**
exit(1);
}
- eigrp->t_read = thread_add_read(master, eigrp_read, eigrp, eigrp->fd);
+ eigrp->t_read = NULL;
+ thread_add_read(master, eigrp_read, eigrp, eigrp->fd, &eigrp->t_read);
eigrp->oi_write_q = list_new();
eigrp->topology_table = eigrp_topology_new();