--- openflow-2011-11-23.h	2015-07-23 09:54:16.860479350 -0700
+++ openflow-2011-11-29.h	2015-07-23 09:54:16.864479350 -0700
@@ -104,46 +104,46 @@
 
 enum ofp_type {
     /* Immutable messages. */
-    OFPT_HELLO,               /* Symmetric message */
-    OFPT_ERROR,               /* Symmetric message */
-    OFPT_ECHO_REQUEST,        /* Symmetric message */
-    OFPT_ECHO_REPLY,          /* Symmetric message */
-    OFPT_EXPERIMENTER,        /* Symmetric message */
+    OFPT_HELLO              = 0,  /* Symmetric message */
+    OFPT_ERROR              = 1,  /* Symmetric message */
+    OFPT_ECHO_REQUEST       = 2,  /* Symmetric message */
+    OFPT_ECHO_REPLY         = 3,  /* Symmetric message */
+    OFPT_EXPERIMENTER       = 4,  /* Symmetric message */
 
     /* Switch configuration messages. */
-    OFPT_FEATURES_REQUEST,    /* Controller/switch message */
-    OFPT_FEATURES_REPLY,      /* Controller/switch message */
-    OFPT_GET_CONFIG_REQUEST,  /* Controller/switch message */
-    OFPT_GET_CONFIG_REPLY,    /* Controller/switch message */
-    OFPT_SET_CONFIG,          /* Controller/switch message */
+    OFPT_FEATURES_REQUEST   = 5,  /* Controller/switch message */
+    OFPT_FEATURES_REPLY     = 6,  /* Controller/switch message */
+    OFPT_GET_CONFIG_REQUEST = 7,  /* Controller/switch message */
+    OFPT_GET_CONFIG_REPLY   = 8,  /* Controller/switch message */
+    OFPT_SET_CONFIG         = 9,  /* Controller/switch message */
 
     /* Asynchronous messages. */
-    OFPT_PACKET_IN,           /* Async message */
-    OFPT_FLOW_REMOVED,        /* Async message */
-    OFPT_PORT_STATUS,         /* Async message */
+    OFPT_PACKET_IN          = 10, /* Async message */
+    OFPT_FLOW_REMOVED       = 11, /* Async message */
+    OFPT_PORT_STATUS        = 12, /* Async message */
 
     /* Controller command messages. */
-    OFPT_PACKET_OUT,          /* Controller/switch message */
-    OFPT_FLOW_MOD,            /* Controller/switch message */
-    OFPT_GROUP_MOD,           /* Controller/switch message */
-    OFPT_PORT_MOD,            /* Controller/switch message */
-    OFPT_TABLE_MOD,           /* Controller/switch message */
+    OFPT_PACKET_OUT         = 13, /* Controller/switch message */
+    OFPT_FLOW_MOD           = 14, /* Controller/switch message */
+    OFPT_GROUP_MOD          = 15, /* Controller/switch message */
+    OFPT_PORT_MOD           = 16, /* Controller/switch message */
+    OFPT_TABLE_MOD          = 17, /* Controller/switch message */
 
     /* Statistics messages. */
-    OFPT_STATS_REQUEST,       /* Controller/switch message */
-    OFPT_STATS_REPLY,         /* Controller/switch message */
+    OFPT_STATS_REQUEST      = 18, /* Controller/switch message */
+    OFPT_STATS_REPLY        = 19, /* Controller/switch message */
 
     /* Barrier messages. */
-    OFPT_BARRIER_REQUEST,     /* Controller/switch message */
-    OFPT_BARRIER_REPLY,       /* Controller/switch message */
+    OFPT_BARRIER_REQUEST    = 20, /* Controller/switch message */
+    OFPT_BARRIER_REPLY      = 21, /* Controller/switch message */
 
     /* Queue Configuration messages. */
-    OFPT_QUEUE_GET_CONFIG_REQUEST,  /* Controller/switch message */
-    OFPT_QUEUE_GET_CONFIG_REPLY,     /* Controller/switch message */
+    OFPT_QUEUE_GET_CONFIG_REQUEST = 22,  /* Controller/switch message */
+    OFPT_QUEUE_GET_CONFIG_REPLY   = 23,  /* Controller/switch message */
 
     /* Controller role change request messages. */
-    OFPT_ROLE_REQUEST,        /* Controller/switch message */
-    OFPT_ROLE_REPLY,          /* Controller/switch message */
+    OFPT_ROLE_REQUEST       = 24, /* Controller/switch message */
+    OFPT_ROLE_REPLY         = 25, /* Controller/switch message */
 };
 
 /* Header on all OpenFlow packets. */
