#endif /* WANT_EIGRP_WRITE_FRAGMENT */
/* Get one packet from queue. */
- ep = eigrp_fifo_head(ei->obuf);
+ ep = eigrp_fifo_next(ei->obuf);
assert(ep);
assert(ep->length >= EIGRP_HEADER_LEN);
/* Now delete packet from queue. */
eigrp_packet_delete(ei);
- if (eigrp_fifo_head(ei->obuf) == NULL) {
+ if (eigrp_fifo_next(ei->obuf) == NULL) {
ei->on_write_q = 0;
list_delete_node(eigrp->oi_write_q, node);
}
struct eigrp_packet *ep;
- ep = eigrp_fifo_tail(nbr->retrans_queue);
+ ep = eigrp_fifo_next(nbr->retrans_queue);
if (ep) {
if (ntohl(eigrph->ack) == ep->sequence_number) {
if ((nbr->state == EIGRP_NEIGHBOR_PENDING)
ntohl(eigrph->sequence);
eigrp_update_send_EOT(nbr);
}
- ep = eigrp_fifo_pop_tail(nbr->retrans_queue);
+ ep = eigrp_fifo_pop(nbr->retrans_queue);
eigrp_packet_free(ep);
if (nbr->retrans_queue->count > 0) {
eigrp_send_packet_reliably(nbr);
}
}
}
- ep = eigrp_fifo_tail(nbr->multicast_queue);
+ ep = eigrp_fifo_next(nbr->multicast_queue);
if (ep) {
if (ntohl(eigrph->ack) == ep->sequence_number) {
- ep = eigrp_fifo_pop_tail(nbr->multicast_queue);
+ ep = eigrp_fifo_pop(nbr->multicast_queue);
eigrp_packet_free(ep);
if (nbr->multicast_queue->count > 0) {
eigrp_send_packet_reliably(nbr);
{
struct eigrp_packet *ep;
- ep = eigrp_fifo_tail(nbr->retrans_queue);
+ ep = eigrp_fifo_next(nbr->retrans_queue);
if (ep) {
struct eigrp_packet *duplicate;
duplicate = eigrp_packet_duplicate(ep, nbr);
/* Add packet to the top of the interface output queue*/
- eigrp_fifo_push_head(nbr->ei->obuf, duplicate);
+ eigrp_fifo_push(nbr->ei->obuf, duplicate);
/*Start retransmission timer*/
thread_add_timer(master, eigrp_unack_packet_retrans, nbr,
}
/* Add new packet to head of fifo. */
-void eigrp_fifo_push_head(struct eigrp_fifo *fifo, struct eigrp_packet *ep)
+void eigrp_fifo_push(struct eigrp_fifo *fifo, struct eigrp_packet *ep)
{
ep->next = fifo->head;
ep->previous = NULL;
fifo->count++;
}
-/* Return first fifo entry. */
-struct eigrp_packet *eigrp_fifo_head(struct eigrp_fifo *fifo)
-{
- return fifo->head;
-}
-
/* Return last fifo entry. */
-struct eigrp_packet *eigrp_fifo_tail(struct eigrp_fifo *fifo)
+struct eigrp_packet *eigrp_fifo_next(struct eigrp_fifo *fifo)
{
return fifo->tail;
}
eigrp_packet_free(ep);
}
-/* Delete first packet from fifo. */
-struct eigrp_packet *eigrp_fifo_pop(struct eigrp_fifo *fifo)
-{
- struct eigrp_packet *ep;
-
- ep = fifo->head;
-
- if (ep) {
- fifo->head = ep->next;
-
- if (fifo->head == NULL)
- fifo->tail = NULL;
- else
- fifo->head->previous = NULL;
-
- fifo->count--;
- }
-
- return ep;
-}
-
void eigrp_packet_free(struct eigrp_packet *ep)
{
if (ep->s)
nbr = (struct eigrp_neighbor *)THREAD_ARG(thread);
struct eigrp_packet *ep;
- ep = eigrp_fifo_tail(nbr->retrans_queue);
+ ep = eigrp_fifo_next(nbr->retrans_queue);
if (ep) {
struct eigrp_packet *duplicate;
duplicate = eigrp_packet_duplicate(ep, nbr);
/* Add packet to the top of the interface output queue*/
- eigrp_fifo_push_head(nbr->ei->obuf, duplicate);
+ eigrp_fifo_push(nbr->ei->obuf, duplicate);
ep->retrans_counter++;
if (ep->retrans_counter == EIGRP_PACKET_RETRANS_MAX)
nbr = (struct eigrp_neighbor *)THREAD_ARG(thread);
struct eigrp_packet *ep;
- ep = eigrp_fifo_tail(nbr->multicast_queue);
+ ep = eigrp_fifo_next(nbr->multicast_queue);
if (ep) {
struct eigrp_packet *duplicate;
duplicate = eigrp_packet_duplicate(ep, nbr);
/* Add packet to the top of the interface output queue*/
- eigrp_fifo_push_head(nbr->ei->obuf, duplicate);
+ eigrp_fifo_push(nbr->ei->obuf, duplicate);
ep->retrans_counter++;
if (ep->retrans_counter == EIGRP_PACKET_RETRANS_MAX)
}
/* Get packet from tail of fifo. */
-struct eigrp_packet *eigrp_fifo_pop_tail(struct eigrp_fifo *fifo)
+struct eigrp_packet *eigrp_fifo_pop(struct eigrp_fifo *fifo)
{
struct eigrp_packet *ep;
ep->length, ep->sequence_number, inet_ntoa(ep->dst));
/*Put packet to retransmission queue*/
- eigrp_fifo_push_head(nbr->retrans_queue, ep);
+ eigrp_fifo_push(nbr->retrans_queue, ep);
if (nbr->retrans_queue->count == 1) {
eigrp_send_packet_reliably(nbr);
ep->length, ep->sequence_number, inet_ntoa(ep->dst));
/*Put packet to retransmission queue*/
- eigrp_fifo_push_head(nbr->retrans_queue, ep);
+ eigrp_fifo_push(nbr->retrans_queue, ep);
}
void eigrp_update_send_EOT(struct eigrp_neighbor *nbr)
if (nbr->state == EIGRP_NEIGHBOR_UP) {
packet_sent = true;
/*Put packet to retransmission queue*/
- eigrp_fifo_push_head(nbr->retrans_queue, ep);
+ eigrp_fifo_push(nbr->retrans_queue, ep);
if (nbr->retrans_queue->count == 1) {
eigrp_send_packet_reliably(nbr);
ep->length, ep->sequence_number, inet_ntoa(ep->dst));
/*Put packet to retransmission queue*/
- eigrp_fifo_push_head(nbr->retrans_queue, ep);
+ eigrp_fifo_push(nbr->retrans_queue, ep);
if (nbr->retrans_queue->count == 1) {
eigrp_send_packet_reliably(nbr);