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

Reply via email to