diff options
author | David Lamparter <equinox@opensourcerouting.org> | 2012-11-27 01:10:25 +0000 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2012-12-12 15:38:07 +0100 |
commit | 19f78cebd2ce50f0d1f367cd759cdcfb1a500f59 (patch) | |
tree | 94526e2119d9142ca53217a9d0e5a357a260abba /isisd | |
parent | 91d799e8cdd24ad3c195ed9d11882aacc91cc2ea (diff) |
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>
Diffstat (limited to 'isisd')
-rw-r--r-- | isisd/isis_pdu.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c index bfa1e4e9..083ddc72 100644 --- a/isisd/isis_pdu.c +++ b/isisd/isis_pdu.c @@ -988,6 +988,13 @@ process_lan_hello (int level, struct isis_circuit *circuit, u_char * ssnpa) } } + 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 |