openflow_input: add type values
diff --git a/openflow_input/bsn_get_interfaces b/openflow_input/bsn_get_interfaces
index d2105a2..ba1508c 100644
--- a/openflow_input/bsn_get_interfaces
+++ b/openflow_input/bsn_get_interfaces
@@ -29,11 +29,11 @@
 
 struct of_bsn_get_interfaces_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_GET_INTERFACES_REQUEST
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 9;
 };
 
 struct of_bsn_interface {
@@ -46,10 +46,10 @@
 
 struct of_bsn_get_interfaces_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_GET_INTERFACES_REQUEST
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 10;
     list(of_bsn_interface_t) interfaces;
 };
diff --git a/openflow_input/bsn_ip_mask b/openflow_input/bsn_ip_mask
index c8b3bd8..b6d517b 100644
--- a/openflow_input/bsn_ip_mask
+++ b/openflow_input/bsn_ip_mask
@@ -29,11 +29,11 @@
 
 struct of_bsn_set_ip_mask {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;  // bsn 0x005c16c7,
-    uint32_t subtype;       // 0
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 0;
     uint8_t index;
     pad(3);
     uint32_t mask;
@@ -41,22 +41,22 @@
 
 struct of_bsn_get_ip_mask_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;  // bsn 0x005c16c7,
-    uint32_t subtype;       // 1
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 1;
     uint8_t index;
     pad(7);
 };
 
 struct of_bsn_get_ip_mask_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;  // bsn 0x005c16c7,
-    uint32_t subtype;       // 2
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 2;
     uint8_t index;
     pad(3);
     uint32_t mask;
diff --git a/openflow_input/bsn_mirror b/openflow_input/bsn_mirror
index 02ea8ec..cc9e4c3 100644
--- a/openflow_input/bsn_mirror
+++ b/openflow_input/bsn_mirror
@@ -29,10 +29,10 @@
 
 // BSN mirror action
 struct of_action_bsn_mirror {
-    uint16_t type;      // OF_ACTION_TYPE_EXPERIMENTER
+    uint16_t type == 65535;
     uint16_t len;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN 
-    uint32_t subtype;   // ACTION_BSN_MIRROR 
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 1;
     uint32_t dest_port; // mirror destination port
     uint32_t vlan_tag;  // VLAN tag for mirrored packet (TPID+TCI) (0 == none)
     uint8_t copy_stage; // 0 == ingress, 1 == egress 
@@ -42,33 +42,33 @@
 // BSN mirroring messages
 struct of_bsn_set_mirroring {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_MIRRORING_SET
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 3;
     uint8_t report_mirror_ports;
     pad(3);
 };
 
 struct of_bsn_get_mirroring_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_MIRRORING_GET_REQUEST
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 4;
     uint8_t report_mirror_ports;
     pad(3);
 };
 
 struct of_bsn_get_mirroring_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_MIRRORING_GET_REPLY
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 5;
     uint8_t report_mirror_ports;
     pad(3);
 };
diff --git a/openflow_input/bsn_pktin_suppression b/openflow_input/bsn_pktin_suppression
index 7bc32b2..4dcf71d 100644
--- a/openflow_input/bsn_pktin_suppression
+++ b/openflow_input/bsn_pktin_suppression
@@ -57,11 +57,11 @@
 
 struct of_bsn_set_pktin_suppression {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;         // 11
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 11;
     uint8_t enabled;
     pad(1);
     uint16_t idle_timeout;
diff --git a/openflow_input/bsn_set_tunnel_dst b/openflow_input/bsn_set_tunnel_dst
index 79e57b3..74757f6 100644
--- a/openflow_input/bsn_set_tunnel_dst
+++ b/openflow_input/bsn_set_tunnel_dst
@@ -29,9 +29,9 @@
 
 // BSN set tunnel destination IP action
 struct of_action_bsn_set_tunnel_dst {
-    uint16_t type;      // OF_ACTION_TYPE_EXPERIMENTER
+    uint16_t type == 65535;
     uint16_t len;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN 
-    uint32_t subtype;   // ACTION_BSN_SET_TUNNEL_DST
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 2;
     uint32_t dst; // tunnel destination IP
 };
diff --git a/openflow_input/bsn_shell b/openflow_input/bsn_shell
index a65905d..805b7e9 100644
--- a/openflow_input/bsn_shell
+++ b/openflow_input/bsn_shell
@@ -29,31 +29,31 @@
 
 struct of_bsn_shell_command {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_SHELL_COMMAND
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 6;
     uint32_t service;
     of_octets_t data;
 };
 
 struct of_bsn_shell_output {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_SHELL_OUTPUT
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 7;
     of_octets_t data;
 };
 
 struct of_bsn_shell_status {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN
-    uint32_t subtype;   // BSN_SHELL_STATUS
+    uint32_t experimenter == 0x5c16c7;
+    uint32_t subtype == 8;
     uint32_t status;
 };
diff --git a/openflow_input/bsn_table_mod b/openflow_input/bsn_table_mod
index fe2dd73..cc5e723 100644
--- a/openflow_input/bsn_table_mod
+++ b/openflow_input/bsn_table_mod
@@ -31,7 +31,7 @@
 // for use inside components
 struct of_table_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 22;
     uint16_t length;
     uint32_t xid;
     uint8_t table_id;
diff --git a/openflow_input/nicira_dec_ttl b/openflow_input/nicira_dec_ttl
index 33a80a6..77649af 100644
--- a/openflow_input/nicira_dec_ttl
+++ b/openflow_input/nicira_dec_ttl
@@ -28,10 +28,10 @@
 #version any
 
 struct of_action_nicira_dec_ttl {
-    uint16_t type;      // OF_ACTION_TYPE_EXPERIMENTER
+    uint16_t type == 65535;
     uint16_t len;
-    uint32_t experimenter;    // OF_EXPERIMENTER_ID_NICIRA
-    uint16_t subtype;         // 18
+    uint32_t experimenter == 0x2320;
+    uint16_t subtype == 18;
     pad(2);
     pad(4);
 };
diff --git a/openflow_input/nicira_role b/openflow_input/nicira_role
index fdb37f0..5747d45 100644
--- a/openflow_input/nicira_role
+++ b/openflow_input/nicira_role
@@ -35,20 +35,20 @@
 
 struct of_nicira_controller_role_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter; // OF_EXPERIMENTER_ID_NICIRA 0x00002320
-    uint32_t subtype;      // 10
+    uint32_t experimenter == 0x2320;
+    uint32_t subtype == 10;
     uint32_t role;         // 0 other, 1 master, 2 slave
 };
 
 struct of_nicira_controller_role_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
