isisd: refuse adjacencies with our own system ID
isisd would form an adjacency with another router despite the system IDs
being identical. This would later cause an assertion failure like this:
assertion=0x555555596db8 "isis_find_vertex (spftree->paths, id, vtype) == ((void *)0)",
file=0x555555596c60 "isis_spf.c", line=515, function=0x555555597900 "isis_spf_add2tent") at log.c:619
which is caused by trying to add a path expected to not exist, but
suddenly colliding due to the duplicate system ID.
* isis_pdu.c: check for system ID collision on receiving Hello
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index bfa1e4e..083ddc7 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -988,6 +988,13 @@
}
}
+ if (!memcmp (hdr.source_id, isis->sysid, ISIS_SYS_ID_LEN))
+ {
+ zlog_warn ("ISIS-Adj (%s): duplicate system ID on interface %s",
+ circuit->area->area_tag, circuit->interface->name);
+ return ISIS_WARNING;
+ }
+
/*
* Accept the level 1 adjacency only if a match between local and
* remote area addresses is found