summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_lsa.c
diff options
context:
space:
mode:
authorDinesh G Dutt <ddutt@cumulusnetworks.com>2013-01-07 19:12:52 +0100
committerScott Feldman <sfeldma@cumulusnetworks.com>2013-01-07 19:12:52 +0100
commite0630cb4d61557f956318a088f68f1fc4d261ef3 (patch)
tree954964aed06b0247b59686d73e109218951df369 /ospfd/ospf_lsa.c
parentospfd: Corrected ospfd Type-4/Type-5 ls update handling (diff)
downloadfrr-e0630cb4d61557f956318a088f68f1fc4d261ef3.tar.xz
frr-e0630cb4d61557f956318a088f68f1fc4d261ef3.zip
ospfd: Remove dup MaxAge LSA flood
Stop additional, unnecessary flooding of MaxAge LSAs. When a MaxAge LSA is installed, if the LSA is prematurely aged or the LSA is not self-originated, the LSA is flushed. This results in a the LSA being flooded a second time and in some cases flooded back to the receiver (unless the receiver is also the advertising router). A MaxAge'd LSA has already been flooded in ospf_flood() as part of the LSA receive processing (ospf_ls_upd). A self-originated LSA will be flooded from the originate/refresh routine. Thus, in the install routine, a MaxAge'd LSA only needs to be added to the MaxAge LSA list. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Diffstat (limited to 'ospfd/ospf_lsa.c')
-rw-r--r--ospfd/ospf_lsa.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index 4f7fb00aa..dfd1a61e2 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -2780,15 +2780,14 @@ ospf_lsa_install (struct ospf *ospf, struct ospf_interface *oi,
If received LSA' ls_age is MaxAge, or lsa is being prematurely aged
(it's getting flushed out of the area), set LSA on MaxAge LSA list.
*/
- if ((lsa->flags & OSPF_LSA_PREMATURE_AGE) ||
- (IS_LSA_MAXAGE (new) && !IS_LSA_SELF (new)))
+ if (IS_LSA_MAXAGE (new))
{
if (IS_DEBUG_OSPF (lsa, LSA_INSTALL))
zlog_debug ("LSA[Type%d:%s]: Install LSA 0x%p, MaxAge",
new->data->type,
inet_ntoa (new->data->id),
lsa);
- ospf_lsa_flush (ospf, lsa);
+ ospf_lsa_maxage (ospf, lsa);
}
return new;