-    uint32_t experimenter; // OF_EXPERIMENTER_ID_NICIRA 0x00002320
-    uint32_t subtype;      // 11
+    uint32_t experimenter == 0x2320;
+    uint32_t subtype == 11;
     uint32_t role;         // 0 other, 1 master, 2 slave
 };
diff --git a/openflow_input/oxm-1.2 b/openflow_input/oxm-1.2
index a28d88b..b18c6fb 100644
--- a/openflow_input/oxm-1.2
+++ b/openflow_input/oxm-1.2
@@ -39,397 +39,397 @@
 
 
 struct of_oxm_arp_op {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002a02;
     uint16_t value;
 };
 
 struct of_oxm_arp_op_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002b04;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_arp_sha {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003006;
     of_mac_addr_t value;
 };
 
 struct of_oxm_arp_sha_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x8000310c;
     of_mac_addr_t value;
     of_mac_addr_t value_mask;
 };
 
 struct of_oxm_arp_spa {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002c04;
     uint32_t value;
 };
 
 struct of_oxm_arp_spa_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002d08;
     uint32_t value;
     uint32_t value_mask;
 };
 
 struct of_oxm_arp_tha {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003206;
     of_mac_addr_t value;
 };
 
 struct of_oxm_arp_tha_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x8000330c;
     of_mac_addr_t value;
     of_mac_addr_t value_mask;
 };
 
 struct of_oxm_arp_tpa {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002e04;
     uint32_t value;
 };
 
 struct of_oxm_arp_tpa_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002f08;
     uint32_t value;
     uint32_t value_mask;
 };
 
 struct of_oxm_eth_dst {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000606;
     of_mac_addr_t value;
 };
 
 struct of_oxm_eth_dst_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x8000070c;
     of_mac_addr_t value;
     of_mac_addr_t value_mask;
 };
 
 struct of_oxm_eth_src {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000806;
     of_mac_addr_t value;
 };
 
 struct of_oxm_eth_src_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x8000090c;
     of_mac_addr_t value;
     of_mac_addr_t value_mask;
 };
 
 struct of_oxm_eth_type {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000a02;
     uint16_t value;
 };
 
 struct of_oxm_eth_type_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000b04;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_icmpv4_code {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002801;
     uint8_t value;
 };
 
 struct of_oxm_icmpv4_code_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002902;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_icmpv4_type {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002601;
     uint8_t value;
 };
 
 struct of_oxm_icmpv4_type_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002702;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_icmpv6_code {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003c01;
     uint8_t value;
 };
 
 struct of_oxm_icmpv6_code_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003d02;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_icmpv6_type {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003a01;
     uint8_t value;
 };
 
 struct of_oxm_icmpv6_type_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003b02;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_in_phy_port {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000204;
     of_port_no_t value;
 };
 
 struct of_oxm_in_phy_port_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000308;
     of_port_no_t value;
     of_port_no_t value_mask;
 };
 
 struct of_oxm_in_port {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000004;
     of_port_no_t value;
 };
 
 struct of_oxm_in_port_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000108;
     of_port_no_t value;
     of_port_no_t value_mask;
 };
 
 struct of_oxm_ip_dscp {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001001;
     uint8_t value;
 };
 
 struct of_oxm_ip_dscp_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001102;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_ip_ecn {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001201;
     uint8_t value;
 };
 
 struct of_oxm_ip_ecn_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001302;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_ip_proto {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001401;
     uint8_t value;
 };
 
 struct of_oxm_ip_proto_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001502;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_ipv4_dst {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001804;
     uint32_t value;
 };
 
 struct of_oxm_ipv4_dst_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001908;
     uint32_t value;
     uint32_t value_mask;
 };
 
 struct of_oxm_ipv4_src {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001604;
     uint32_t value;
 };
 
 struct of_oxm_ipv4_src_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001708;
     uint32_t value;
     uint32_t value_mask;
 };
 
 struct of_oxm_ipv6_dst {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003610;
     of_ipv6_t value;
 };
 
 struct of_oxm_ipv6_dst_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003720;
     of_ipv6_t value;
     of_ipv6_t value_mask;
 };
 
 struct of_oxm_ipv6_flabel {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003804;
     uint32_t value;
 };
 
 struct of_oxm_ipv6_flabel_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003908;
     uint32_t value;
     uint32_t value_mask;
 };
 
 struct of_oxm_ipv6_nd_sll {
-    uint32_t type_len;
+    uint32_t type_len == 0x80004006;
     of_mac_addr_t value;
 };
 
 struct of_oxm_ipv6_nd_sll_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x8000410c;
     of_mac_addr_t value;
     of_mac_addr_t value_mask;
 };
 
 struct of_oxm_ipv6_nd_target {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003e10;
     of_ipv6_t value;
 };
 
 struct of_oxm_ipv6_nd_target_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003f20;
     of_ipv6_t value;
     of_ipv6_t value_mask;
 };
 
 struct of_oxm_ipv6_nd_tll {
-    uint32_t type_len;
+    uint32_t type_len == 0x80004206;
     of_mac_addr_t value;
 };
 
 struct of_oxm_ipv6_nd_tll_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x8000430c;
     of_mac_addr_t value;
     of_mac_addr_t value_mask;
 };
 
 struct of_oxm_ipv6_src {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003410;
     of_ipv6_t value;
 };
 
 struct of_oxm_ipv6_src_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80003520;
     of_ipv6_t value;
     of_ipv6_t value_mask;
 };
 
 struct of_oxm_metadata {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000408;
     uint64_t value;
 };
 
 struct of_oxm_metadata_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000510;
     uint64_t value;
     uint64_t value_mask;
 };
 
 struct of_oxm_mpls_label {
-    uint32_t type_len;
+    uint32_t type_len == 0x80004404;
     uint32_t value;
 };
 
 struct of_oxm_mpls_label_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80004508;
     uint32_t value;
     uint32_t value_mask;
 };
 
 struct of_oxm_mpls_tc {
-    uint32_t type_len;
+    uint32_t type_len == 0x80004601;
     uint8_t value;
 };
 
 struct of_oxm_mpls_tc_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80004702;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_sctp_dst {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002402;
     uint16_t value;
 };
 
 struct of_oxm_sctp_dst_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002504;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_sctp_src {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002202;
     uint16_t value;
 };
 
 struct of_oxm_sctp_src_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002304;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_tcp_dst {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001c02;
     uint16_t value;
 };
 
 struct of_oxm_tcp_dst_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001d04;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_tcp_src {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001a02;
     uint16_t value;
 };
 
 struct of_oxm_tcp_src_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001b04;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_udp_dst {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002002;
     uint16_t value;
 };
 
 struct of_oxm_udp_dst_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80002104;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_udp_src {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001e02;
     uint16_t value;
 };
 
 struct of_oxm_udp_src_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80001f04;
     uint16_t value;
     uint16_t value_mask;
 };
 
 struct of_oxm_vlan_pcp {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000e01;
     uint8_t value;
 };
 
 struct of_oxm_vlan_pcp_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000f02;
     uint8_t value;
     uint8_t value_mask;
 };
 
 struct of_oxm_vlan_vid {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000c02;
     uint16_t value;
 };
 
 struct of_oxm_vlan_vid_masked {
-    uint32_t type_len;
+    uint32_t type_len == 0x80000d04;
     uint16_t value;
     uint16_t value_mask;
 };
