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;
        }

Reply via email to