--- openflow-2014-07-18-2.h	2015-07-23 09:54:17.936479394 -0700
+++ openflow-2014-07-28.h	2015-07-23 09:54:17.940479394 -0700
@@ -1654,10 +1654,9 @@
 
 /* Group bucket property types.  */
 enum ofp_group_bucket_prop_type {
-    OFPGBPT_ACTIONS                = 0,  /* All types of groups. */
-    OFPGBPT_WEIGHT                 = 1,  /* Select groups only. */
-    OFPGBPT_WATCH_PORT             = 2,  /* Fast failover groups only. */
-    OFPGBPT_WATCH_GROUP            = 3,  /* Fast failover groups only. */
+    OFPGBPT_WEIGHT                 = 0,  /* Select groups only. */
+    OFPGBPT_WATCH_PORT             = 1,  /* Fast failover groups only. */
+    OFPGBPT_WATCH_GROUP            = 2,  /* Fast failover groups only. */
     OFPGBPT_EXPERIMENTER      = 0xFFFF,  /* Experimenter defined. */
 };
 
@@ -1668,15 +1667,6 @@
 };
 OFP_ASSERT(sizeof(struct ofp_group_bucket_prop_header) == 4);
 
-/* Group bucket actions property. */
-struct ofp_group_bucket_prop_actions {
-    uint16_t         type;    /* OFPGBPT_ACTIONS. */
-    uint16_t         length;  /* Length in bytes of this property. */
-    uint8_t pad[4];           /* Pad to 64 bits. */
-    struct ofp_action_header actions[0]; /* Exactly length - 8 bytes long. */
-};
-OFP_ASSERT(sizeof(struct ofp_group_bucket_prop_actions) == 8);
-
 /* Group bucket weight property, for select groups only. */
 struct ofp_group_bucket_prop_weight {
     uint16_t         type;    /* OFPGBPT_WEIGHT. */
@@ -1716,9 +1706,16 @@
     uint16_t len;                   /* Length of the bucket in bytes, including
                                        this header and any padding to make it
                                        64-bit aligned. */
-    uint8_t pad[2];                 /* Pad to 32 bits. */
+    uint16_t action_list_len;       /* Length of all actions in bytes. */ 
     uint32_t bucket_id;             /* Bucket Id used to identify bucket*/
-    /* Followed by exactly len - 8 bytes of group bucket properties. */
+    /* Followed by:
+     *   - Exactly 'action_list_len' bytes containing an array of
+     *     struct ofp_action_*.
+     *   - Zero or more bytes of group bucket properties to fill out the
+     *     overall length in header.length. */
+    struct ofp_action_header actions[0]; /* The length of the action array is
+                                            action_list_len bytes. */
+    //struct ofp_group_bucket_prop_header properties[0];
 };
 OFP_ASSERT(sizeof(struct ofp_bucket) == 8);
 
@@ -1783,6 +1780,9 @@
      *     struct ofp_bucket.
      *   - Zero or more bytes of group properties to fill out the overall
      *     length in header.length. */
+    struct ofp_bucket buckets[0]; /* The length of the bucket array is
+                                     bucket_list_len bytes. */
+    //struct ofp_group_prop_header properties[0];
 };
 OFP_ASSERT (sizeof(struct ofp_group_mod) == 24); 
 
