isisd crashes when a router processes its own p2p hello packets. In a ring topology where multicast flooding on the ports is not blocked, the hello packets generated by a router and sent out to neighbors was being received back on the originating router's port. isisd crashed because the router processed its own hello packet and thereby created an adjacency with itself. This resulted the isis_find_vertex function to assert and the daemon to crash.
The fix I propose is to discard own IIH PDU and avoid creating an adjacency with self. This (discarding own IIH PDU) has already been handled for IS-IS LAN Level 1/2 Hello PDU in process_lan_hello function, but not for point-to-point IIH PDUs in process_p2p_hello. So, in addition to the other PDU acceptance tests that exists in process_p2p_hello, the IIH PDU should also be checked if it was from the router itself and discarded if the packet is its own, thus avoiding creating an adjacency with self. This fix would also handle the case of having duplicate system ID on an interface. Anyone familiar with this issue? Please let me know your thoughts. Thanks, Amritha
_______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
