Merge remote branch 'repo/master' into stats
[openvswitch] / include / openflow.h
index 7a85cf557d0ccd420d65d1d5bd82aabdf8145f11..7462b884fd3ca59e3561ff43de4349d3df164dbc 100644 (file)
@@ -61,7 +61,11 @@ enum ofp_port {
     OFPP_MAX = 0x100,
 
     /* Fake output "ports". */
-    OFPP_NORMAL     = 0xfffa,  /* Process with normal L2/L3 switching */
+    OFPP_TABLE      = 0xfff9,  /* Perform actions in flow table.  
+                                * NB: This can only be the destination
+                                * port for packet-out messages. 
+                                */
+    OFPP_NORMAL     = 0xfffa,  /* Process with normal L2/L3 switching. */
     OFPP_FLOOD      = 0xfffb,  /* All physical ports except input port and 
                                   those disabled by STP. */
     OFPP_ALL        = 0xfffc,  /* All physical ports except input port. */
@@ -348,11 +352,12 @@ struct ofp_flow_expired {
 /* Statistics about flows that match the "match" field */
 struct ofp_flow_stats {
     struct ofp_match match;   /* Description of fields */
-    uint16_t duration;        /* Time flow has been alive in seconds.  Only 
+    uint32_t duration;        /* Time flow has been alive in seconds.  Only 
                                  used for non-aggregated results. */
-    uint16_t table_id;        /* ID of table flow came from. */
-    uint64_t packet_count;
-    uint64_t byte_count;
+    uint64_t packet_count;    /* Number of packets in flow. */
+    uint64_t byte_count;      /* Number of bytes in flow. */
+    uint8_t table_id;         /* ID of table flow came from. */
+    uint8_t pad[7];           /* Align to 64-bits. */
 };
 
 enum ofp_stat_type {
@@ -364,10 +369,10 @@ enum ofp_stat_type {
 struct ofp_flow_stat_request {
     struct ofp_header header;
     struct ofp_match match;   /* Fields to match */
-    uint16_t table_id;        /* ID of table to read (from ofp_table_stats)
+    uint8_t table_id;         /* ID of table to read (from ofp_table_stats)
                                  or 0xffff for all tables. */
     uint8_t type;             /* One of OFPFS_ */
-    uint8_t pad;              /* Align to 32-bits */
+    uint16_t pad;               /* Align to 32-bits */
 };
 
 /* Current flow statistics reply */
@@ -391,8 +396,8 @@ struct ofp_table_stat_request {
 
 /* Statistics about a particular table */
 struct ofp_table_stats {
-    uint16_t table_id;
-    uint8_t pad[2];          /* Align to 32-bits */
+    uint8_t table_id;
+    uint8_t pad[3];          /* Align to 32-bits */
     char name[OFP_MAX_TABLE_NAME_LEN];
     uint32_t max_entries;    /* Max number of entries supported */
     uint32_t active_count;   /* Number of active entries */