From 2e9db233b1029e85d79e39e30a197cba7219e201 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Mon, 28 Jun 2021 16:29:56 +0200 Subject: [PATCH] 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 --- ospf6d/ospf6_flood.c | 10 ++++++++++ 1 file changed, 10 insertions(+) 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);