summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_flood.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2021-06-28 16:29:56 +0200
committerDavid Lamparter <equinox@opensourcerouting.org>2021-07-20 11:22:21 +0200
commit2e9db233b1029e85d79e39e30a197cba7219e201 (patch)
tree4a992dd65ebb0117c23efc774184a16632272423 /ospf6d/ospf6_flood.c
parentb08221513cc7b3fb071a263a0178d1044dfa770b (diff)
ospf6d: don't create Adv-ID:0.0.0.0 LSAs at start
When ospf6d comes up, it gets interface and address state before it decides on its router ID. This results in a bunch of LSAs with advertising router ID 0.0.0.0 in the LSDB. Not quite right. There's a whole bunch of paths leading to this, so just drop the LSA in ospf6_lsa_originate. The router-ID change causes everything to be readvertised anyway (... but the delete doesn't catch the 0.0.0.0 stuff because the router-ID is now different.) Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'ospf6d/ospf6_flood.c')
-rw-r--r--ospf6d/ospf6_flood.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index 738c2218fa..0a384a98e6 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -89,6 +89,16 @@ void ospf6_lsa_originate(struct ospf6_lsa *lsa)
struct ospf6_lsa *old;
struct ospf6_lsdb *lsdb_self;
+ if (lsa->header->adv_router == INADDR_ANY) {
+ if (IS_OSPF6_DEBUG_ORIGINATE_TYPE(lsa->header->type))
+ zlog_debug(
+ "Refusing to originate LSA (zero router ID): %s",
+ lsa->name);
+
+ ospf6_lsa_delete(lsa);
+ return;
+ }
+
/* find previous LSA */
old = ospf6_lsdb_lookup(lsa->header->type, lsa->header->id,
lsa->header->adv_router, lsa->lsdb);