]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: refuse adjacencies with our own system ID
authorDavid Lamparter <equinox@opensourcerouting.org>
Tue, 27 Nov 2012 01:10:25 +0000 (01:10 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Wed, 12 Dec 2012 14:38:07 +0000 (15:38 +0100)
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>
isisd/isis_pdu.c

index bfa1e4e931fe7c11d1f52eec366989b4f7681f9a..083ddc72b09406fe7d7cd5a0ee205ba7dc8a6e12 100644 (file)
@@ -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