--- openflow-2013-07-05-2.h	2015-07-23 09:54:17.680479384 -0700
+++ openflow-2013-07-05-3.h	2015-07-23 09:54:17.684479384 -0700
@@ -2106,10 +2106,10 @@
      * The reply body is struct ofp_desc. */
     OFPMP_DESC = 0,
 
-    /* Individual flow statistics.
+    /* Individual flow descriptions and statistics.
      * The request body is struct ofp_flow_stats_request.
-     * The reply body is an array of struct ofp_flow_stats. */
-    OFPMP_FLOW = 1,
+     * The reply body is an array of struct ofp_flow_desc. */
+    OFPMP_FLOW_DESC = 1,
 
     /* Aggregate flow statistics.
      * The request body is struct ofp_aggregate_stats_request.
@@ -2189,6 +2189,11 @@
      * The reply body is an array of struct ofp_flow_update_header. */
     OFPMP_FLOW_MONITOR = 16,
 
+    /* Individual flow statistics (without description).
+     * The request body is struct ofp_flow_stats_request.
+     * The reply body is an array of struct ofp_flow_stats. */
+    OFPMP_FLOW_STATS = 17,
+
     /* Experimenter extension.
      * The request and reply bodies begin with
      * struct ofp_experimenter_multipart_header.
@@ -2238,9 +2243,9 @@
 };
 OFP_ASSERT(sizeof(struct ofp_desc) == 1056);
 
-/* Body for ofp_multipart_request of type OFPMP_FLOW. */
+/* Body for ofp_multipart_request of type OFPMP_FLOW_DESC & OFPMP_FLOW_STATS. */
 struct ofp_flow_stats_request {
-    uint8_t table_id;         /* ID of table to read (from ofp_table_stats),
+    uint8_t table_id;         /* ID of table to read (from ofp_table_desc),
                                  OFPTT_ALL for all tables. */
     uint8_t pad[3];           /* Align to 32 bits. */
     uint32_t out_port;        /* Require matching entries to include this
@@ -2259,8 +2264,8 @@
 };
 OFP_ASSERT(sizeof(struct ofp_flow_stats_request) == 40);
 
-/* Body of reply to OFPMP_FLOW request. */
-struct ofp_flow_stats {
+/* Body of reply to OFPMP_FLOW_DESC request. */
+struct ofp_flow_desc {
     uint16_t length;          /* Length of this entry. */
     uint8_t pad2[2];          /* Align to 64-bits. */
     uint8_t table_id;         /* ID of table flow came from. */
@@ -2276,7 +2281,19 @@
     //struct ofp_instruction_header instructions[0];
                               /* Instruction set - 0 or more. */
 };
-OFP_ASSERT(sizeof(struct ofp_flow_stats) == 32);
+OFP_ASSERT(sizeof(struct ofp_flow_desc) == 32);
+
+/* Body of reply to OFPMP_FLOW_STATS request. */
+struct ofp_flow_stats {
+    uint16_t length;          /* Length of this entry. */
+    uint8_t pad2[2];          /* Align to 64-bits. */
+    uint8_t table_id;         /* ID of table flow came from. */
+    uint8_t pad;
+    uint16_t priority;        /* Priority of the entry. */
+    struct ofp_match match;   /* Description of fields. Variable size. */
+    //struct ofp_stats stats; /* Statistics list. Variable size. */
+};
+OFP_ASSERT(sizeof(struct ofp_flow_stats) == 16);
 
 /* Body for ofp_multipart_request of type OFPMP_AGGREGATE. */
 struct ofp_aggregate_stats_request {
