summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-08-18 20:58:50 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-08-18 21:00:40 +0200
commit17a2f658da67b8317d99294fc56071145e1a65e0 (patch)
tree1b409c18d9e33424217895206c66af707376570c
parenteigrpd: Only put 1 packet at a time on send queue (diff)
downloadfrr-17a2f658da67b8317d99294fc56071145e1a65e0.tar.xz
frr-17a2f658da67b8317d99294fc56071145e1a65e0.zip
eigrpd: When generating packets only put one on send queue at a time
When we generate update packets to go to our neighbor, Only put one packet at a time on the send queue. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to '')
-rw-r--r--eigrpd/eigrp_update.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/eigrpd/eigrp_update.c b/eigrpd/eigrp_update.c
index 68c0b92fd..5599965f6 100644
--- a/eigrpd/eigrp_update.c
+++ b/eigrpd/eigrp_update.c
@@ -529,6 +529,9 @@ static void eigrp_update_place_on_nbr_queue(struct eigrp_neighbor *nbr,
/*Put packet to retransmission queue*/
eigrp_fifo_push(nbr->retrans_queue, ep);
+
+ if (nbr->retrans_queue->count == 1)
+ eigrp_send_packet_reliably(nbr);
}
void eigrp_update_send_EOT(struct eigrp_neighbor *nbr)
@@ -567,7 +570,6 @@ void eigrp_update_send_EOT(struct eigrp_neighbor *nbr)
if ((length + 0x001D) > (u_int16_t)nbr->ei->ifp->mtu) {
eigrp_update_place_on_nbr_queue (nbr, ep, seq_no, length);
- eigrp_send_packet_reliably(nbr);
seq_no++;
length = EIGRP_HEADER_LEN;
@@ -615,7 +617,6 @@ void eigrp_update_send_EOT(struct eigrp_neighbor *nbr)
}
eigrp_update_place_on_nbr_queue (nbr, ep, seq_no, length);
- eigrp_send_packet_reliably(nbr);
}
void eigrp_update_send(struct eigrp_interface *ei)