diff options
Diffstat (limited to 'eigrpd/eigrp_packet.c')
| -rw-r--r-- | eigrpd/eigrp_packet.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/eigrpd/eigrp_packet.c b/eigrpd/eigrp_packet.c index 5b62e98abc..635c1cf66b 100644 --- a/eigrpd/eigrp_packet.c +++ b/eigrpd/eigrp_packet.c @@ -448,8 +448,10 @@ eigrp_write (struct thread *thread) } /* 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; } @@ -474,7 +476,8 @@ eigrp_read (struct thread *thread) 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))) @@ -846,8 +849,8 @@ eigrp_send_packet_reliably (struct eigrp_neighbor *nbr) 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++; @@ -858,9 +861,8 @@ eigrp_send_packet_reliably (struct eigrp_neighbor *nbr) 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); } } @@ -1048,8 +1050,9 @@ eigrp_unack_packet_retrans (struct thread *thread) 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) @@ -1057,9 +1060,8 @@ eigrp_unack_packet_retrans (struct thread *thread) 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; @@ -1086,8 +1088,9 @@ eigrp_unack_multicast_packet_retrans (struct thread *thread) 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) @@ -1095,9 +1098,8 @@ eigrp_unack_multicast_packet_retrans (struct thread *thread) 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; |
