[ovs-dev] [PATCH v2 2/3] ofproto-dpif: Differentiate between different miss types in packet in
Ben Pfaff
blp at nicira.com
Thu Mar 20 22:01:37 UTC 2014
On Thu, Mar 13, 2014 at 03:52:55PM +0900, Simon Horman wrote:
> Replace the generated_by_table_miss field of struct ofproto_packet_in
> with a miss_type field.
>
> The generated_by_table_miss field allowed packet-in messages generated
> by table-miss rules to be differentiated. This differentiation
> is still provided for by miss_type being set to OFPROTO_PACKET_IN_MISS_FLOW.
>
> This patch allows further differentiation by setting miss_type
> to OFPROTO_PACKET_IN_MISS_WITHOUT_FLOW if the packet-in message
> is generated by a table-miss which is not handled by a table-miss rule.
>
> This is in preparation for OpenFlow 1.3 version-specific
> handling of the default action for such misses.
>
> Signed-off-by: Simon Horman <horms at verge.net.au>
Thanks, I folded in the following comment improvements and I'll apply
this in a minute.
diff --git a/ofproto/connmgr.h b/ofproto/connmgr.h
index 90b5856..c4cfd83 100644
--- a/ofproto/connmgr.h
+++ b/ofproto/connmgr.h
@@ -63,12 +63,22 @@ enum ofconn_async_msg_type {
};
enum ofproto_packet_in_miss_type {
- OFPROTO_PACKET_IN_NO_MISS, /* Not a miss */
- OFPROTO_PACKET_IN_MISS_FLOW, /* Miss handled by a table-miss flow
- * See OF1.3.3 section 5.4 */
+ /* Not generated by a flow miss or table-miss flow. */
+ OFPROTO_PACKET_IN_NO_MISS,
+
+ /* The packet_in was generated directly by a table-miss flow, that is, a
+ * flow with priority 0 that wildcards all fields. See OF1.3.3 section
+ * 5.4.
+ *
+ * (Our interpretation of "directly" is "not via groups". Packet_ins
+ * generated by table-miss flows via groups use
+ * OFPROTO_PACKET_IN_NO_MISS.) */
+ OFPROTO_PACKET_IN_MISS_FLOW,
+
+ /* The packet-in was generated directly by a table-miss, but not a
+ * table-miss flow. That is, it was generated by the OpenFlow 1.0, 1.1, or
+ * 1.2 table-miss behavior. */
OFPROTO_PACKET_IN_MISS_WITHOUT_FLOW,
- /* Miss was not handled by a table-miss
- * flow */
};
/* A packet_in, with extra members to assist in queuing and routing it. */
@@ -77,10 +87,6 @@ struct ofproto_packet_in {
struct list list_node; /* For queuing. */
uint16_t controller_id; /* Controller ID to send to. */
int send_len; /* Length that the action requested sending. */
-
- /* True if the packet_in was generated directly by a table-miss flow, that
- * is, a flow with priority 0 that wildcards all fields. (Our
- * interpretation of "directly" is "not via groups".) */
enum ofproto_packet_in_miss_type miss_type;
};
More information about the dev
mailing list