summaryrefslogtreecommitdiffstats
path: root/ospf6d/ospf6_flood.c
diff options
context:
space:
mode:
authorMartin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>2021-05-10 22:48:32 +0200
committerMartin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>2021-05-11 11:52:07 +0200
commit2d84ae9c29205065b10aa6873fa269080d55338f (patch)
tree6633a516771a8b4c3b3c8f383e794168c67a58e6 /ospf6d/ospf6_flood.c
parentMerge pull request #8601 from Fredi-raspall/pr_fix_lfa_debug (diff)
downloadfrr-2d84ae9c29205065b10aa6873fa269080d55338f.tar.xz
frr-2d84ae9c29205065b10aa6873fa269080d55338f.zip
ospf6d: Send MAXAGE LS update for received old self-originated LSAs
Fixes OSPFv3-26.13 ANVL RFC conformance bug #8576 by improving the bugfix for #7030 from 4c63a76a. That commit changed handling of received old non-MAXAGE LSAs with a MAXAGE counterpart in the LSDB from "add all LSAs to LSDB and flood non-self-originated ones" to "add & flood only non-self-originated LSAs and ignore self-originated LSAs". The new behaviour is similar but adds sending a MAXAGE LS Update for received self-originated LSAs to remove the old LSAs from the network, resulting in "add & flood non-self-originated LSAs, don't add but send MAXAGE LS Update for self-originated LSAs". The missing MAXAGE LS Update is what OSPFv3-26.13 ANVL complained about. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
Diffstat (limited to '')
-rw-r--r--ospf6d/ospf6_flood.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index 5f4815fec..3e86e9cc8 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -1016,18 +1016,20 @@ void ospf6_receive_lsa(struct ospf6_neighbor *from,
if (is_debug)
zlog_debug(
"%s: Current copy of LSA %s is MAXAGE, but new has recent age, flooding/installing.",
- old->name, __PRETTY_FUNCTION__);
+ __PRETTY_FUNCTION__, old->name);
ospf6_lsa_purge(old);
ospf6_flood(from, 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;
}
- return;
+ /* For self-originated LSA, only trust
+ * ourselves. Fall through and send
+ * LS Update with our current copy.
+ */
+ if (is_debug)
+ zlog_debug(
+ "%s: Current copy of self-originated LSA %s is MAXAGE, but new has recent age, re-sending current one.",
+ __PRETTY_FUNCTION__, old->name);
}
/* XXX, MinLSArrival check !? RFC 2328 13 (8) */