@@ -321,9 +321,9 @@
 
 /* What changed about the physical port */
 enum ofp_port_reason {
-    OFPPR_ADD,              /* The port was added. */
-    OFPPR_DELETE,           /* The port was removed. */
-    OFPPR_MODIFY            /* Some attribute of the port has changed. */
+    OFPPR_ADD     = 0,         /* The port was added. */
+    OFPPR_DELETE  = 1,         /* The port was removed. */
+    OFPPR_MODIFY  = 2,         /* Some attribute of the port has changed. */
 };
 
 /* A physical port has changed in the datapath */
@@ -367,8 +367,8 @@
  * ONF wiki. Support for extensions is optional.
  */
 enum ofp_match_type {
-    OFPMT_STANDARD,           /* Deprecated. */
-    OFPMT_OXM,                /* OpenFlow Extensible Match */
+    OFPMT_STANDARD = 0,       /* Deprecated. */
+    OFPMT_OXM      = 1,       /* OpenFlow Extensible Match */
 };
 
 /* Fields to match against flows */
@@ -820,35 +820,23 @@
 /* ## ----------------- ## */
 
 enum ofp_action_type {
-    OFPAT_OUTPUT,           /* Output to switch port. */
-    OFPAT_OBSOLETE_1,       /* Obsolete. */
-    OFPAT_OBSOLETE_2,       /* Obsolete. */
-    OFPAT_OBSOLETE_3,       /* Obsolete. */
-    OFPAT_OBSOLETE_4,       /* Obsolete. */
-    OFPAT_OBSOLETE_5,       /* Obsolete. */
-    OFPAT_OBSOLETE_6,       /* Obsolete. */
-    OFPAT_OBSOLETE_7,       /* Obsolete. */
-    OFPAT_OBSOLETE_8,       /* Obsolete. */
-    OFPAT_OBSOLETE_9,       /* Obsolete. */
-    OFPAT_OBSOLETE_10,      /* Obsolete. */
-    OFPAT_COPY_TTL_OUT,     /* Copy TTL "outwards" -- from next-to-outermost to
-                               outermost */
-    OFPAT_COPY_TTL_IN,      /* Copy TTL "inwards" -- from outermost to
+    OFPAT_OUTPUT       = 0,  /* Output to switch port. */
+    OFPAT_COPY_TTL_OUT = 11, /* Copy TTL "outwards" -- from next-to-outermost
+                                to outermost */
+    OFPAT_COPY_TTL_IN  = 12, /* Copy TTL "inwards" -- from outermost to
                                next-to-outermost */
-    OFPAT_OBSOLETE_11,      /* Obsolete. */
-    OFPAT_OBSOLETE_12,      /* Obsolete. */
-    OFPAT_SET_MPLS_TTL,     /* MPLS TTL */
-    OFPAT_DEC_MPLS_TTL,     /* Decrement MPLS TTL */
-
-    OFPAT_PUSH_VLAN,        /* Push a new VLAN tag */
-    OFPAT_POP_VLAN,         /* Pop the outer VLAN tag */
-    OFPAT_PUSH_MPLS,        /* Push a new MPLS tag */
-    OFPAT_POP_MPLS,         /* Pop the outer MPLS tag */
-    OFPAT_SET_QUEUE,        /* Set queue id when outputting to a port */
-    OFPAT_GROUP,            /* Apply group. */
-    OFPAT_SET_NW_TTL,       /* IP TTL. */
-    OFPAT_DEC_NW_TTL,       /* Decrement IP TTL. */
-    OFPAT_SET_FIELD,        /* Set a header field using OXM TLV format. */
+    OFPAT_SET_MPLS_TTL = 15, /* MPLS TTL */
+    OFPAT_DEC_MPLS_TTL = 16, /* Decrement MPLS TTL */
+
+    OFPAT_PUSH_VLAN    = 17, /* Push a new VLAN tag */
+    OFPAT_POP_VLAN     = 18, /* Pop the outer VLAN tag */
+    OFPAT_PUSH_MPLS    = 19, /* Push a new MPLS tag */
+    OFPAT_POP_MPLS     = 20, /* Pop the outer MPLS tag */
+    OFPAT_SET_QUEUE    = 21, /* Set queue id when outputting to a port */
+    OFPAT_GROUP        = 22, /* Apply group. */
+    OFPAT_SET_NW_TTL   = 23, /* IP TTL. */
+    OFPAT_DEC_NW_TTL   = 24, /* Decrement IP TTL. */
+    OFPAT_SET_FIELD    = 25, /* Set a header field using OXM TLV format. */
     OFPAT_EXPERIMENTER = 0xffff
 };
 
