--- openflow-2013-03-25-2.h	2015-07-23 09:54:17.444479374 -0700
+++ openflow-2012-10-16.h	2015-07-23 09:54:17.452479374 -0700
@@ -155,6 +155,9 @@
 
     /* Asynchronous messages. */
     OFPT_TABLE_STATUS       = 31, /* Async message */
+
+    /* Request forwarding by the switch. */
+    OFPT_REQUESTFORWARD     = 32, /* Async message */
 };
 
 /* Header on all OpenFlow packets. */
@@ -2794,6 +2797,8 @@
     OFPACPT_ROLE_STATUS_MASTER   = 7,  /* Role status mask for master. */
     OFPACPT_TABLE_STATUS_SLAVE   = 8,  /* Table status mask for slave. */
     OFPACPT_TABLE_STATUS_MASTER  = 9,  /* Table status mask for master. */
+    OFPACPT_REQUESTFORWARD_SLAVE  = 10, /* RequestForward mask for slave. */
+    OFPACPT_REQUESTFORWARD_MASTER = 11, /* RequestForward mask for master. */
     OFPTFPT_EXPERIMENTER_SLAVE   = 0xFFFE, /* Experimenter for slave. */
     OFPTFPT_EXPERIMENTER_MASTER  = 0xFFFF, /* Experimenter for master. */
 };
@@ -2811,7 +2816,8 @@
                                  OFPACPT_PORT_STATUS_*,
                                  OFPACPT_FLOW_REMOVED_*,
                                  OFPACPT_ROLE_STATUS_*,
-                                 OFPACPT_TABLE_STATUS_*. */
+                                 OFPACPT_TABLE_STATUS_*,
+                                 OFPACPT_REQUESTFORWARD_*. */
     uint16_t         length;  /* Length in bytes of this property. */
     uint32_t         mask;    /* Bitmasks of reason values. */
 };
@@ -2858,4 +2864,17 @@
 };
 OFP_ASSERT(sizeof(struct ofp_table_status) == 24);
 
+/* Request forward reason */
+enum ofp_requestforward_reason {
+    OFPRFR_GROUP_MOD = 0,       /* Forward group mod requests. */
+    OFPRFR_METER_MOD = 1,       /* Forward meter mod requests. */
+};
+
+/* Group/Meter request forwarding. */
+struct ofp_requestforward_header {
+    struct ofp_header header;   /* Type OFPT_NOTIFICATION. */
+    struct ofp_header request;  /* Request being forwarded. */
+};
+OFP_ASSERT(sizeof(struct ofp_requestforward_header) == 16);
+
 #endif /* openflow/openflow.h */
