summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ospf6d/ospf6_flood.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index b144c6804e..56aac0f21f 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -1001,18 +1001,22 @@ void ospf6_receive_lsa(struct ospf6_neighbor *from,
* MAXAGEd and not removed.*/
if (OSPF6_LSA_IS_MAXAGE(old)
&& !OSPF6_LSA_IS_MAXAGE(new)) {
-
- if (is_debug)
- zlog_debug(
- "%s: Current copy of LSA %s is MAXAGE, but new has recent Age.",
- old->name, __func__);
-
- ospf6_lsa_purge(old);
if (new->header->adv_router
- != from->ospf6_if->area->ospf6->router_id)
+ != from->ospf6_if->area->ospf6->router_id) {
+ if (is_debug)
+ zlog_debug(
+ "%s: Current copy of LSA %s is MAXAGE, but new has recent age, flooding/installing.",
+ old->name, __PRETTY_FUNCTION__);
+ ospf6_lsa_purge(old);
ospf6_flood(from, new);
-
- ospf6_install_lsa(new);
+ ospf6_install_lsa(new);
+ } else {
+ if (is_debug)
+ zlog_debug(
+ "%s: Current copy of self-originated LSA %s is MAXAGE, but new has recent age, ignoring new.",
+ old->name, __PRETTY_FUNCTION__);
+ ospf6_lsa_delete(new);
+ }
return;
}