@@ -1027,13 +1015,13 @@
 /* ## --------------------------- ## */
 
 enum ofp_flow_mod_command {
-    OFPFC_ADD,              /* New flow. */
-    OFPFC_MODIFY,           /* Modify all matching flows. */
-    OFPFC_MODIFY_STRICT,    /* Modify entry strictly matching wildcards and
-                               priority. */
-    OFPFC_DELETE,           /* Delete all matching flows. */
-    OFPFC_DELETE_STRICT     /* Delete entry strictly matching wildcards and
-                               priority. */
+    OFPFC_ADD           = 0, /* New flow. */
+    OFPFC_MODIFY        = 1, /* Modify all matching flows. */
+    OFPFC_MODIFY_STRICT = 2, /* Modify entry strictly matching wildcards and
+                                priority. */
+    OFPFC_DELETE        = 3, /* Delete all matching flows. */
+    OFPFC_DELETE_STRICT = 4, /* Delete entry strictly matching wildcards and
+                                priority. */
 };
 
 /* Value used in "idle_timeout" and "hard_timeout" to indicate that the entry
@@ -1102,9 +1090,9 @@
 
 /* Group commands */
 enum ofp_group_mod_command {
-    OFPGC_ADD,              /* New group. */
-    OFPGC_MODIFY,           /* Modify all matching groups. */
-    OFPGC_DELETE,           /* Delete all matching groups. */
+    OFPGC_ADD    = 0,       /* New group. */
+    OFPGC_MODIFY = 1,       /* Modify all matching groups. */
+    OFPGC_DELETE = 2,       /* Delete all matching groups. */
 };
 
 /* Bucket for use in groups. */
@@ -1142,10 +1130,10 @@
 /* Group types.  Values in the range [128, 255] are reserved for experimental
  * use. */
 enum ofp_group_type {
-    OFPGT_ALL,      /* All (multicast/broadcast) group.  */
-    OFPGT_SELECT,   /* Select group. */
-    OFPGT_INDIRECT, /* Indirect group. */
-    OFPGT_FF        /* Fast failover group. */
+    OFPGT_ALL      = 0, /* All (multicast/broadcast) group.  */
+    OFPGT_SELECT   = 1, /* Select group. */
+    OFPGT_INDIRECT = 2, /* Indirect group. */
+    OFPGT_FF       = 3, /* Fast failover group. */
 };
 
 /* Special buffer-id to indicate 'no buffer' */
@@ -1168,9 +1156,9 @@
 
 /* Why is this packet being sent to the controller? */
 enum ofp_packet_in_reason {
-    OFPR_NO_MATCH,          /* No matching flow. */
-    OFPR_ACTION,            /* Action explicitly output to controller. */
-    OFPR_INVALID_TTL        /* Packet has invalid TTL */
+    OFPR_NO_MATCH    = 0,   /* No matching flow. */
+    OFPR_ACTION      = 1,   /* Action explicitly output to controller. */
+    OFPR_INVALID_TTL = 2,   /* Packet has invalid TTL */
 };
 
 /* Packet received on port (datapath -> controller). */
@@ -1194,10 +1182,10 @@
 
 /* Why was this flow removed? */
 enum ofp_flow_removed_reason {
-    OFPRR_IDLE_TIMEOUT,         /* Flow idle time exceeded idle_timeout. */
-    OFPRR_HARD_TIMEOUT,         /* Time exceeded hard_timeout. */
-    OFPRR_DELETE,               /* Evicted by a DELETE flow mod. */
-    OFPRR_GROUP_DELETE          /* Group was removed. */
+    OFPRR_IDLE_TIMEOUT = 0,     /* Flow idle time exceeded idle_timeout. */
+    OFPRR_HARD_TIMEOUT = 1,     /* Time exceeded hard_timeout. */
+    OFPRR_DELETE       = 2,     /* Evicted by a DELETE flow mod. */
+    OFPRR_GROUP_DELETE = 3,     /* Group was removed. */
 };
 
 /* Flow removed (datapath -> controller). */