diff --git a/openflow_input/standard-1.0 b/openflow_input/standard-1.0
index c436655..5d4405c 100644
--- a/openflow_input/standard-1.0
+++ b/openflow_input/standard-1.0
@@ -305,14 +305,14 @@
 
 struct of_hello {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 0;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_echo_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 2;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -320,7 +320,7 @@
 
 struct of_echo_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 3;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -328,7 +328,7 @@
 
 struct of_experimenter {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
     uint32_t experimenter;
@@ -338,28 +338,28 @@
 
 struct of_barrier_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_barrier_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 7;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 8;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -368,7 +368,7 @@
 
 struct of_set_config {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 9;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -389,14 +389,14 @@
 
 struct of_features_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 5;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_features_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 6;
     uint16_t length;
     uint32_t xid;
     uint64_t datapath_id;
@@ -410,7 +410,7 @@
 
 struct of_port_status {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 12;
     uint16_t length;
     uint32_t xid;
     uint8_t reason;
@@ -420,7 +420,7 @@
 
 struct of_port_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 15;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port_no;
@@ -433,7 +433,7 @@
 
 struct of_packet_in {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 10;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -445,88 +445,88 @@
 };
 
 struct of_action_output {
-    uint16_t type;
+    uint16_t type == 0;
     uint16_t len;
     of_port_no_t port;
     uint16_t max_len;
 };
 
 struct of_action_set_vlan_vid {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     uint16_t vlan_vid;
     pad(2);
 };
 
 struct of_action_strip_vlan {
-    uint16_t type;
+    uint16_t type == 3;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_set_vlan_pcp {
-    uint16_t type;
+    uint16_t type == 2;
     uint16_t len;
     uint8_t vlan_pcp;
     pad(3);
 };
 
 struct of_action_set_dl_src {
-    uint16_t type;
+    uint16_t type == 4;
     uint16_t len;
     of_mac_addr_t dl_addr;
     pad(6);
 };
 
 struct of_action_set_dl_dst {
-    uint16_t type;
+    uint16_t type == 5;
     uint16_t len;
     of_mac_addr_t dl_addr;
     pad(6);
 };
 
 struct of_action_set_nw_src {
-    uint16_t type;
+    uint16_t type == 6;
     uint16_t len;
     uint32_t nw_addr;
 };
 
 struct of_action_set_nw_dst {
-    uint16_t type;
+    uint16_t type == 7;
     uint16_t len;
     uint32_t nw_addr;
 };
 
 struct of_action_set_tp_src {
-    uint16_t type;
+    uint16_t type == 9;
     uint16_t len;
     uint16_t tp_port;
     pad(2);
 };
 
 struct of_action_set_tp_dst {
-    uint16_t type;
+    uint16_t type == 10;
     uint16_t len;
     uint16_t tp_port;
     pad(2);
 };
 
 struct of_action_set_nw_tos {
-    uint16_t type;
+    uint16_t type == 8;
     uint16_t len;
     uint8_t nw_tos;
     pad(3);
 };
 
 struct of_action_experimenter {
-    uint16_t type;
+    uint16_t type == 65535;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
 struct of_action_enqueue {
-    uint16_t type;
+    uint16_t type == 11;
     uint16_t len;
     of_port_no_t port;
     pad(6);
@@ -541,7 +541,7 @@
 
 struct of_packet_out {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 13;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -571,12 +571,12 @@
 
 struct of_flow_add {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     of_match_t match;
     uint64_t cookie;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 0;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -588,12 +588,12 @@
 
 struct of_flow_modify {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     of_match_t match;
     uint64_t cookie;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 1;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -605,12 +605,12 @@
 
 struct of_flow_modify_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     of_match_t match;
     uint64_t cookie;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 2;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -622,12 +622,12 @@
 
 struct of_flow_delete {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     of_match_t match;
     uint64_t cookie;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 3;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -639,12 +639,12 @@
 
 struct of_flow_delete_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     of_match_t match;
     uint64_t cookie;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 4;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -656,7 +656,7 @@
 
 struct of_flow_removed {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 11;
     uint16_t length;
     uint32_t xid;
     of_match_t match;
@@ -674,7 +674,7 @@
 
 struct of_error_msg {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 1;
     uint16_t length;
     uint32_t xid;
     uint16_t err_type;
@@ -741,19 +741,19 @@
 
 struct of_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
 };
 
 struct of_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
     of_desc_str_t mfr_desc;
     of_desc_str_t hw_desc;
@@ -764,10 +764,10 @@
 
 struct of_flow_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     of_match_t match;
     uint8_t table_id;
@@ -777,20 +777,20 @@
 
 struct of_flow_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     list(of_flow_stats_entry_t) entries;
 };
 
 struct of_aggregate_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     of_match_t match;
     uint8_t table_id;
@@ -800,10 +800,10 @@
 
 struct of_aggregate_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     uint64_t packet_count;
     uint64_t byte_count;
@@ -813,29 +813,29 @@
 
 struct of_table_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
 };
 
 struct of_table_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
     list(of_table_stats_entry_t) entries;
 };
 
 struct of_port_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     of_port_no_t port_no;
     pad(6);
@@ -843,20 +843,20 @@
 
 struct of_port_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     list(of_port_stats_entry_t) entries;
 };
 
 struct of_queue_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     of_port_no_t port_no;
     pad(2);
@@ -865,20 +865,20 @@
 
 struct of_queue_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     list(of_queue_stats_entry_t) entries;
 };
 
 struct of_experimenter_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0xffff;
     uint16_t flags;
     uint32_t experimenter;
     of_octets_t data;
@@ -886,10 +886,10 @@
 
 struct of_experimenter_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0xffff;
     uint16_t flags;
     uint32_t experimenter;
     of_octets_t data;
@@ -904,7 +904,7 @@
 };
 
 struct of_queue_prop_min_rate {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     pad(4);
     uint16_t rate;
@@ -920,7 +920,7 @@
 
 struct of_queue_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 20;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
@@ -929,7 +929,7 @@
 
 struct of_queue_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 21;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
diff --git a/openflow_input/standard-1.1 b/openflow_input/standard-1.1
index 644f000..a477d55 100644
--- a/openflow_input/standard-1.1
+++ b/openflow_input/standard-1.1
@@ -416,14 +416,14 @@
 
 struct of_hello {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 0;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_echo_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 2;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -431,7 +431,7 @@
 
 struct of_echo_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 3;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -439,7 +439,7 @@
 
 struct of_experimenter {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
     uint32_t experimenter;
@@ -449,28 +449,28 @@
 
 struct of_barrier_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 20;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_barrier_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 21;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 7;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 8;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -479,7 +479,7 @@
 
 struct of_set_config {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 9;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -488,7 +488,7 @@
 
 struct of_table_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
     uint8_t table_id;
@@ -514,14 +514,14 @@
 
 struct of_features_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 5;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_features_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 6;
     uint16_t length;
     uint32_t xid;
     uint64_t datapath_id;
@@ -535,7 +535,7 @@
 
 struct of_port_status {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 12;
     uint16_t length;
     uint32_t xid;
     uint8_t reason;
@@ -545,7 +545,7 @@
 
 struct of_port_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port_no;
@@ -560,7 +560,7 @@
 
 struct of_packet_in {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 10;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -573,7 +573,7 @@
 };
 
 struct of_action_output {
-    uint16_t type;
+    uint16_t type == 0;
     uint16_t len;
     of_port_no_t port;
     uint16_t max_len;
@@ -581,165 +581,165 @@
 };
 
 struct of_action_set_vlan_vid {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     uint16_t vlan_vid;
     pad(2);
 };
 
 struct of_action_set_vlan_pcp {
-    uint16_t type;
+    uint16_t type == 2;
     uint16_t len;
     uint8_t vlan_pcp;
     pad(3);
 };
 
 struct of_action_set_dl_src {
-    uint16_t type;
+    uint16_t type == 3;
     uint16_t len;
     of_mac_addr_t dl_addr;
     pad(6);
 };
 
 struct of_action_set_dl_dst {
-    uint16_t type;
+    uint16_t type == 4;
     uint16_t len;
     of_mac_addr_t dl_addr;
     pad(6);
 };
 
 struct of_action_set_nw_src {
-    uint16_t type;
+    uint16_t type == 5;
     uint16_t len;
     uint32_t nw_addr;
 };
 
 struct of_action_set_nw_dst {
-    uint16_t type;
+    uint16_t type == 6;
     uint16_t len;
     uint32_t nw_addr;
 };
 
 struct of_action_set_nw_tos {
-    uint16_t type;
+    uint16_t type == 7;
     uint16_t len;
     uint8_t nw_tos;
     pad(3);
 };
 
 struct of_action_set_nw_ecn {
-    uint16_t type;
+    uint16_t type == 8;
     uint16_t len;
     uint8_t nw_ecn;
     pad(3);
 };
 
 struct of_action_set_tp_src {
-    uint16_t type;
+    uint16_t type == 9;
     uint16_t len;
     uint16_t tp_port;
     pad(2);
 };
 
 struct of_action_set_tp_dst {
-    uint16_t type;
+    uint16_t type == 10;
     uint16_t len;
     uint16_t tp_port;
     pad(2);
 };
 
 struct of_action_copy_ttl_out {
-    uint16_t type;
+    uint16_t type == 11;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_copy_ttl_in {
-    uint16_t type;
+    uint16_t type == 12;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_set_mpls_label {
-    uint16_t type;
+    uint16_t type == 13;
     uint16_t len;
     uint32_t mpls_label;
 };
 
 struct of_action_set_mpls_tc {
-    uint16_t type;
+    uint16_t type == 14;
     uint16_t len;
     uint8_t mpls_tc;
     pad(3);
 };
 
 struct of_action_set_mpls_ttl {
-    uint16_t type;
+    uint16_t type == 15;
     uint16_t len;
     uint8_t mpls_ttl;
     pad(3);
 };
 
 struct of_action_dec_mpls_ttl {
-    uint16_t type;
+    uint16_t type == 16;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_push_vlan {
-    uint16_t type;
+    uint16_t type == 17;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_pop_vlan {
-    uint16_t type;
+    uint16_t type == 18;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_push_mpls {
-    uint16_t type;
+    uint16_t type == 19;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_pop_mpls {
-    uint16_t type;
+    uint16_t type == 20;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_set_queue {
-    uint16_t type;
+    uint16_t type == 21;
     uint16_t len;
     uint32_t queue_id;
 };
 
 struct of_action_group {
-    uint16_t type;
+    uint16_t type == 22;
     uint16_t len;
     uint32_t group_id;
 };
 
 struct of_action_set_nw_ttl {
-    uint16_t type;
+    uint16_t type == 23;
     uint16_t len;
     uint8_t nw_ttl;
     pad(3);
 };
 
 struct of_action_dec_nw_ttl {
-    uint16_t type;
+    uint16_t type == 24;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_experimenter {
-    uint16_t type;
+    uint16_t type == 65535;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
@@ -753,7 +753,7 @@
 
 struct of_packet_out {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 13;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -765,7 +765,7 @@
 };
 
 struct of_match_v2 {
-    uint16_t type;
+    uint16_t type == 0;
     uint16_t length;
     of_port_no_t in_port;
     of_wc_bmap_t wildcards;
@@ -799,14 +799,14 @@
 };
 
 struct of_instruction_goto_table {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     uint8_t table_id;
     pad(3);
 };
 
 struct of_instruction_write_metadata {
-    uint16_t type;
+    uint16_t type == 2;
     uint16_t len;
     pad(4);
     uint64_t metadata;
@@ -814,27 +814,27 @@
 };
 
 struct of_instruction_write_actions {
-    uint16_t type;
+    uint16_t type == 3;
     uint16_t len;
     pad(4);
     list(of_action_t) actions;
 };
 
 struct of_instruction_apply_actions {
-    uint16_t type;
+    uint16_t type == 4;
     uint16_t len;
     pad(4);
     list(of_action_t) actions;
 };
 
 struct of_instruction_clear_actions {
-    uint16_t type;
+    uint16_t type == 5;
     uint16_t len;
     pad(4);
 };
 
 struct of_instruction_experimenter {
-    uint16_t type;		
+    uint16_t type == 65535;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
@@ -842,13 +842,13 @@
 
 struct of_flow_add {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 0;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -863,13 +863,13 @@
 
 struct of_flow_modify {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 1;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -884,13 +884,13 @@
 
 struct of_flow_modify_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 2;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -905,13 +905,13 @@
 
 struct of_flow_delete {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 3;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -926,13 +926,13 @@
 
 struct of_flow_delete_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 4;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -956,7 +956,7 @@
 
 struct of_group_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 15;
     uint16_t length;
     uint32_t xid;
     uint16_t command;
@@ -968,7 +968,7 @@
 
 struct of_flow_removed {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 11;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
@@ -986,7 +986,7 @@
 
 struct of_error_msg {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 1;
     uint16_t length;
     uint32_t xid;
     uint16_t err_type;
@@ -1082,20 +1082,20 @@
 
 struct of_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
     pad(4);
 };
 
 struct of_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
     pad(4);
     of_desc_str_t mfr_desc;
@@ -1107,10 +1107,10 @@
 
 struct of_flow_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     pad(4);
     uint8_t table_id;
@@ -1125,10 +1125,10 @@
 
 struct of_flow_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     pad(4);
     list(of_flow_stats_entry_t) entries;
@@ -1136,10 +1136,10 @@
 
 struct of_aggregate_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     pad(4);
     uint8_t table_id;
@@ -1154,10 +1154,10 @@
 
 struct of_aggregate_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     pad(4);
     uint64_t packet_count;
@@ -1168,20 +1168,20 @@
 
 struct of_table_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
     pad(4);
 };
 
 struct of_table_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
     pad(4);
     list(of_table_stats_entry_t) entries;
@@ -1189,10 +1189,10 @@
 
 struct of_port_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     pad(4);
     of_port_no_t port_no;
@@ -1201,10 +1201,10 @@
 
 struct of_port_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     pad(4);
     list(of_port_stats_entry_t) entries;
@@ -1212,10 +1212,10 @@
 
 struct of_queue_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     pad(4);
     of_port_no_t port_no;
@@ -1224,10 +1224,10 @@
 
 struct of_queue_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     pad(4);
     list(of_queue_stats_entry_t) entries;
@@ -1235,10 +1235,10 @@
 
 struct of_group_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 6;
     uint16_t flags;
     pad(4);
     uint32_t group_id;
@@ -1247,10 +1247,10 @@
 
 struct of_group_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 6;
     uint16_t flags;
     pad(4);
     list(of_group_stats_entry_t) entries;
@@ -1258,20 +1258,20 @@
 
 struct of_group_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 7;
     uint16_t flags;
     pad(4);
 };
 
 struct of_group_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 7;
     uint16_t flags;
     pad(4);
     list(of_group_desc_stats_entry_t) entries;
@@ -1279,10 +1279,10 @@
 
 struct of_experimenter_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0xffff;
     uint16_t flags;
     pad(4);
     uint32_t experimenter;
@@ -1292,10 +1292,10 @@
 
 struct of_experimenter_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0xffff;
     uint16_t flags;
     pad(4);
     uint32_t experimenter;
@@ -1312,7 +1312,7 @@
 };
 
 struct of_queue_prop_min_rate {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     pad(4);
     uint16_t rate;
@@ -1328,7 +1328,7 @@
 
 struct of_queue_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 22;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
@@ -1337,7 +1337,7 @@
 
 struct of_queue_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 23;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
diff --git a/openflow_input/standard-1.2 b/openflow_input/standard-1.2
index 0ada3da..50bb042 100644
--- a/openflow_input/standard-1.2
+++ b/openflow_input/standard-1.2
@@ -456,14 +456,14 @@
 
 struct of_hello {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 0;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_echo_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 2;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -471,7 +471,7 @@
 
 struct of_echo_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 3;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -479,7 +479,7 @@
 
 struct of_experimenter {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
     uint32_t experimenter;
@@ -489,28 +489,28 @@
 
 struct of_barrier_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 20;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_barrier_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 21;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 7;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 8;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -519,7 +519,7 @@
 
 struct of_set_config {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 9;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -528,7 +528,7 @@
 
 struct of_table_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
     uint8_t table_id;
@@ -554,14 +554,14 @@
 
 struct of_features_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 5;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_features_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 6;
     uint16_t length;
     uint32_t xid;
     uint64_t datapath_id;
@@ -575,7 +575,7 @@
 
 struct of_port_status {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 12;
     uint16_t length;
     uint32_t xid;
     uint8_t reason;
@@ -585,7 +585,7 @@
 
 struct of_port_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port_no;
@@ -599,7 +599,7 @@
 };
 
 struct of_match_v3 {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t length;
     list(of_oxm_t) oxm_list;
 };
@@ -611,7 +611,7 @@
 };
 
 struct of_action_output {
-    uint16_t type;
+    uint16_t type == 0;
     uint16_t len;
     of_port_no_t port;
     uint16_t max_len;
@@ -619,90 +619,90 @@
 };
 
 struct of_action_copy_ttl_out {
-    uint16_t type;
+    uint16_t type == 11;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_copy_ttl_in {
-    uint16_t type;
+    uint16_t type == 12;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_set_mpls_ttl {
-    uint16_t type;
+    uint16_t type == 15;
     uint16_t len;
     uint8_t mpls_ttl;
     pad(3);
 };
 
 struct of_action_dec_mpls_ttl {
-    uint16_t type;
+    uint16_t type == 16;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_push_vlan {
-    uint16_t type;
+    uint16_t type == 17;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_pop_vlan {
-    uint16_t type;
+    uint16_t type == 18;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_push_mpls {
-    uint16_t type;
+    uint16_t type == 19;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_pop_mpls {
-    uint16_t type;
+    uint16_t type == 20;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_set_queue {
-    uint16_t type;
+    uint16_t type == 21;
     uint16_t len;
     uint32_t queue_id;
 };
 
 struct of_action_group {
-    uint16_t type;
+    uint16_t type == 22;
     uint16_t len;
     uint32_t group_id;
 };
 
 struct of_action_set_nw_ttl {
-    uint16_t type;
+    uint16_t type == 23;
     uint16_t len;
     uint8_t nw_ttl;
     pad(3);
 };
 
 struct of_action_dec_nw_ttl {
-    uint16_t type;
+    uint16_t type == 24;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_set_field {
-    uint16_t type;
+    uint16_t type == 25;
     uint16_t len;
     of_octets_t field;
 };
 
 struct of_action_experimenter {
-    uint16_t type;
+    uint16_t type == 65535;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
@@ -721,14 +721,14 @@
 };
 
 struct of_instruction_goto_table {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     uint8_t table_id;
     pad(3);
 };
 
 struct of_instruction_write_metadata {
-    uint16_t type;
+    uint16_t type == 2;
     uint16_t len;
     pad(4);
     uint64_t metadata;
@@ -736,27 +736,27 @@
 };
 
 struct of_instruction_write_actions {
-    uint16_t type;
+    uint16_t type == 3;
     uint16_t len;
     pad(4);
     list(of_action_t) actions;
 };
 
 struct of_instruction_apply_actions {
-    uint16_t type;
+    uint16_t type == 4;
     uint16_t len;
     pad(4);
     list(of_action_t) actions;
 };
 
 struct of_instruction_clear_actions {
-    uint16_t type;
+    uint16_t type == 5;
     uint16_t len;
     pad(4);
 };
 
 struct of_instruction_experimenter {
-    uint16_t type;		
+    uint16_t type == 65535;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
@@ -764,13 +764,13 @@
 
 struct of_flow_add {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 0;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -785,13 +785,13 @@
 
 struct of_flow_modify {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 1;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -806,13 +806,13 @@
 
 struct of_flow_modify_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 2;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -827,13 +827,13 @@
 
 struct of_flow_delete {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 3;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -848,13 +848,13 @@
 
 struct of_flow_delete_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 4;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -878,7 +878,7 @@
 
 struct of_group_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 15;
     uint16_t length;
     uint32_t xid;
     uint16_t command;
@@ -890,7 +890,7 @@
 
 struct of_packet_out {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 13;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -903,7 +903,7 @@
 
 struct of_packet_in {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 10;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -917,7 +917,7 @@
 
 struct of_flow_removed {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 11;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
@@ -935,7 +935,7 @@
 
 struct of_error_msg {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 1;
     uint16_t length;
     uint32_t xid;
     uint16_t err_type;
@@ -1048,20 +1048,20 @@
 
 struct of_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
     pad(4);
 };
 
 struct of_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
     pad(4);
     of_desc_str_t mfr_desc;
@@ -1073,10 +1073,10 @@
 
 struct of_flow_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     pad(4);
     uint8_t table_id;
@@ -1091,10 +1091,10 @@
 
 struct of_flow_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     pad(4);
     list(of_flow_stats_entry_t) entries;
@@ -1102,10 +1102,10 @@
 
 struct of_aggregate_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     pad(4);
     uint8_t table_id;
@@ -1120,10 +1120,10 @@
 
 struct of_aggregate_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     pad(4);
     uint64_t packet_count;
@@ -1134,20 +1134,20 @@
 
 struct of_table_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
     pad(4);
 };
 
 struct of_table_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
     pad(4);
     list(of_table_stats_entry_t) entries;
@@ -1155,10 +1155,10 @@
 
 struct of_port_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     pad(4);
     of_port_no_t port_no;
@@ -1167,10 +1167,10 @@
 
 struct of_port_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     pad(4);
     list(of_port_stats_entry_t) entries;
@@ -1178,10 +1178,10 @@
 
 struct of_queue_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     pad(4);
     of_port_no_t port_no;
@@ -1190,10 +1190,10 @@
 
 struct of_queue_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     pad(4);
     list(of_queue_stats_entry_t) entries;
@@ -1201,10 +1201,10 @@
 
 struct of_group_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 6;
     uint16_t flags;
     pad(4);
     uint32_t group_id;
@@ -1213,10 +1213,10 @@
 
 struct of_group_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 6;
     uint16_t flags;
     pad(4);
     list(of_group_stats_entry_t) entries;
@@ -1224,20 +1224,20 @@
 
 struct of_group_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 7;
     uint16_t flags;
     pad(4);
 };
 
 struct of_group_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 7;
     uint16_t flags;
     pad(4);
     list(of_group_desc_stats_entry_t) entries;
@@ -1245,20 +1245,20 @@
 
 struct of_group_features_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 8;
     uint16_t flags;
     pad(4);
 };
 
 struct of_group_features_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 8;
     uint16_t flags;
     pad(4);
     uint32_t types;
@@ -1275,10 +1275,10 @@
 
 struct of_experimenter_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0xffff;
     uint16_t flags;
     pad(4);
     uint32_t experimenter;
@@ -1288,10 +1288,10 @@
 
 struct of_experimenter_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0xffff;
     uint16_t flags;
     pad(4);
     uint32_t experimenter;
@@ -1308,7 +1308,7 @@
 };
 
 struct of_queue_prop_min_rate {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     pad(4);
     uint16_t rate;
@@ -1316,7 +1316,7 @@
 };
 
 struct of_queue_prop_max_rate {
-    uint16_t type;
+    uint16_t type == 2;
     uint16_t len;
     pad(4);
     uint16_t rate;
@@ -1324,7 +1324,7 @@
 };
 
 struct of_queue_prop_experimenter {
-    uint16_t type;
+    uint16_t type == 65535;
     uint16_t len;
     pad(4);
     uint32_t experimenter;
@@ -1342,7 +1342,7 @@
 
 struct of_queue_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 22;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
@@ -1351,7 +1351,7 @@
 
 struct of_queue_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 23;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
@@ -1361,7 +1361,7 @@
 
 struct of_role_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 24;
     uint16_t length;
     uint32_t xid;
     uint32_t role;
@@ -1371,7 +1371,7 @@
 
 struct of_role_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 25;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
diff --git a/openflow_input/standard-1.3 b/openflow_input/standard-1.3
index c9410fa..bc6c524 100644
--- a/openflow_input/standard-1.3
+++ b/openflow_input/standard-1.3
@@ -571,14 +571,14 @@
 };
 
 struct of_hello_elem_versionbitmap {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t length;
     list(of_uint32_t) bitmaps;
 };
 
 struct of_hello {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 0;
     uint16_t length;
     uint32_t xid;
     list(of_hello_elem_t) elements;
@@ -586,7 +586,7 @@
 
 struct of_echo_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 2;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -594,7 +594,7 @@
 
 struct of_echo_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 3;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -602,7 +602,7 @@
 
 struct of_experimenter {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 4;
     uint16_t length;
     uint32_t xid;
     uint32_t experimenter;
@@ -612,28 +612,28 @@
 
 struct of_barrier_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 20;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_barrier_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 21;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 7;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 8;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -642,7 +642,7 @@
 
 struct of_set_config {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 9;
     uint16_t length;
     uint32_t xid;
     uint16_t flags;
@@ -651,7 +651,7 @@
 
 struct of_table_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 17;
     uint16_t length;
     uint32_t xid;
     uint8_t table_id;
@@ -677,14 +677,14 @@
 
 struct of_features_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 5;
     uint16_t length;
     uint32_t xid;
 };
 
 struct of_features_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 6;
     uint16_t length;
     uint32_t xid;
     uint64_t datapath_id;
@@ -698,7 +698,7 @@
 
 struct of_port_status {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 12;
     uint16_t length;
     uint32_t xid;
     uint8_t reason;
@@ -708,7 +708,7 @@
 
 struct of_port_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 16;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port_no;
@@ -723,7 +723,7 @@
 
 // FIXME Does this need to be v4?
 struct of_match_v3 {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t length;
     list(of_oxm_t) oxm_list;
 };
@@ -743,7 +743,7 @@
 };
 
 struct of_action_output {
-    uint16_t type;
+    uint16_t type == 0;
     uint16_t len;
     of_port_no_t port;
     uint16_t max_len;
@@ -751,103 +751,103 @@
 };
 
 struct of_action_copy_ttl_out {
-    uint16_t type;
+    uint16_t type == 11;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_copy_ttl_in {
-    uint16_t type;
+    uint16_t type == 12;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_set_mpls_ttl {
-    uint16_t type;
+    uint16_t type == 15;
     uint16_t len;
     uint8_t mpls_ttl;
     pad(3);
 };
 
 struct of_action_dec_mpls_ttl {
-    uint16_t type;
+    uint16_t type == 16;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_push_vlan {
-    uint16_t type;
+    uint16_t type == 17;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_pop_vlan {
-    uint16_t type;
+    uint16_t type == 18;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_push_mpls {
-    uint16_t type;
+    uint16_t type == 19;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_pop_mpls {
-    uint16_t type;
+    uint16_t type == 20;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
 };
 
 struct of_action_set_queue {
-    uint16_t type;
+    uint16_t type == 21;
     uint16_t len;
     uint32_t queue_id;
 };
 
 struct of_action_group {
-    uint16_t type;
+    uint16_t type == 22;
     uint16_t len;
     uint32_t group_id;
 };
 
 struct of_action_set_nw_ttl {
-    uint16_t type;
+    uint16_t type == 23;
     uint16_t len;
     uint8_t nw_ttl;
     pad(3);
 };
 
 struct of_action_dec_nw_ttl {
-    uint16_t type;
+    uint16_t type == 24;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_set_field {
-    uint16_t type;
+    uint16_t type == 25;
     uint16_t len;
     of_octets_t field;
 };
 
 struct of_action_experimenter {
-    uint16_t type;
+    uint16_t type == 65535;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
 struct of_action_pop_pbb {
-    uint16_t type;
+    uint16_t type == 27;
     uint16_t len;
     pad(4);
 };
 
 struct of_action_push_pbb {
-    uint16_t type;
+    uint16_t type == 26;
     uint16_t len;
     uint16_t ethertype;
     pad(2);
@@ -865,14 +865,14 @@
 };
 
 struct of_instruction_goto_table {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     uint8_t table_id;
     pad(3);
 };
 
 struct of_instruction_write_metadata {
-    uint16_t type;
+    uint16_t type == 2;
     uint16_t len;
     pad(4);
     uint64_t metadata;
@@ -880,33 +880,33 @@
 };
 
 struct of_instruction_write_actions {
-    uint16_t type;
+    uint16_t type == 3;
     uint16_t len;
     pad(4);
     list(of_action_t) actions;
 };
 
 struct of_instruction_apply_actions {
-    uint16_t type;
+    uint16_t type == 4;
     uint16_t len;
     pad(4);
     list(of_action_t) actions;
 };
 
 struct of_instruction_clear_actions {
-    uint16_t type;
+    uint16_t type == 5;
     uint16_t len;
     pad(4);
 };
 
 struct of_instruction_meter {
-    uint16_t type;
+    uint16_t type == 6;
     uint16_t len;
     uint32_t meter_id;
 };
 
 struct of_instruction_experimenter {
-    uint16_t type;		
+    uint16_t type == 65535;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
@@ -914,13 +914,13 @@
 
 struct of_flow_add {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 0;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -935,13 +935,13 @@
 
 struct of_flow_modify {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 1;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -956,13 +956,13 @@
 
 struct of_flow_modify_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 2;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -977,13 +977,13 @@
 
 struct of_flow_delete {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 3;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -998,13 +998,13 @@
 
 struct of_flow_delete_strict {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 14;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
     uint64_t cookie_mask;
     uint8_t table_id;
-    of_fm_cmd_t _command;
+    of_fm_cmd_t _command == 4;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
     uint16_t priority;
@@ -1028,7 +1028,7 @@
 
 struct of_group_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 15;
     uint16_t length;
     uint32_t xid;
     uint16_t command;
@@ -1040,7 +1040,7 @@
 
 struct of_packet_out {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 13;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -1053,7 +1053,7 @@
 
 struct of_packet_in {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 10;
     uint16_t length;
     uint32_t xid;
     uint32_t buffer_id;
@@ -1068,7 +1068,7 @@
 
 struct of_flow_removed {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 11;
     uint16_t length;
     uint32_t xid;
     uint64_t cookie;
@@ -1092,7 +1092,7 @@
 };
 
 struct of_meter_band_drop {
-    uint16_t        type;
+    uint16_t        type == 1;
     uint16_t        len;
     uint32_t        rate;
     uint32_t        burst_size;
@@ -1100,7 +1100,7 @@
 };
 
 struct of_meter_band_dscp_remark {
-    uint16_t        type;
+    uint16_t        type == 2;
     uint16_t        len;
     uint32_t        rate;
     uint32_t        burst_size;
@@ -1109,7 +1109,7 @@
 };
 
 struct of_meter_band_experimenter {
-    uint16_t        type;
+    uint16_t        type == 65535;
     uint16_t        len;
     uint32_t        rate;
     uint32_t        burst_size;
@@ -1118,7 +1118,7 @@
 
 struct of_meter_mod {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 29;
     uint16_t length;
     uint32_t xid;
     uint16_t command;
@@ -1129,7 +1129,7 @@
 
 struct of_error_msg {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 1;
     uint16_t length;
     uint32_t xid;
     uint16_t err_type;
@@ -1236,20 +1236,20 @@
 
 struct of_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
     pad(4);
 };
 
 struct of_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 0;
     uint16_t flags;
     pad(4);
     of_desc_str_t mfr_desc;
@@ -1261,10 +1261,10 @@
 
 struct of_flow_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     pad(4);
     uint8_t table_id;
@@ -1279,10 +1279,10 @@
 
 struct of_flow_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 1;
     uint16_t flags;
     pad(4);
     list(of_flow_stats_entry_t) entries;
@@ -1290,10 +1290,10 @@
 
 struct of_aggregate_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     pad(4);
     uint8_t table_id;
@@ -1308,10 +1308,10 @@
 
 struct of_aggregate_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 2;
     uint16_t flags;
     pad(4);
     uint64_t packet_count;
@@ -1322,20 +1322,20 @@
 
 struct of_table_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
     pad(4);
 };
 
 struct of_table_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 3;
     uint16_t flags;
     pad(4);
     list(of_table_stats_entry_t) entries;
@@ -1349,92 +1349,92 @@
 };
 
 struct of_table_feature_prop_instructions {
-    uint16_t         type;
+    uint16_t         type == 0;
     uint16_t         length;
     // FIXME Check if instruction_t is right for ids here
     list(of_instruction_t)   instruction_ids;
 };
 
 struct of_table_feature_prop_instructions_miss {
-    uint16_t         type;
+    uint16_t         type == 1;
     uint16_t         length;
     list(of_instruction_t)   instruction_ids;
 };
 
 struct of_table_feature_prop_next_tables {
-    uint16_t         type;
+    uint16_t         type == 2;
     uint16_t         length;
     list(of_uint8_t) next_table_ids;
 };
 
 struct of_table_feature_prop_next_tables_miss {
-    uint16_t         type;
+    uint16_t         type == 3;
     uint16_t         length;
     list(of_uint8_t) next_table_ids;
 };
 
 struct of_table_feature_prop_write_actions {
-    uint16_t         type;
+    uint16_t         type == 4;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
 struct of_table_feature_prop_write_actions_miss {
-    uint16_t         type;
+    uint16_t         type == 5;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
 struct of_table_feature_prop_apply_actions {
-    uint16_t         type;
+    uint16_t         type == 6;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
 struct of_table_feature_prop_apply_actions_miss {
-    uint16_t         type;
+    uint16_t         type == 7;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
 struct of_table_feature_prop_match {
-    uint16_t         type;
+    uint16_t         type == 8;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
 struct of_table_feature_prop_wildcards {
-    uint16_t         type;
+    uint16_t         type == 10;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
 struct of_table_feature_prop_write_setfield {
-    uint16_t         type;
+    uint16_t         type == 12;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
 struct of_table_feature_prop_write_setfield_miss {
-    uint16_t         type;
+    uint16_t         type == 13;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
 struct of_table_feature_prop_apply_setfield {
-    uint16_t         type;
+    uint16_t         type == 14;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
 struct of_table_feature_prop_apply_setfield_miss {
-    uint16_t         type;
+    uint16_t         type == 15;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
 struct of_table_feature_prop_experimenter {
-    uint16_t         type;
+    uint16_t         type == 65535;
     uint16_t         length;
     uint32_t         experimenter;
     uint32_t         subtype;
@@ -1473,10 +1473,10 @@
 
 struct of_port_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     pad(4);
     of_port_no_t port_no;
@@ -1485,10 +1485,10 @@
 
 struct of_port_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 4;
     uint16_t flags;
     pad(4);
     list(of_port_stats_entry_t) entries;
@@ -1496,10 +1496,10 @@
 
 struct of_queue_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     pad(4);
     of_port_no_t port_no;
@@ -1508,10 +1508,10 @@
 
 struct of_queue_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 5;
     uint16_t flags;
     pad(4);
     list(of_queue_stats_entry_t) entries;
@@ -1519,10 +1519,10 @@
 
 struct of_group_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 6;
     uint16_t flags;
     pad(4);
     uint32_t group_id;
@@ -1531,10 +1531,10 @@
 
 struct of_group_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 6;
     uint16_t flags;
     pad(4);
     list(of_group_stats_entry_t) entries;
@@ -1542,20 +1542,20 @@
 
 struct of_group_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 7;
     uint16_t flags;
     pad(4);
 };
 
 struct of_group_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 7;
     uint16_t flags;
     pad(4);
     list(of_group_desc_stats_entry_t) entries;
@@ -1563,20 +1563,20 @@
 
 struct of_group_features_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 8;
     uint16_t flags;
     pad(4);
 };
 
 struct of_group_features_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 8;
     uint16_t flags;
     pad(4);
     uint32_t types;
@@ -1593,10 +1593,10 @@
 
 struct of_meter_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 9;
     uint16_t flags;
     pad(4);
     uint32_t meter_id;
@@ -1605,10 +1605,10 @@
 
 struct of_meter_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 9;
     uint16_t flags;
     pad(4);
     list(of_meter_stats_t) entries;
@@ -1616,10 +1616,10 @@
 
 struct of_meter_config_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 10;
     uint16_t flags;
     pad(4);
     uint32_t meter_id;
@@ -1628,10 +1628,10 @@
 
 struct of_meter_config_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 10;
     uint16_t flags;
     pad(4);
     list(of_meter_band_t) entries;
@@ -1640,10 +1640,10 @@
 // FIXME stats added to get things working
 struct of_meter_features_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 11;
     uint16_t flags;
     pad(4);
 };
@@ -1651,10 +1651,10 @@
 // FIXME stats added to get things working
 struct of_meter_features_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 11;
     uint16_t flags;
     pad(4);
     of_meter_features_t features;
@@ -1663,10 +1663,10 @@
 // FIXME stats added to get things working
 struct of_table_features_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 12;
     uint16_t flags;
     pad(4);
     list(of_table_features_t) entries;
@@ -1675,10 +1675,10 @@
 // FIXME stats added to get things working
 struct of_table_features_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 12;
     uint16_t flags;
     pad(4);
     list(of_table_features_t) entries;
@@ -1687,10 +1687,10 @@
 // FIXME stats added to get things working
 struct of_port_desc_stats_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 18;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 13;
     uint16_t flags;
     pad(4);
 };
@@ -1698,10 +1698,10 @@
 // FIXME stats added to get things working
 struct of_port_desc_stats_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 19;
     uint16_t length;
     uint32_t xid;
-    uint16_t stats_type;
+    uint16_t stats_type == 13;
     uint16_t flags;
     pad(4);
     list(of_port_desc_t) entries;
@@ -1745,7 +1745,7 @@
 };
 
 struct of_queue_prop_min_rate {
-    uint16_t type;
+    uint16_t type == 1;
     uint16_t len;
     pad(4);
     uint16_t rate;
@@ -1753,7 +1753,7 @@
 };
 
 struct of_queue_prop_max_rate {
-    uint16_t type;
+    uint16_t type == 2;
     uint16_t len;
     pad(4);
     uint16_t rate;
@@ -1761,7 +1761,7 @@
 };
 
 struct of_queue_prop_experimenter {
-    uint16_t type;
+    uint16_t type == 65535;
     uint16_t len;
     pad(4);
     uint32_t experimenter;
@@ -1779,7 +1779,7 @@
 
 struct of_queue_get_config_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 22;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
@@ -1788,7 +1788,7 @@
 
 struct of_queue_get_config_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 23;
     uint16_t length;
     uint32_t xid;
     of_port_no_t port;
@@ -1798,7 +1798,7 @@
 
 struct of_role_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 24;
     uint16_t length;
     uint32_t xid;
     uint32_t role;
@@ -1808,7 +1808,7 @@
 
 struct of_role_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 25;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -1823,7 +1823,7 @@
 
 struct of_async_get_request {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 26;
     uint16_t length;
     uint32_t xid;
     uint32_t packet_in_mask_equal_master;
@@ -1836,7 +1836,7 @@
 
 struct of_async_get_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 27;
     uint16_t length;
     uint32_t xid;
     uint32_t packet_in_mask_equal_master;
@@ -1849,7 +1849,7 @@
 
 struct of_async_set {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 28;
     uint16_t length;
     uint32_t xid;
     uint32_t packet_in_mask_equal_master;