--- openflow-2014-07-18.h	2015-07-23 09:54:17.928479394 -0700
+++ openflow-2014-07-18-2.h	2015-07-23 09:54:17.936479394 -0700
@@ -1738,6 +1738,34 @@
                                        only OFPGC_REMOVE_BUCKET command */ 
 };
 
+/* Group property types.  */
+enum ofp_group_prop_type {
+    OFPGPT_EXPERIMENTER      = 0xFFFF,  /* Experimenter defined. */
+};
+
+/* Common header for all group properties. */
+struct ofp_group_prop_header {
+    uint16_t         type;    /* One of OFPGPT_*. */
+    uint16_t         length;  /* Length in bytes of this property. */
+};
+OFP_ASSERT(sizeof(struct ofp_group_prop_header) == 4);
+
+/* Experimenter group property */
+struct ofp_group_prop_experimenter {
+    uint16_t         type;         /* OFPGPT_EXPERIMENTER. */
+    uint16_t         length;       /* Length in bytes of this property. */
+    uint32_t         experimenter;  /* Experimenter ID which takes the same
+                                       form as in struct
+                                       ofp_experimenter_header. */
+    uint32_t         exp_type;      /* Experimenter defined. */
+    /* Followed by:
+     *   - Exactly (length - 12) bytes containing the experimenter data, then
+     *   - Exactly (length + 7)/8*8 - (length) (between 0 and 7)
+     *     bytes of all-zero bytes */
+    uint32_t         experimenter_data[0];
+};
+OFP_ASSERT(sizeof(struct ofp_group_prop_experimenter) == 12);
+
 /* Group setup and teardown (controller -> datapath). */
 struct ofp_group_mod {
     struct ofp_header header;
@@ -1750,8 +1778,11 @@
     uint32_t command_bucket_id;   /* Bucket Id used as part of 
                                      OFPGC_INSERT_BUCKET and OFPGC_REMOVE_BUCKET
                                      commands execution.*/
-    struct ofp_bucket buckets[0]; /* The length of the bucket array is
-                                     bucket_list_len bytes. */
+    /* Followed by:
+     *   - Exactly 'bucket_list_len' bytes containing an array of
+     *     struct ofp_bucket.
+     *   - Zero or more bytes of group properties to fill out the overall
+     *     length in header.length. */
 };
 OFP_ASSERT (sizeof(struct ofp_group_mod) == 24); 
 