@@ -1224,199 +1212,199 @@
  * will not change in future versions of the protocol (although new values may
  * be added). */
 enum ofp_error_type {
-    OFPET_HELLO_FAILED,         /* Hello protocol failed. */
-    OFPET_BAD_REQUEST,          /* Request was not understood. */
-    OFPET_BAD_ACTION,           /* Error in action description. */
-    OFPET_BAD_INSTRUCTION,      /* Error in instruction list. */
-    OFPET_BAD_MATCH,            /* Error in match. */
-    OFPET_FLOW_MOD_FAILED,      /* Problem modifying flow entry. */
-    OFPET_GROUP_MOD_FAILED,     /* Problem modifying group entry. */
-    OFPET_PORT_MOD_FAILED,      /* Port mod request failed. */
-    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. */
+    OFPET_HELLO_FAILED         = 0,  /* Hello protocol failed. */
+    OFPET_BAD_REQUEST          = 1,  /* Request was not understood. */
+    OFPET_BAD_ACTION           = 2,  /* Error in action description. */
+    OFPET_BAD_INSTRUCTION      = 3,  /* Error in instruction list. */
+    OFPET_BAD_MATCH            = 4,  /* Error in match. */
+    OFPET_FLOW_MOD_FAILED      = 5,  /* Problem modifying flow entry. */
+    OFPET_GROUP_MOD_FAILED     = 6,  /* Problem modifying group entry. */
+    OFPET_PORT_MOD_FAILED      = 7,  /* Port mod request failed. */
+    OFPET_TABLE_MOD_FAILED     = 8,  /* Table mod request failed. */
+    OFPET_QUEUE_OP_FAILED      = 9,  /* Queue operation failed. */
+    OFPET_SWITCH_CONFIG_FAILED = 10, /* Switch config request failed. */
+    OFPET_ROLE_REQUEST_FAILED  = 11, /* Controller Role request failed. */
+    OFPET_EXPERIMENTER = 0xffff      /* Experimenter error messages. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_HELLO_FAILED.  'data' contains an
  * ASCII text string that may give failure details. */
 enum ofp_hello_failed_code {
-    OFPHFC_INCOMPATIBLE,        /* No compatible version. */
-    OFPHFC_EPERM                /* Permissions error. */
+    OFPHFC_INCOMPATIBLE = 0,    /* No compatible version. */
+    OFPHFC_EPERM        = 1,    /* Permissions error. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_BAD_REQUEST.  'data' contains at least
  * the first 64 bytes of the failed request. */
 enum ofp_bad_request_code {
-    OFPBRC_BAD_VERSION,         /* ofp_header.version not supported. */
-    OFPBRC_BAD_TYPE,            /* ofp_header.type not supported. */
-    OFPBRC_BAD_STAT,            /* ofp_stats_request.type not supported. */
-    OFPBRC_BAD_EXPERIMENTER,    /* Experimenter id not supported
-                                 * (in ofp_experimenter_header
-                                 * or ofp_stats_request or ofp_stats_reply). */
-    OFPBRC_BAD_EXP_TYPE,        /* Experimenter type not supported. */
-    OFPBRC_EPERM,               /* Permissions error. */
-    OFPBRC_BAD_LEN,             /* Wrong request length for type. */
-    OFPBRC_BUFFER_EMPTY,        /* Specified buffer has already been used. */
-    OFPBRC_BUFFER_UNKNOWN,      /* Specified buffer does not exist. */
-    OFPBRC_BAD_TABLE_ID,        /* Specified table-id invalid or does not
-                                 * exist. */
-    OFPBRC_IS_SLAVE,            /* Denied because controller is slave. */
-    OFPBRC_BAD_PORT,            /* Invalid port. */
-    OFPBRC_BAD_PACKET,          /* Invalid packet in packet-out. */
+    OFPBRC_BAD_VERSION      = 0,  /* ofp_header.version not supported. */
+    OFPBRC_BAD_TYPE         = 1,  /* ofp_header.type not supported. */
+    OFPBRC_BAD_STAT         = 2,  /* ofp_stats_request.type not supported. */
+    OFPBRC_BAD_EXPERIMENTER = 3,  /* Experimenter id not supported
+                                   * (in ofp_experimenter_header or
+                                   * ofp_stats_request or ofp_stats_reply). */
+    OFPBRC_BAD_EXP_TYPE     = 4,  /* Experimenter type not supported. */
+    OFPBRC_EPERM            = 5,  /* Permissions error. */
+    OFPBRC_BAD_LEN          = 6,  /* Wrong request length for type. */
+    OFPBRC_BUFFER_EMPTY     = 7,  /* Specified buffer has already been used. */
+    OFPBRC_BUFFER_UNKNOWN   = 8,  /* Specified buffer does not exist. */
+    OFPBRC_BAD_TABLE_ID     = 9,  /* Specified table-id invalid or does not
+                                   * exist. */
+    OFPBRC_IS_SLAVE         = 10, /* Denied because controller is slave. */
+    OFPBRC_BAD_PORT         = 11, /* Invalid port. */
+    OFPBRC_BAD_PACKET       = 12, /* Invalid packet in packet-out. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_BAD_ACTION.  'data' contains at least
  * the first 64 bytes of the failed request. */
 enum ofp_bad_action_code {
-    OFPBAC_BAD_TYPE,           /* Unknown action type. */
-    OFPBAC_BAD_LEN,            /* Length problem in actions. */
-    OFPBAC_BAD_EXPERIMENTER,   /* Unknown experimenter id specified. */
-    OFPBAC_BAD_EXP_TYPE,       /* Unknown action type for experimenter id. */
-    OFPBAC_BAD_OUT_PORT,       /* Problem validating output port. */
-    OFPBAC_BAD_ARGUMENT,       /* Bad action argument. */
-    OFPBAC_EPERM,              /* Permissions error. */
-    OFPBAC_TOO_MANY,           /* Can't handle this many actions. */
-    OFPBAC_BAD_QUEUE,          /* Problem validating output queue. */
-    OFPBAC_BAD_OUT_GROUP,      /* Invalid group id in forward action. */
-    OFPBAC_MATCH_INCONSISTENT, /* Action can't apply for this match,
-                                  or Set-Field missing prerequisite. */
-    OFPBAC_UNSUPPORTED_ORDER,  /* Action order is unsupported for the action
-                                  list in an Apply-Actions instruction */
-    OFPBAC_BAD_TAG,            /* Actions uses an unsupported
-                                  tag/encap. */
-    OFPBAC_BAD_SET_TYPE,       /* Unsupported type in OFPAT_SET_FIELD action. */
-    OFPBAC_BAD_SET_LEN,        /* Length problem in OFPAT_SET_FIELD action. */
-    OFPBAC_BAD_SET_ARGUMENT,   /* Bad argument in OFPAT_SET_FIELD action. */
+    OFPBAC_BAD_TYPE           = 0,  /* Unknown action type. */
+    OFPBAC_BAD_LEN            = 1,  /* Length problem in actions. */
+    OFPBAC_BAD_EXPERIMENTER   = 2,  /* Unknown experimenter id specified. */
+    OFPBAC_BAD_EXP_TYPE       = 3,  /* Unknown action for experimenter id. */
+    OFPBAC_BAD_OUT_PORT       = 4,  /* Problem validating output port. */
+    OFPBAC_BAD_ARGUMENT       = 5,  /* Bad action argument. */
+    OFPBAC_EPERM              = 6,  /* Permissions error. */
+    OFPBAC_TOO_MANY           = 7,  /* Can't handle this many actions. */
+    OFPBAC_BAD_QUEUE          = 8,  /* Problem validating output queue. */
+    OFPBAC_BAD_OUT_GROUP      = 9,  /* Invalid group id in forward action. */
+    OFPBAC_MATCH_INCONSISTENT = 10, /* Action can't apply for this match,
+                                       or Set-Field missing prerequisite. */
+    OFPBAC_UNSUPPORTED_ORDER  = 11, /* Action order is unsupported for the
+                                 action list in an Apply-Actions instruction */
+    OFPBAC_BAD_TAG            = 12, /* Actions uses an unsupported
+                                       tag/encap. */
+    OFPBAC_BAD_SET_TYPE       = 13, /* Unsupported type in SET_FIELD action. */
+    OFPBAC_BAD_SET_LEN        = 14, /* Length problem in SET_FIELD action. */
+    OFPBAC_BAD_SET_ARGUMENT   = 15, /* Bad argument in SET_FIELD action. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION.  'data' contains at least
  * the first 64 bytes of the failed request. */
 enum ofp_bad_instruction_code {
-    OFPBIC_UNKNOWN_INST,       /* Unknown instruction. */
-    OFPBIC_UNSUP_INST,         /* Switch or table does not support the
-                                  instruction. */
-    OFPBIC_BAD_TABLE_ID,       /* Invalid Table-ID specified. */
-    OFPBIC_UNSUP_METADATA,     /* Metadata value unsupported by datapath. */
-    OFPBIC_UNSUP_METADATA_MASK,/* Metadata mask value unsupported by
-                                  datapath. */
-    OFPBIC_BAD_EXPERIMENTER,   /* Unknown experimenter id specified. */
-    OFPBIC_BAD_EXP_TYPE,       /* Unknown instruction for experimenter id. */
-    OFPBIC_BAD_LEN,            /* Length problem in instructions. */
-    OFPBIC_EPERM,              /* Permissions error. */
+    OFPBIC_UNKNOWN_INST     = 0, /* Unknown instruction. */
+    OFPBIC_UNSUP_INST       = 1, /* Switch or table does not support the
+                                    instruction. */
+    OFPBIC_BAD_TABLE_ID     = 2, /* Invalid Table-ID specified. */
+    OFPBIC_UNSUP_METADATA   = 3, /* Metadata value unsupported by datapath. */
+    OFPBIC_UNSUP_METADATA_MASK = 4, /* Metadata mask value unsupported by
+                                       datapath. */
+    OFPBIC_BAD_EXPERIMENTER = 5, /* Unknown experimenter id specified. */
+    OFPBIC_BAD_EXP_TYPE     = 6, /* Unknown instruction for experimenter id. */
+    OFPBIC_BAD_LEN          = 7, /* Length problem in instructions. */
+    OFPBIC_EPERM            = 8, /* Permissions error. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_BAD_MATCH.  'data' contains at least
  * the first 64 bytes of the failed request. */
 enum ofp_bad_match_code {
-    OFPBMC_BAD_TYPE,            /* Unsupported match type specified by the
-                                   match */
-    OFPBMC_BAD_LEN,             /* Length problem in match. */
-    OFPBMC_BAD_TAG,             /* Match uses an unsupported tag/encap. */
-    OFPBMC_BAD_DL_ADDR_MASK,    /* Unsupported datalink addr mask - switch does
-                                   not support arbitrary datalink address
-                                   mask. */
-    OFPBMC_BAD_NW_ADDR_MASK,    /* Unsupported network addr mask - switch does
-                                   not support arbitrary network address
-                                   mask. */
-    OFPBMC_BAD_WILDCARDS,       /* Unsupported combination of fields masked
-                                   or omitted in the match. */
-    OFPBMC_BAD_FIELD,           /* Unsupported field type in the match. */
-    OFPBMC_BAD_VALUE,           /* Unsupported value in a match field. */
-    OFPBMC_BAD_MASK,            /* Unsupported mask specified in the match,
-                                   field is not dl-address or nw-address. */
-    OFPBMC_BAD_PREREQ,          /* A prerequisite was not met. */
-    OFPBMC_DUP_FIELD,           /* A field type was duplicated. */
-    OFPBMC_EPERM,               /* Permissions error. */
+    OFPBMC_BAD_TYPE         = 0,  /* Unsupported match type specified by the
+                                     match */
+    OFPBMC_BAD_LEN          = 1,  /* Length problem in match. */
+    OFPBMC_BAD_TAG          = 2,  /* Match uses an unsupported tag/encap. */
+    OFPBMC_BAD_DL_ADDR_MASK = 3,  /* Unsupported datalink addr mask - switch
+                                     does not support arbitrary datalink
+                                     address mask. */
+    OFPBMC_BAD_NW_ADDR_MASK = 4,  /* Unsupported network addr mask - switch
+                                     does not support arbitrary network
+                                     address mask. */
+    OFPBMC_BAD_WILDCARDS    = 5,  /* Unsupported combination of fields masked
+                                     or omitted in the match. */
+    OFPBMC_BAD_FIELD        = 6,  /* Unsupported field type in the match. */
+    OFPBMC_BAD_VALUE        = 7,  /* Unsupported value in a match field. */
+    OFPBMC_BAD_MASK         = 8,  /* Unsupported mask specified in the match,
+                                     field is not dl-address or nw-address. */
+    OFPBMC_BAD_PREREQ       = 9,  /* A prerequisite was not met. */
+    OFPBMC_DUP_FIELD        = 10, /* A field type was duplicated. */
+    OFPBMC_EPERM            = 11, /* Permissions error. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED.  'data' contains
  * at least the first 64 bytes of the failed request. */
 enum ofp_flow_mod_failed_code {
-    OFPFMFC_UNKNOWN,            /* Unspecified error. */
-    OFPFMFC_TABLE_FULL,         /* Flow not added because table was full. */
-    OFPFMFC_BAD_TABLE_ID,       /* Table does not exist */
-    OFPFMFC_OVERLAP,            /* Attempted to add overlapping flow with
+    OFPFMFC_UNKNOWN      = 0,   /* Unspecified error. */
+    OFPFMFC_TABLE_FULL   = 1,   /* Flow not added because table was full. */
+    OFPFMFC_BAD_TABLE_ID = 2,   /* Table does not exist */
+    OFPFMFC_OVERLAP      = 3,   /* Attempted to add overlapping flow with
                                    CHECK_OVERLAP flag set. */
-    OFPFMFC_EPERM,              /* Permissions error. */
-    OFPFMFC_BAD_TIMEOUT,        /* Flow not added because of unsupported
+    OFPFMFC_EPERM        = 4,   /* Permissions error. */
+    OFPFMFC_BAD_TIMEOUT  = 5,   /* Flow not added because of unsupported
                                    idle/hard timeout. */
-    OFPFMFC_BAD_COMMAND,        /* Unsupported or unknown command. */
-    OFPFMFC_BAD_FLAGS,          /* Unsupported or unknown flags. */
+    OFPFMFC_BAD_COMMAND  = 6,   /* Unsupported or unknown command. */
+    OFPFMFC_BAD_FLAGS    = 7,   /* Unsupported or unknown flags. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED.  'data' contains
  * at least the first 64 bytes of the failed request. */
 enum ofp_group_mod_failed_code {
-    OFPGMFC_GROUP_EXISTS,             /* Group not added because a group ADD
-                                       * attempted to replace an
-                                       * already-present group. */
-    OFPGMFC_INVALID_GROUP,            /* Group not added because Group specified
-                                       * is invalid. */
-    OFPGMFC_WEIGHT_UNSUPPORTED,       /* Switch does not support unequal load
-                                       * sharing with select groups. */
-    OFPGMFC_OUT_OF_GROUPS,            /* The group table is full. */
-    OFPGMFC_OUT_OF_BUCKETS,           /* The maximum number of action buckets
-                                       * for a group has been exceeded. */
-    OFPGMFC_CHAINING_UNSUPPORTED,     /* Switch does not support groups that
-                                       * forward to groups. */
-    OFPGMFC_WATCH_UNSUPPORTED,        /* This group cannot watch the
-                                         watch_port or watch_group specified. */
-    OFPGMFC_LOOP,                     /* Group entry would cause a loop. */
-    OFPGMFC_UNKNOWN_GROUP,            /* Group not modified because a group
-                                         MODIFY attempted to modify a
-                                         non-existent group. */
-    OFPGMFC_CHAINED_GROUP,            /* Group not deleted because another
-                                         group is forwarding to it. */
-    OFPGMFC_BAD_TYPE,                 /* Unsupported or unknown group type. */
-    OFPGMFC_BAD_COMMAND,              /* Unsupported or unknown command. */
-    OFPGMFC_BAD_BUCKET,               /* Error in bucket. */
-    OFPGMFC_BAD_WATCH,                /* Error in watch port/group. */
-    OFPGMFC_EPERM,                    /* Permissions error. */
+    OFPGMFC_GROUP_EXISTS         = 0,  /* Group not added because a group ADD
+                                          attempted to replace an
+                                          already-present group. */
+    OFPGMFC_INVALID_GROUP        = 1,  /* Group not added because Group
+                                          specified is invalid. */
+    OFPGMFC_WEIGHT_UNSUPPORTED   = 2,  /* Switch does not support unequal load
+                                          sharing with select groups. */
+    OFPGMFC_OUT_OF_GROUPS        = 3,  /* The group table is full. */
+    OFPGMFC_OUT_OF_BUCKETS       = 4,  /* The maximum number of action buckets
+                                          for a group has been exceeded. */
+    OFPGMFC_CHAINING_UNSUPPORTED = 5,  /* Switch does not support groups that
+                                          forward to groups. */
+    OFPGMFC_WATCH_UNSUPPORTED    = 6,  /* This group cannot watch the watch_port
+                                          or watch_group specified. */
+    OFPGMFC_LOOP                 = 7,  /* Group entry would cause a loop. */
+    OFPGMFC_UNKNOWN_GROUP        = 8,  /* Group not modified because a group
+                                          MODIFY attempted to modify a
+                                          non-existent group. */
+    OFPGMFC_CHAINED_GROUP        = 9,  /* Group not deleted because another
+                                          group is forwarding to it. */
+    OFPGMFC_BAD_TYPE             = 10, /* Unsupported or unknown group type. */
+    OFPGMFC_BAD_COMMAND          = 11, /* Unsupported or unknown command. */
+    OFPGMFC_BAD_BUCKET           = 12, /* Error in bucket. */
+    OFPGMFC_BAD_WATCH            = 13, /* Error in watch port/group. */
+    OFPGMFC_EPERM                = 14, /* Permissions error. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED.  'data' contains
  * at least the first 64 bytes of the failed request. */
 enum ofp_port_mod_failed_code {
-    OFPPMFC_BAD_PORT,            /* Specified port number does not exist. */
-    OFPPMFC_BAD_HW_ADDR,         /* Specified hardware address does not
+    OFPPMFC_BAD_PORT      = 0,   /* Specified port number does not exist. */
+    OFPPMFC_BAD_HW_ADDR   = 1,   /* Specified hardware address does not
                                   * match the port number. */
-    OFPPMFC_BAD_CONFIG,          /* Specified config is invalid. */
-    OFPPMFC_BAD_ADVERTISE,       /* Specified advertise is invalid. */
-    OFPPMFC_EPERM,               /* Permissions error. */
+    OFPPMFC_BAD_CONFIG    = 2,   /* Specified config is invalid. */
+    OFPPMFC_BAD_ADVERTISE = 3,   /* Specified advertise is invalid. */
+    OFPPMFC_EPERM         = 4,   /* Permissions error. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED.  'data' contains
  * at least the first 64 bytes of the failed request. */
 enum ofp_table_mod_failed_code {
-    OFPTMFC_BAD_TABLE,           /* Specified table does not exist. */
-    OFPTMFC_BAD_CONFIG,          /* Specified config is invalid. */
-    OFPTMFC_EPERM,               /* Permissions error. */
+    OFPTMFC_BAD_TABLE  = 0,      /* Specified table does not exist. */
+    OFPTMFC_BAD_CONFIG = 1,      /* Specified config is invalid. */
+    OFPTMFC_EPERM      = 2,      /* Permissions error. */
 };
 
 /* ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
  * at least the first 64 bytes of the failed request */
 enum ofp_queue_op_failed_code {
-    OFPQOFC_BAD_PORT,           /* Invalid port (or port does not exist). */
-    OFPQOFC_BAD_QUEUE,          /* Queue does not exist. */
-    OFPQOFC_EPERM,              /* Permissions error. */
+    OFPQOFC_BAD_PORT   = 0,     /* Invalid port (or port does not exist). */
+    OFPQOFC_BAD_QUEUE  = 1,     /* Queue does not exist. */
+    OFPQOFC_EPERM      = 2,     /* Permissions error. */
 };
 
 /* ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
  * at least the first 64 bytes of the failed request. */
 enum ofp_switch_config_failed_code {
-    OFPSCFC_BAD_FLAGS,           /* Specified flags is invalid. */
-    OFPSCFC_BAD_LEN,             /* Specified len is invalid. */
-    OFPQCFC_EPERM,               /* Permissions error. */
+    OFPSCFC_BAD_FLAGS  = 0,      /* Specified flags is invalid. */
+    OFPSCFC_BAD_LEN    = 1,      /* Specified len is invalid. */
+    OFPQCFC_EPERM      = 2,      /* Permissions error. */
 };
 
 /* 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. */
-    OFPRRFC_UNSUP,               /* Controller role change unsupported. */
-    OFPRRFC_BAD_ROLE,            /* Invalid role. */
+    OFPRRFC_STALE      = 0,      /* Stale Message: old generation_id. */
+    OFPRRFC_UNSUP      = 1,      /* Controller role change unsupported. */
+    OFPRRFC_BAD_ROLE   = 2,      /* Invalid role. */
 };
 
 /* OFPT_ERROR: Error message (datapath -> controller). */
@@ -1447,47 +1435,47 @@
     /* Description of this OpenFlow switch.
      * The request body is empty.
      * The reply body is struct ofp_desc_stats. */
-    OFPST_DESC,
+    OFPST_DESC = 0,
 
     /* Individual flow statistics.
      * The request body is struct ofp_flow_stats_request.
      * The reply body is an array of struct ofp_flow_stats. */
-    OFPST_FLOW,
+    OFPST_FLOW = 1,
 
     /* Aggregate flow statistics.
      * The request body is struct ofp_aggregate_stats_request.
      * The reply body is struct ofp_aggregate_stats_reply. */
-    OFPST_AGGREGATE,
+    OFPST_AGGREGATE = 2,
 
     /* Flow table statistics.
      * The request body is empty.
      * The reply body is an array of struct ofp_table_stats. */
-    OFPST_TABLE,
+    OFPST_TABLE = 3,
 
     /* Port statistics.
      * The request body is struct ofp_port_stats_request.
      * The reply body is an array of struct ofp_port_stats. */
-    OFPST_PORT,
+    OFPST_PORT = 4,
 
     /* Queue statistics for a port
      * The request body is struct ofp_queue_stats_request.
      * The reply body is an array of struct ofp_queue_stats */
-    OFPST_QUEUE,
+    OFPST_QUEUE = 5,
 
     /* Group counter statistics.
      * The request body is struct ofp_group_stats_request.
      * The reply is an array of struct ofp_group_stats. */
-    OFPST_GROUP,
+    OFPST_GROUP = 6,
 
     /* Group description statistics.
      * The request body is empty.
      * The reply body is an array of struct ofp_group_desc_stats. */
-    OFPST_GROUP_DESC,
+    OFPST_GROUP_DESC = 7,
 
     /* Group features.
      * The request body is empty.
      * The reply body is struct ofp_group_features_stats. */
-    OFPST_GROUP_FEATURES,
+    OFPST_GROUP_FEATURES = 8,
 
     /* Experimenter extension.
      * The request and reply bodies begin with
@@ -1752,9 +1740,9 @@
 #define OFPQ_MAX_RATE_UNCFG      0xffff
 
 enum ofp_queue_properties {
-    OFPQT_MIN_RATE = 1,   /* Minimum datarate guaranteed. */
-    OFPQT_MAX_RATE,       /* Maximum datarate. */
-    OFPQT_EXPERIMENTER    = 0xffff    /* Experimenter defined property. */
+    OFPQT_MIN_RATE      = 1,      /* Minimum datarate guaranteed. */
+    OFPQT_MAX_RATE      = 2,      /* Maximum datarate. */
+    OFPQT_EXPERIMENTER  = 0xffff  /* Experimenter defined property. */
 };
 
 /* Common description for a queue. */
@@ -1867,10 +1855,10 @@
 
 /* Controller roles. */
 enum ofp_controller_role {
-    OFPCR_ROLE_NOCHANGE,        /* Don't change current role. */
-    OFPCR_ROLE_EQUAL,           /* Default role, full access. */
-    OFPCR_ROLE_MASTER,          /* Full access, at most one master. */
-    OFPCR_ROLE_SLAVE            /* Read-only access. */
+    OFPCR_ROLE_NOCHANGE = 0,    /* Don't change current role. */
+    OFPCR_ROLE_EQUAL    = 1,    /* Default role, full access. */
+    OFPCR_ROLE_MASTER   = 2,    /* Full access, at most one master. */
+    OFPCR_ROLE_SLAVE    = 3,    /* Read-only access. */
 };
 
 /* Role request and reply message. */
