Hi, switchd(8) sends packet_outs with OFP_PORT_ANY as the dstport, causing switches receiving them to disconnect due to validation failure of the said message. The comments indicate that looping packets should be ignored, which I agree is the expected behavior for a controller implementing a learning switch.
This diff stops switchd(8) from processing packet_ins from looping packets, causing them to be dropped as the comment suggests. OK? Thanks, Ayaka Index: ofp13.c =================================================================== RCS file: /cvs/src/usr.sbin/switchd/ofp13.c,v retrieving revision 1.43 diff -u -p -u -r1.43 ofp13.c --- ofp13.c 17 Jan 2017 09:21:50 -0000 1.43 +++ ofp13.c 18 Apr 2018 07:43:35 -0000 @@ -1082,7 +1082,8 @@ ofp13_packet_in(struct switchd *sc, stru * silently drop looping packet * (don't use OFP_PORT_INPUT here) */ - dstport = OFP_PORT_ANY; + ret = 0; + goto done; } else { addflow = 1; }