--- openflow-2012-03-19-4.h	2015-07-23 09:54:17.116479361 -0700
+++ openflow-2012-03-20-2.h	2015-07-23 09:54:17.120479361 -0700
@@ -909,6 +909,13 @@
     OFPAT_EXPERIMENTER = 0xffff
 };
 
+/* Generic ofp_action structure */
+struct ofp_action {
+    uint16_t type;                /* Action type */
+    uint16_t len;                 /* Length of this struct in bytes. */
+};
+OFP_ASSERT(sizeof(struct ofp_action) == 4);
+
 enum ofp_controller_max_len {
 	OFPCML_MAX       = 0xffe5, /* maximum max_len value which can be used
 	                              to request a specific byte length. */
@@ -1036,9 +1043,8 @@
 struct ofp_instruction {
     uint16_t type;                /* Instruction type */
     uint16_t len;                 /* Length of this struct in bytes. */
-    uint8_t pad[4];               /* Align to 64-bits */
 };
-OFP_ASSERT(sizeof(struct ofp_instruction) == 8);
+OFP_ASSERT(sizeof(struct ofp_instruction) == 4);
 
 /* Instruction structure for OFPIT_GOTO_TABLE */
 struct ofp_instruction_goto_table {
@@ -1861,7 +1867,7 @@
      *   - Exactly (length - 4) bytes containing the instruction ids, then
      *   - Exactly (length + 7)/8*8 - (length) (between 0 and 7)
      *     bytes of all-zero bytes */
-    uint16_t         instruction_ids[0];
+    struct ofp_instruction   instruction_ids[0];   /* List of instructions */
 };
 OFP_ASSERT(sizeof(struct ofp_table_feature_prop_instructions) == 4);
 
@@ -1885,7 +1891,7 @@
      *   - Exactly (length - 4) bytes containing the action_ids, then
      *   - Exactly (length + 7)/8*8 - (length) (between 0 and 7)
      *     bytes of all-zero bytes */
-    uint16_t         action_ids[0];
+    struct ofp_action        action_ids[0];      /* List of actions */
 };
 OFP_ASSERT(sizeof(struct ofp_table_feature_prop_actions) == 4);
 
@@ -1897,7 +1903,7 @@
      *   - Exactly (length - 4) bytes containing the oxm_ids, then
      *   - Exactly (length + 7)/8*8 - (length) (between 0 and 7)
      *     bytes of all-zero bytes */
-    uint32_t         oxm_ids[0];
+    uint32_t         oxm_ids[0];   /* Array of OXM headers */
 };
 OFP_ASSERT(sizeof(struct ofp_table_feature_prop_oxm) == 4);
 
@@ -1930,7 +1936,7 @@
     uint32_t config;         /* Bitmap of OFPTC_* values */
     uint32_t max_entries;    /* Max number of entries supported. */
 
-    /* Table Feature Properties */
+    /* Table Feature Property list */
     struct ofp_table_feature_prop_header properties[0];
 };
 OFP_ASSERT(sizeof(struct ofp_table_features) == 64);
