--- openflow-2011-10-04-2.h	2015-07-23 09:54:16.780479347 -0700
+++ openflow-2011-10-26.h	2015-07-23 09:54:16.784479347 -0700
@@ -1222,6 +1222,7 @@
     OFPET_TABLE_MOD_FAILED,     /* Table mod request failed. */
     OFPET_QUEUE_OP_FAILED,      /* Queue operation failed. */
     OFPET_SWITCH_CONFIG_FAILED, /* Switch config request failed. */
+    OFPET_ROLE_REQUEST_FAILED,  /* Controller Role request failed. */
     OFPET_EXPERIMENTER = 0xffff /* Experimenter error messages. */
 };
 
@@ -1383,6 +1384,12 @@
     OFPSCFC_BAD_LEN              /* Specified len is invalid. */
 };
 
+/* ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
+ * at least the first 64 bytes of the failed request. */
+enum ofp_role_request_failed_code {
+    OFPRRFC_STALE               /* Stale Message: old generation_id. */
+};
+
 /* OFPT_ERROR: Error message (datapath -> controller). */
 struct ofp_error_msg {
     struct ofp_header header;
@@ -1842,7 +1849,9 @@
 struct ofp_role_request {
     struct ofp_header header;   /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
     uint32_t role;              /* One of NX_ROLE_*. */
+    uint8_t pad[4];             /* Align to 64 bits. */
+    uint64_t generation_id;     /* Master Election Generation Id */
 };
-OFP_ASSERT(sizeof(struct ofp_role_request) == 12);
+OFP_ASSERT(sizeof(struct ofp_role_request) == 24);
 
 #endif /* openflow/openflow.h */
