Please forgive me for not answering point-by-point. I think that there is some basic confusion here that I can clear up quickly, and then I think the rest will follow from that.
In OpenFlow 1.0 through 1.2, a "no match" packet-in meant exactly that: no match was found in a table. If any match was found, then a packet-in could get sent via an action, and in that case the reason would be "action". OpenFlow 1.3 changed the semantics. In OF1.3, if there is actually no match, then the packet gets dropped and no packet-in is sent. If a match is found, and that match sends a packet-in via an action, though, the reason found in the packet-in depends on the flow. If the flow match wildcards all fields and has priority 0, then that flow is a "table miss flow entry" and "no match" is used as the reason; otherwise, "action" is used as the reason. In OVS, we try to handle both cases, by sending a packet-in with a reason that matches the semantics of the protocol actually in use on each OpenFlow connection. Does that help? Thanks, Ben. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev