isisd: fix crash on processing own p2p hello
isis_pdu.c :
isisd crashes if router's own p2p hello packets get processed
thereby creating an adjacecncy with itself. Asserts at
isis_find_vertex. So discard own p2p IIH PDU and avoid
creating adjacency with self. This would also fix duplicate
systemID on an interface. These checks already exists for IS-IS
LAN Level 1/2 Hello PDU in process_lan_hello, but not for
point-to-point IIH PDUs.
Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index 02b50bf..7c04f44 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -562,6 +562,17 @@
}
/*
+ * it's own p2p IIH PDU - discard
+ */
+ if (!memcmp (hdr->source_id, isis->sysid, ISIS_SYS_ID_LEN))
+ {
+ zlog_warn ("ISIS-Adj (%s): it's own IIH PDU - discarded",
+ circuit->area->area_tag);
+ free_tlvs (&tlvs);
+ return ISIS_WARNING;
+ }
+
+ /*
* My interpertation of the ISO, if no adj exists we will create one for
* the circuit
*/