From d291fcf1c9ea29d112fbd4e7daf90127efd48d5e Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Tue, 19 May 2015 17:24:44 -0700 Subject: [PATCH] When an LSA is flushed we need to update the timestamps for them. This allows for the node to give the neighbor sufficient time to send back an acknowledgement before retransmission kicks in. Signed-off-by: Dinesh G Dutt Reviewed-by: Scott Feldman Reviewed-by: James Li --- ospfd/ospf_flood.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ospfd/ospf_flood.c b/ospfd/ospf_flood.c index 2c33b00ef9..d18314a9d9 100644 --- a/ospfd/ospf_flood.c +++ b/ospfd/ospf_flood.c @@ -980,7 +980,12 @@ ospf_ls_retransmit_delete_nbr_as (struct ospf *ospf, struct ospf_lsa *lsa) void ospf_lsa_flush_area (struct ospf_lsa *lsa, struct ospf_area *area) { + /* Reset the lsa origination time such that it gives + more time for the ACK to be received and avoid + retransmissions */ lsa->data->ls_age = htons (OSPF_LSA_MAXAGE); + lsa->tv_recv = recent_relative_time (); + lsa->tv_orig = lsa->tv_recv; ospf_flood_through_area (area, NULL, lsa); ospf_lsa_maxage (area->ospf, lsa); } @@ -988,7 +993,12 @@ ospf_lsa_flush_area (struct ospf_lsa *lsa, struct ospf_area *area) void ospf_lsa_flush_as (struct ospf *ospf, struct ospf_lsa *lsa) { + /* Reset the lsa origination time such that it gives + more time for the ACK to be received and avoid + retransmissions */ lsa->data->ls_age = htons (OSPF_LSA_MAXAGE); + lsa->tv_recv = recent_relative_time (); + lsa->tv_orig = lsa->tv_recv; ospf_flood_through_as (ospf, NULL, lsa); ospf_lsa_maxage (ospf, lsa); } -- 2.39.5