diff --git a/loxi_front_end/frontend.py b/loxi_front_end/frontend.py
index dabc4a4..fdcd286 100644
--- a/loxi_front_end/frontend.py
+++ b/loxi_front_end/frontend.py
@@ -45,7 +45,7 @@
     # Now for each structure, generate lists for each member
     for s in ast:
         if s[0] == 'struct':
-            name = s[1].replace("ofp_", "of_", 1)
+            name = s[1]
             members = [dict(m_type=x[0], name=x[1]) for x in s[2]]
             ofinput.classes[name] = members
             ofinput.ordered_classes.append(name)
diff --git a/openflow_input/bsn_get_interfaces b/openflow_input/bsn_get_interfaces
index 90060ee..f170d6f 100644
--- a/openflow_input/bsn_get_interfaces
+++ b/openflow_input/bsn_get_interfaces
@@ -27,7 +27,7 @@
 
 #version any
 
-struct ofp_bsn_get_interfaces_request {
+struct of_bsn_get_interfaces_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -36,7 +36,7 @@
     uint32_t subtype;   // BSN_GET_INTERFACES_REQUEST
 };
 
-struct ofp_bsn_interface {
+struct of_bsn_interface {
     of_mac_addr_t hw_addr;
     uint16_t pad;
     of_port_name_t name;
@@ -44,7 +44,7 @@
     uint32_t ipv4_netmask;
 };
 
-struct ofp_bsn_get_interfaces_reply {
+struct of_bsn_get_interfaces_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/bsn_ip_mask b/openflow_input/bsn_ip_mask
index 03f233b..f93c797 100644
--- a/openflow_input/bsn_ip_mask
+++ b/openflow_input/bsn_ip_mask
@@ -27,7 +27,7 @@
 
 #version 1
 
-struct ofp_bsn_set_ip_mask {
+struct of_bsn_set_ip_mask {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -39,7 +39,7 @@
     uint32_t mask;
 };
 
-struct ofp_bsn_get_ip_mask_request {
+struct of_bsn_get_ip_mask_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -50,7 +50,7 @@
     uint8_t[7] pad;
 };
 
-struct ofp_bsn_get_ip_mask_reply {
+struct of_bsn_get_ip_mask_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/bsn_l2_table b/openflow_input/bsn_l2_table
index 2a54b71..d5135d0 100644
--- a/openflow_input/bsn_l2_table
+++ b/openflow_input/bsn_l2_table
@@ -28,7 +28,7 @@
 #version 1
 
 // BSN L2 table configuration messages
-struct ofp_bsn_set_l2_table {
+struct of_bsn_set_l2_table {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -41,7 +41,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_bsn_get_l2_table_request {
+struct of_bsn_get_l2_table_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -50,7 +50,7 @@
     uint32_t subtype;   // BSN_L2_TABLE_GET_REQUEST
 };
 
-struct ofp_bsn_get_l2_table_reply {
+struct of_bsn_get_l2_table_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/bsn_mirror b/openflow_input/bsn_mirror
index c873595..2375b1c 100644
--- a/openflow_input/bsn_mirror
+++ b/openflow_input/bsn_mirror
@@ -28,7 +28,7 @@
 #version any
 
 // BSN mirror action
-struct ofp_action_bsn_mirror {
+struct of_action_bsn_mirror {
     uint16_t type;      // OF_ACTION_TYPE_EXPERIMENTER
     uint16_t len;
     uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN 
@@ -40,7 +40,7 @@
 };
 
 // BSN mirroring messages
-struct ofp_bsn_set_mirroring {
+struct of_bsn_set_mirroring {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -51,7 +51,7 @@
     uint8_t[3] pad;
 };
 
-struct ofp_bsn_get_mirroring_request {
+struct of_bsn_get_mirroring_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -62,7 +62,7 @@
     uint8_t[3] pad;
 };
 
-struct ofp_bsn_get_mirroring_reply {
+struct of_bsn_get_mirroring_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/bsn_pktin_suppression b/openflow_input/bsn_pktin_suppression
index fcfa4aa..faa1908 100644
--- a/openflow_input/bsn_pktin_suppression
+++ b/openflow_input/bsn_pktin_suppression
@@ -55,7 +55,7 @@
 // The switch should reject the message if both 'hard_timeout' and 'idle_timeout'
 // are zero, since the suppression flows would never expire.
 
-struct ofp_bsn_set_pktin_suppression {
+struct of_bsn_set_pktin_suppression {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/bsn_set_tunnel_dst b/openflow_input/bsn_set_tunnel_dst
index 6b16d96..79e57b3 100644
--- a/openflow_input/bsn_set_tunnel_dst
+++ b/openflow_input/bsn_set_tunnel_dst
@@ -28,7 +28,7 @@
 #version any
 
 // BSN set tunnel destination IP action
-struct ofp_action_bsn_set_tunnel_dst {
+struct of_action_bsn_set_tunnel_dst {
     uint16_t type;      // OF_ACTION_TYPE_EXPERIMENTER
     uint16_t len;
     uint32_t experimenter;    // OF_EXPERIMENTER_ID_BSN 
diff --git a/openflow_input/bsn_shell b/openflow_input/bsn_shell
index ea85571..a65905d 100644
--- a/openflow_input/bsn_shell
+++ b/openflow_input/bsn_shell
@@ -27,7 +27,7 @@
 
 #version 1
 
-struct ofp_bsn_shell_command {
+struct of_bsn_shell_command {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -38,7 +38,7 @@
     of_octets_t data;
 };
 
-struct ofp_bsn_shell_output {
+struct of_bsn_shell_output {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -48,7 +48,7 @@
     of_octets_t data;
 };
 
-struct ofp_bsn_shell_status {
+struct of_bsn_shell_status {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/bsn_table_mod b/openflow_input/bsn_table_mod
index 418c716..6161abf 100644
--- a/openflow_input/bsn_table_mod
+++ b/openflow_input/bsn_table_mod
@@ -29,7 +29,7 @@
 
 // This is the 1.1+ table mod message which we back port to 1.0
 // for use inside components
-struct ofp_table_mod {
+struct of_table_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/nicira_dec_ttl b/openflow_input/nicira_dec_ttl
index b507d57..6d113fb 100644
--- a/openflow_input/nicira_dec_ttl
+++ b/openflow_input/nicira_dec_ttl
@@ -27,7 +27,7 @@
 
 #version any
 
-struct ofp_action_nicira_dec_ttl {
+struct of_action_nicira_dec_ttl {
     uint16_t type;      // OF_ACTION_TYPE_EXPERIMENTER
     uint16_t len;
     uint32_t experimenter;    // OF_EXPERIMENTER_ID_NICIRA
diff --git a/openflow_input/nicira_role b/openflow_input/nicira_role
index caa2c1a..fdb37f0 100644
--- a/openflow_input/nicira_role
+++ b/openflow_input/nicira_role
@@ -33,7 +33,7 @@
    NX_ROLE_SLAVE = 2,
 };
 
-struct ofp_nicira_controller_role_request {
+struct of_nicira_controller_role_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -43,7 +43,7 @@
     uint32_t role;         // 0 other, 1 master, 2 slave
 };
 
-struct ofp_nicira_controller_role_reply {
+struct of_nicira_controller_role_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/standard-1.0 b/openflow_input/standard-1.0
index c191b89..ecb1672 100644
--- a/openflow_input/standard-1.0
+++ b/openflow_input/standard-1.0
@@ -296,21 +296,21 @@
     OFPQOFC_EPERM = 2,
 };
 
-struct ofp_header {
+struct of_header {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_hello {
+struct of_hello {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_echo_request {
+struct of_echo_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -318,7 +318,7 @@
     of_octets_t data;
 };
 
-struct ofp_echo_reply {
+struct of_echo_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -326,7 +326,7 @@
     of_octets_t data;
 };
 
-struct ofp_experimenter {
+struct of_experimenter {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -336,28 +336,28 @@
     of_octets_t data;
 };
 
-struct ofp_barrier_request {
+struct of_barrier_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_barrier_reply {
+struct of_barrier_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_request {
+struct of_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_reply {
+struct of_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -366,7 +366,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_set_config {
+struct of_set_config {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -375,7 +375,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_port_desc {
+struct of_port_desc {
     of_port_no_t port_no;
     of_mac_addr_t hw_addr;
     of_port_name_t name;
@@ -387,14 +387,14 @@
     uint32_t peer;
 };
 
-struct ofp_features_request {
+struct of_features_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_features_reply {
+struct of_features_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -408,7 +408,7 @@
     list(of_port_desc_t) ports;
 };
 
-struct ofp_port_status {
+struct of_port_status {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -418,7 +418,7 @@
     of_port_desc_t desc;
 };
 
-struct ofp_port_mod {
+struct of_port_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -431,7 +431,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_packet_in {
+struct of_packet_in {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -444,88 +444,88 @@
     of_octets_t data;
 };
 
-struct ofp_action_output {
+struct of_action_output {
     uint16_t type;
     uint16_t len;
     of_port_no_t port;
     uint16_t max_len;
 };
 
-struct ofp_action_set_vlan_vid {
+struct of_action_set_vlan_vid {
     uint16_t type;
     uint16_t len;
     uint16_t vlan_vid;
     uint8_t[2] pad;
 };
 
-struct ofp_action_strip_vlan {
+struct of_action_strip_vlan {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_set_vlan_pcp {
+struct of_action_set_vlan_pcp {
     uint16_t type;
     uint16_t len;
     uint8_t vlan_pcp;
     uint8_t[3] pad;
 };
 
-struct ofp_action_set_dl_src {
+struct of_action_set_dl_src {
     uint16_t type;
     uint16_t len;
     of_mac_addr_t dl_addr;
     uint8_t[6] pad;
 };
 
-struct ofp_action_set_dl_dst {
+struct of_action_set_dl_dst {
     uint16_t type;
     uint16_t len;
     of_mac_addr_t dl_addr;
     uint8_t[6] pad;
 };
 
-struct ofp_action_set_nw_src {
+struct of_action_set_nw_src {
     uint16_t type;
     uint16_t len;
     uint32_t nw_addr;
 };
 
-struct ofp_action_set_nw_dst {
+struct of_action_set_nw_dst {
     uint16_t type;
     uint16_t len;
     uint32_t nw_addr;
 };
 
-struct ofp_action_set_tp_src {
+struct of_action_set_tp_src {
     uint16_t type;
     uint16_t len;
     uint16_t tp_port;
     uint8_t[2] pad;
 };
 
-struct ofp_action_set_tp_dst {
+struct of_action_set_tp_dst {
     uint16_t type;
     uint16_t len;
     uint16_t tp_port;
     uint8_t[2] pad;
 };
 
-struct ofp_action_set_nw_tos {
+struct of_action_set_nw_tos {
     uint16_t type;
     uint16_t len;
     uint8_t nw_tos;
     uint8_t[3] pad;
 };
 
-struct ofp_action_experimenter {
+struct of_action_experimenter {
     uint16_t type;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_action_enqueue {
+struct of_action_enqueue {
     uint16_t type;
     uint16_t len;
     of_port_no_t port;
@@ -533,13 +533,13 @@
     uint32_t queue_id;
 };
 
-struct ofp_action {
+struct of_action {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_packet_out {
+struct of_packet_out {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -551,7 +551,7 @@
     of_octets_t data;
 };
 
-struct ofp_match_v1 {
+struct of_match_v1 {
     of_wc_bmap_t wildcards;
     of_port_no_t in_port;
     of_mac_addr_t eth_src;
@@ -569,7 +569,7 @@
     uint16_t tcp_dst;
 };
 
-struct ofp_flow_add {
+struct of_flow_add {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -586,7 +586,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_flow_modify {
+struct of_flow_modify {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -603,7 +603,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_flow_modify_strict {
+struct of_flow_modify_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -620,7 +620,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_flow_delete {
+struct of_flow_delete {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -637,7 +637,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_flow_delete_strict {
+struct of_flow_delete_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -654,7 +654,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_flow_removed {
+struct of_flow_removed {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -672,7 +672,7 @@
     uint64_t byte_count;
 };
 
-struct ofp_error_msg {
+struct of_error_msg {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -683,7 +683,7 @@
 };
 
 // STATS ENTRIES: flow, table, port, queue,
-struct ofp_flow_stats_entry {
+struct of_flow_stats_entry {
     uint16_t length;
     uint8_t table_id;
     uint8_t pad;
@@ -700,7 +700,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_table_stats_entry {
+struct of_table_stats_entry {
     uint8_t table_id;
     uint8_t[3] pad;
     of_table_name_t name;
@@ -711,7 +711,7 @@
     uint64_t matched_count;
 };
 
-struct ofp_port_stats_entry {
+struct of_port_stats_entry {
     of_port_no_t port_no;
     uint8_t[6] pad;
     uint64_t rx_packets;
@@ -728,7 +728,7 @@
     uint64_t collisions;
 };
 
-struct ofp_queue_stats_entry {
+struct of_queue_stats_entry {
     of_port_no_t port_no;
     uint8_t[2] pad;
     uint32_t queue_id;
@@ -739,7 +739,7 @@
 
 // STATS request/reply:  Desc, flow, agg, table, port, queue
 
-struct ofp_desc_stats_request {
+struct of_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -748,7 +748,7 @@
     uint16_t flags;
 };
 
-struct ofp_desc_stats_reply {
+struct of_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -762,7 +762,7 @@
     of_desc_str_t dp_desc;
 };
 
-struct ofp_flow_stats_request {
+struct of_flow_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -775,7 +775,7 @@
     of_port_no_t out_port;
 };
 
-struct ofp_flow_stats_reply {
+struct of_flow_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -785,7 +785,7 @@
     list(of_flow_stats_entry_t) entries;
 };
 
-struct ofp_aggregate_stats_request {
+struct of_aggregate_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -798,7 +798,7 @@
     of_port_no_t out_port;
 };
 
-struct ofp_aggregate_stats_reply {
+struct of_aggregate_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -811,7 +811,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_table_stats_request {
+struct of_table_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -820,7 +820,7 @@
     uint16_t flags;
 };
 
-struct ofp_table_stats_reply {
+struct of_table_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -830,7 +830,7 @@
     list(of_table_stats_entry_t) entries;
 };
 
-struct ofp_port_stats_request {
+struct of_port_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -841,7 +841,7 @@
     uint8_t[6] pad;
 };
 
-struct ofp_port_stats_reply {
+struct of_port_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -851,7 +851,7 @@
     list(of_port_stats_entry_t) entries;
 };
 
-struct ofp_queue_stats_request {
+struct of_queue_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -863,7 +863,7 @@
     uint32_t queue_id;
 };
 
-struct ofp_queue_stats_reply {
+struct of_queue_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -873,7 +873,7 @@
     list(of_queue_stats_entry_t) entries;
 };
 
-struct ofp_experimenter_stats_request {
+struct of_experimenter_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -884,7 +884,7 @@
     of_octets_t data;
 };
 
-struct ofp_experimenter_stats_reply {
+struct of_experimenter_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -897,13 +897,13 @@
 
 // END OF STATS OBJECTS
 
-struct ofp_queue_prop {
+struct of_queue_prop {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_queue_prop_min_rate {
+struct of_queue_prop_min_rate {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -911,14 +911,14 @@
     uint8_t[6] pad;
 };
 
-struct ofp_packet_queue {
+struct of_packet_queue {
     uint32_t queue_id;
     uint16_t len;
     uint8_t[2] pad;
     list(of_queue_prop_t) properties;
 };
 
-struct ofp_queue_get_config_request {
+struct of_queue_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -927,7 +927,7 @@
     uint8_t[2] pad;
 };
 
-struct ofp_queue_get_config_reply {
+struct of_queue_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/standard-1.1 b/openflow_input/standard-1.1
index 1c551d2..5cd2144 100644
--- a/openflow_input/standard-1.1
+++ b/openflow_input/standard-1.1
@@ -407,21 +407,21 @@
     OFPQT_MIN_RATE = 1,
 };
 
-struct ofp_header {
+struct of_header {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_hello {
+struct of_hello {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_echo_request {
+struct of_echo_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -429,7 +429,7 @@
     of_octets_t data;
 };
 
-struct ofp_echo_reply {
+struct of_echo_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -437,7 +437,7 @@
     of_octets_t data;
 };
 
-struct ofp_experimenter {
+struct of_experimenter {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -447,28 +447,28 @@
     of_octets_t data;
 };
 
-struct ofp_barrier_request {
+struct of_barrier_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_barrier_reply {
+struct of_barrier_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_request {
+struct of_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_reply {
+struct of_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -477,7 +477,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_set_config {
+struct of_set_config {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -486,7 +486,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_table_mod {
+struct of_table_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -496,7 +496,7 @@
     uint32_t config;
 };
 
-struct ofp_port_desc {
+struct of_port_desc {
     of_port_no_t port_no;
     uint8_t[4] pad;
     of_mac_addr_t hw_addr;
@@ -512,14 +512,14 @@
     uint32_t max_speed;
 };
 
-struct ofp_features_request {
+struct of_features_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_features_reply {
+struct of_features_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -533,7 +533,7 @@
     list(of_port_desc_t) ports;
 };
 
-struct ofp_port_status {
+struct of_port_status {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -543,7 +543,7 @@
     of_port_desc_t desc;
 };
 
-struct ofp_port_mod {
+struct of_port_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -558,7 +558,7 @@
     uint8_t[4] pad3;
 };
 
-struct ofp_packet_in {
+struct of_packet_in {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -572,7 +572,7 @@
     of_octets_t data;
 };
 
-struct ofp_action_output {
+struct of_action_output {
     uint16_t type;
     uint16_t len;
     of_port_no_t port;
@@ -580,178 +580,178 @@
     uint8_t[6] pad;
 };
 
-struct ofp_action_set_vlan_vid {
+struct of_action_set_vlan_vid {
     uint16_t type;
     uint16_t len;
     uint16_t vlan_vid;
     uint8_t[2] pad;
 };
 
-struct ofp_action_set_vlan_pcp {
+struct of_action_set_vlan_pcp {
     uint16_t type;
     uint16_t len;
     uint8_t vlan_pcp;
     uint8_t[3] pad;
 };
 
-struct ofp_action_set_dl_src {
+struct of_action_set_dl_src {
     uint16_t type;
     uint16_t len;
     of_mac_addr_t dl_addr;
     uint8_t[6] pad;
 };
 
-struct ofp_action_set_dl_dst {
+struct of_action_set_dl_dst {
     uint16_t type;
     uint16_t len;
     of_mac_addr_t dl_addr;
     uint8_t[6] pad;
 };
 
-struct ofp_action_set_nw_src {
+struct of_action_set_nw_src {
     uint16_t type;
     uint16_t len;
     uint32_t nw_addr;
 };
 
-struct ofp_action_set_nw_dst {
+struct of_action_set_nw_dst {
     uint16_t type;
     uint16_t len;
     uint32_t nw_addr;
 };
 
-struct ofp_action_set_nw_tos {
+struct of_action_set_nw_tos {
     uint16_t type;
     uint16_t len;
     uint8_t nw_tos;
     uint8_t[3] pad;
 };
 
-struct ofp_action_set_nw_ecn {
+struct of_action_set_nw_ecn {
     uint16_t type;
     uint16_t len;
     uint8_t nw_ecn;
     uint8_t[3] pad;
 };
 
-struct ofp_action_set_tp_src {
+struct of_action_set_tp_src {
     uint16_t type;
     uint16_t len;
     uint16_t tp_port;
     uint8_t[2] pad;
 };
 
-struct ofp_action_set_tp_dst {
+struct of_action_set_tp_dst {
     uint16_t type;
     uint16_t len;
     uint16_t tp_port;
     uint8_t[2] pad;
 };
 
-struct ofp_action_copy_ttl_out {
+struct of_action_copy_ttl_out {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_copy_ttl_in {
+struct of_action_copy_ttl_in {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_set_mpls_label {
+struct of_action_set_mpls_label {
     uint16_t type;
     uint16_t len;
     uint32_t mpls_label;
 };
 
-struct ofp_action_set_mpls_tc {
+struct of_action_set_mpls_tc {
     uint16_t type;
     uint16_t len;
     uint8_t mpls_tc;
     uint8_t[3] pad;
 };
 
-struct ofp_action_set_mpls_ttl {
+struct of_action_set_mpls_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t mpls_ttl;
     uint8_t[3] pad;
 };
 
-struct ofp_action_dec_mpls_ttl {
+struct of_action_dec_mpls_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_push_vlan {
+struct of_action_push_vlan {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_pop_vlan {
+struct of_action_pop_vlan {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_push_mpls {
+struct of_action_push_mpls {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_pop_mpls {
+struct of_action_pop_mpls {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_set_queue {
+struct of_action_set_queue {
     uint16_t type;
     uint16_t len;
     uint32_t queue_id;
 };
 
-struct ofp_action_group {
+struct of_action_group {
     uint16_t type;
     uint16_t len;
     uint32_t group_id;
 };
 
-struct ofp_action_set_nw_ttl {
+struct of_action_set_nw_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t nw_ttl;
     uint8_t[3] pad;
 };
 
-struct ofp_action_dec_nw_ttl {
+struct of_action_dec_nw_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_experimenter {
+struct of_action_experimenter {
     uint16_t type;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_action {
+struct of_action {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_packet_out {
+struct of_packet_out {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -764,7 +764,7 @@
     of_octets_t data;
 };
 
-struct ofp_match_v2 {
+struct of_match_v2 {
     uint16_t type;
     uint16_t length;
     of_port_no_t in_port;
@@ -792,20 +792,20 @@
     uint64_t metadata_mask;
 };
 
-struct ofp_instruction {
+struct of_instruction {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_instruction_goto_table {
+struct of_instruction_goto_table {
     uint16_t type;
     uint16_t len;
     uint8_t table_id;
     uint8_t[3] pad;
 };
 
-struct ofp_instruction_write_metadata {
+struct of_instruction_write_metadata {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -813,34 +813,34 @@
     uint64_t metadata_mask;
 };
 
-struct ofp_instruction_write_actions {
+struct of_instruction_write_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
     list(of_action_t) actions;
 };
 
-struct ofp_instruction_apply_actions {
+struct of_instruction_apply_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
     list(of_action_t) actions;
 };
 
-struct ofp_instruction_clear_actions {
+struct of_instruction_clear_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_instruction_experimenter {
+struct of_instruction_experimenter {
     uint16_t type;		
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_flow_add {
+struct of_flow_add {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -861,7 +861,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_modify {
+struct of_flow_modify {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -882,7 +882,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_modify_strict {
+struct of_flow_modify_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -903,7 +903,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_delete {
+struct of_flow_delete {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -924,7 +924,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_delete_strict {
+struct of_flow_delete_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -945,7 +945,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_bucket {
+struct of_bucket {
     uint16_t len;
     uint16_t weight;
     of_port_no_t watch_port;
@@ -954,7 +954,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_group_mod {
+struct of_group_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -966,7 +966,7 @@
     list(of_bucket_t) buckets;
 };
 
-struct ofp_flow_removed {
+struct of_flow_removed {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -984,7 +984,7 @@
     of_match_t match;
 };
 
-struct ofp_error_msg {
+struct of_error_msg {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -996,7 +996,7 @@
 
 // STATS ENTRIES:  flow, table, port, group, group_desc
 
-struct ofp_flow_stats_entry {
+struct of_flow_stats_entry {
     uint16_t length;
     uint8_t table_id;
     uint8_t pad;
@@ -1013,7 +1013,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_table_stats_entry {
+struct of_table_stats_entry {
     uint8_t table_id;
     uint8_t[7] pad;
     of_table_name_t name;
@@ -1029,7 +1029,7 @@
     uint64_t matched_count;
 };
 
-struct ofp_port_stats_entry {
+struct of_port_stats_entry {
     of_port_no_t port_no;
     uint8_t[4] pad;
     uint64_t rx_packets;
@@ -1046,7 +1046,7 @@
     uint64_t collisions;
 };
 
-struct ofp_queue_stats_entry {
+struct of_queue_stats_entry {
     of_port_no_t port_no;
     uint32_t queue_id;
     uint64_t tx_bytes;
@@ -1054,12 +1054,12 @@
     uint64_t tx_errors;
 };
 
-struct ofp_bucket_counter {
+struct of_bucket_counter {
     uint64_t packet_count;
     uint64_t byte_count;
 };
 
-struct ofp_group_stats_entry {
+struct of_group_stats_entry {
     uint16_t length;
     uint8_t[2] pad;
     uint32_t group_id;
@@ -1070,7 +1070,7 @@
     list(of_bucket_counter_t) bucket_stats;
 };
 
-struct ofp_group_desc_stats_entry {
+struct of_group_desc_stats_entry {
     uint16_t length;
     uint8_t type;
     uint8_t pad;
@@ -1080,7 +1080,7 @@
 
 // STATS:  Desc, flow, agg, table, port, queue, group, group_desc, experi
 
-struct ofp_desc_stats_request {
+struct of_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1090,7 +1090,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_desc_stats_reply {
+struct of_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1105,7 +1105,7 @@
     of_desc_str_t dp_desc;
 };
 
-struct ofp_flow_stats_request {
+struct of_flow_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1123,7 +1123,7 @@
     of_match_t match;
 };
 
-struct ofp_flow_stats_reply {
+struct of_flow_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1134,7 +1134,7 @@
     list(of_flow_stats_entry_t) entries;
 };
 
-struct ofp_aggregate_stats_request {
+struct of_aggregate_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1152,7 +1152,7 @@
     of_match_t match;
 };
 
-struct ofp_aggregate_stats_reply {
+struct of_aggregate_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1166,7 +1166,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_table_stats_request {
+struct of_table_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1176,7 +1176,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_table_stats_reply {
+struct of_table_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1187,7 +1187,7 @@
     list(of_table_stats_entry_t) entries;
 };
 
-struct ofp_port_stats_request {
+struct of_port_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1199,7 +1199,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_port_stats_reply {
+struct of_port_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1210,7 +1210,7 @@
     list(of_port_stats_entry_t) entries;
 };
 
-struct ofp_queue_stats_request {
+struct of_queue_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1222,7 +1222,7 @@
     uint32_t queue_id;
 };
 
-struct ofp_queue_stats_reply {
+struct of_queue_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1233,7 +1233,7 @@
     list(of_queue_stats_entry_t) entries;
 };
 
-struct ofp_group_stats_request {
+struct of_group_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1245,7 +1245,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_stats_reply {
+struct of_group_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1256,7 +1256,7 @@
     list(of_group_stats_entry_t) entries;
 };
 
-struct ofp_group_desc_stats_request {
+struct of_group_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1266,7 +1266,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_desc_stats_reply {
+struct of_group_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1277,7 +1277,7 @@
     list(of_group_desc_stats_entry_t) entries;
 };
 
-struct ofp_experimenter_stats_request {
+struct of_experimenter_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1290,7 +1290,7 @@
     of_octets_t data;
 };
 
-struct ofp_experimenter_stats_reply {
+struct of_experimenter_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1305,13 +1305,13 @@
 
 // END OF STATS OBJECTS
 
-struct ofp_queue_prop {
+struct of_queue_prop {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_queue_prop_min_rate {
+struct of_queue_prop_min_rate {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -1319,14 +1319,14 @@
     uint8_t[6] pad;
 };
 
-struct ofp_packet_queue {
+struct of_packet_queue {
     uint32_t queue_id;
     uint16_t len;
     uint8_t[2] pad;
     list(of_queue_prop_t) properties;
 };
 
-struct ofp_queue_get_config_request {
+struct of_queue_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1335,7 +1335,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_queue_get_config_reply {
+struct of_queue_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/standard-1.2 b/openflow_input/standard-1.2
index 0d48c43..99e27c8 100644
--- a/openflow_input/standard-1.2
+++ b/openflow_input/standard-1.2
@@ -447,21 +447,21 @@
     OFPCR_ROLE_SLAVE = 3,
 };
 
-struct ofp_header {
+struct of_header {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_hello {
+struct of_hello {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_echo_request {
+struct of_echo_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -469,7 +469,7 @@
     of_octets_t data;
 };
 
-struct ofp_echo_reply {
+struct of_echo_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -477,7 +477,7 @@
     of_octets_t data;
 };
 
-struct ofp_experimenter {
+struct of_experimenter {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -487,28 +487,28 @@
     of_octets_t data;
 };
 
-struct ofp_barrier_request {
+struct of_barrier_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_barrier_reply {
+struct of_barrier_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_request {
+struct of_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_reply {
+struct of_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -517,7 +517,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_set_config {
+struct of_set_config {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -526,7 +526,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_table_mod {
+struct of_table_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -536,7 +536,7 @@
     uint32_t config;
 };
 
-struct ofp_port_desc {
+struct of_port_desc {
     of_port_no_t port_no;
     uint8_t[4] pad;
     of_mac_addr_t hw_addr;
@@ -552,14 +552,14 @@
     uint32_t max_speed;
 };
 
-struct ofp_features_request {
+struct of_features_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_features_reply {
+struct of_features_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -573,7 +573,7 @@
     list(of_port_desc_t) ports;
 };
 
-struct ofp_port_status {
+struct of_port_status {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -583,7 +583,7 @@
     of_port_desc_t desc;
 };
 
-struct ofp_port_mod {
+struct of_port_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -598,19 +598,19 @@
     uint8_t[4] pad3;
 };
 
-struct ofp_match_v3 {
+struct of_match_v3 {
     uint16_t type;
     uint16_t length;
     list(of_oxm_t) oxm_list;
 };
 
-struct ofp_oxm_experimenter_header {
+struct of_oxm_experimenter_header {
     uint32_t oxm_header;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_action_output {
+struct of_action_output {
     uint16_t type;
     uint16_t len;
     of_port_no_t port;
@@ -618,116 +618,116 @@
     uint8_t[6] pad;
 };
 
-struct ofp_action_copy_ttl_out {
+struct of_action_copy_ttl_out {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_copy_ttl_in {
+struct of_action_copy_ttl_in {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_set_mpls_ttl {
+struct of_action_set_mpls_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t mpls_ttl;
     uint8_t[3] pad;
 };
 
-struct ofp_action_dec_mpls_ttl {
+struct of_action_dec_mpls_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_push_vlan {
+struct of_action_push_vlan {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_pop_vlan {
+struct of_action_pop_vlan {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_push_mpls {
+struct of_action_push_mpls {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_pop_mpls {
+struct of_action_pop_mpls {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_set_queue {
+struct of_action_set_queue {
     uint16_t type;
     uint16_t len;
     uint32_t queue_id;
 };
 
-struct ofp_action_group {
+struct of_action_group {
     uint16_t type;
     uint16_t len;
     uint32_t group_id;
 };
 
-struct ofp_action_set_nw_ttl {
+struct of_action_set_nw_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t nw_ttl;
     uint8_t[3] pad;
 };
 
-struct ofp_action_dec_nw_ttl {
+struct of_action_dec_nw_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_set_field {
+struct of_action_set_field {
     uint16_t type;
     uint16_t len;
     of_octets_t field;
 };
 
-struct ofp_action_experimenter {
+struct of_action_experimenter {
     uint16_t type;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_action {
+struct of_action {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_instruction {
+struct of_instruction {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_instruction_goto_table {
+struct of_instruction_goto_table {
     uint16_t type;
     uint16_t len;
     uint8_t table_id;
     uint8_t[3] pad;
 };
 
-struct ofp_instruction_write_metadata {
+struct of_instruction_write_metadata {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -735,34 +735,34 @@
     uint64_t metadata_mask;
 };
 
-struct ofp_instruction_write_actions {
+struct of_instruction_write_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
     list(of_action_t) actions;
 };
 
-struct ofp_instruction_apply_actions {
+struct of_instruction_apply_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
     list(of_action_t) actions;
 };
 
-struct ofp_instruction_clear_actions {
+struct of_instruction_clear_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_instruction_experimenter {
+struct of_instruction_experimenter {
     uint16_t type;		
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_flow_add {
+struct of_flow_add {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -783,7 +783,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_modify {
+struct of_flow_modify {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -804,7 +804,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_modify_strict {
+struct of_flow_modify_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -825,7 +825,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_delete {
+struct of_flow_delete {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -846,7 +846,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_delete_strict {
+struct of_flow_delete_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -867,7 +867,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_bucket {
+struct of_bucket {
     uint16_t len;
     uint16_t weight;
     of_port_no_t watch_port;
@@ -876,7 +876,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_group_mod {
+struct of_group_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -888,7 +888,7 @@
     list(of_bucket_t) buckets;
 };
 
-struct ofp_packet_out {
+struct of_packet_out {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -901,7 +901,7 @@
     of_octets_t data;
 };
 
-struct ofp_packet_in {
+struct of_packet_in {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -915,7 +915,7 @@
     of_octets_t data; /* FIXME: Ensure total_len gets updated */
 };
 
-struct ofp_flow_removed {
+struct of_flow_removed {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -933,7 +933,7 @@
     of_match_t match;
 };
 
-struct ofp_error_msg {
+struct of_error_msg {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -943,7 +943,7 @@
     of_octets_t data;
 };
 
-// struct ofp_error_experimenter_msg {
+// struct of_error_experimenter_msg {
 //    uint8_t version;
 //    uint8_t type;
 //    uint16_t length;
@@ -957,7 +957,7 @@
 // STATS ENTRIES: flow, table, port, queue, group stats, group desc stats
 // FIXME: Verify disambiguation w/ length in object and entry
 
-struct ofp_flow_stats_entry {
+struct of_flow_stats_entry {
     uint16_t length;
     uint8_t table_id;
     uint8_t pad;
@@ -974,7 +974,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_table_stats_entry {
+struct of_table_stats_entry {
     uint8_t table_id;
     uint8_t[7] pad;
     of_table_name_t name;
@@ -994,7 +994,7 @@
     uint64_t matched_count;
 };
 
-struct ofp_port_stats_entry {
+struct of_port_stats_entry {
     of_port_no_t port_no;
     uint8_t[4] pad;
     uint64_t rx_packets;
@@ -1011,7 +1011,7 @@
     uint64_t collisions;
 };
 
-struct ofp_queue_stats_entry {
+struct of_queue_stats_entry {
     of_port_no_t port_no;
     uint32_t queue_id;
     uint64_t tx_bytes;
@@ -1019,12 +1019,12 @@
     uint64_t tx_errors;
 };
 
-struct ofp_bucket_counter {
+struct of_bucket_counter {
     uint64_t packet_count;
     uint64_t byte_count;
 };
 
-struct ofp_group_stats_entry {
+struct of_group_stats_entry {
     uint16_t length;
     uint8_t[2] pad;
     uint32_t group_id;
@@ -1035,7 +1035,7 @@
     list(of_bucket_counter_t) bucket_stats;
 };
 
-struct ofp_group_desc_stats_entry {
+struct of_group_desc_stats_entry {
     uint16_t length;
     uint8_t type;
     uint8_t pad;
@@ -1046,7 +1046,7 @@
 // STATS: 
 //  Desc, flow, agg, table, port, queue, group, group_desc, group_feat, experi
 
-struct ofp_desc_stats_request {
+struct of_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1056,7 +1056,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_desc_stats_reply {
+struct of_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1071,7 +1071,7 @@
     of_desc_str_t dp_desc;
 };
 
-struct ofp_flow_stats_request {
+struct of_flow_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1089,7 +1089,7 @@
     of_match_t match;
 };
 
-struct ofp_flow_stats_reply {
+struct of_flow_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1100,7 +1100,7 @@
     list(of_flow_stats_entry_t) entries;
 };
 
-struct ofp_aggregate_stats_request {
+struct of_aggregate_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1118,7 +1118,7 @@
     of_match_t match;
 };
 
-struct ofp_aggregate_stats_reply {
+struct of_aggregate_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1132,7 +1132,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_table_stats_request {
+struct of_table_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1142,7 +1142,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_table_stats_reply {
+struct of_table_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1153,7 +1153,7 @@
     list(of_table_stats_entry_t) entries;
 };
 
-struct ofp_port_stats_request {
+struct of_port_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1165,7 +1165,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_port_stats_reply {
+struct of_port_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1176,7 +1176,7 @@
     list(of_port_stats_entry_t) entries;
 };
 
-struct ofp_queue_stats_request {
+struct of_queue_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1188,7 +1188,7 @@
     uint32_t queue_id;
 };
 
-struct ofp_queue_stats_reply {
+struct of_queue_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1199,7 +1199,7 @@
     list(of_queue_stats_entry_t) entries;
 };
 
-struct ofp_group_stats_request {
+struct of_group_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1211,7 +1211,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_stats_reply {
+struct of_group_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1222,7 +1222,7 @@
     list(of_group_stats_entry_t) entries;
 };
 
-struct ofp_group_desc_stats_request {
+struct of_group_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1232,7 +1232,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_desc_stats_reply {
+struct of_group_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1243,7 +1243,7 @@
     list(of_group_desc_stats_entry_t) entries;
 };
 
-struct ofp_group_features_stats_request {
+struct of_group_features_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1253,7 +1253,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_features_stats_reply {
+struct of_group_features_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1273,7 +1273,7 @@
     uint32_t actions_ff;
 };
 
-struct ofp_experimenter_stats_request {
+struct of_experimenter_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1286,7 +1286,7 @@
     of_octets_t data;
 };
 
-struct ofp_experimenter_stats_reply {
+struct of_experimenter_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1301,13 +1301,13 @@
 
 // END OF STATS OBJECTS
 
-struct ofp_queue_prop {
+struct of_queue_prop {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_queue_prop_min_rate {
+struct of_queue_prop_min_rate {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -1315,7 +1315,7 @@
     uint8_t[6] pad;
 };
 
-struct ofp_queue_prop_max_rate {
+struct of_queue_prop_max_rate {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -1323,7 +1323,7 @@
     uint8_t[6] pad;
 };
 
-struct ofp_queue_prop_experimenter {
+struct of_queue_prop_experimenter {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -1332,7 +1332,7 @@
     of_octets_t data;
 };
 
-struct ofp_packet_queue {
+struct of_packet_queue {
     uint32_t queue_id;
     of_port_no_t port;
     uint16_t len;
@@ -1340,7 +1340,7 @@
     list(of_queue_prop_t) properties;
 };
 
-struct ofp_queue_get_config_request {
+struct of_queue_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1349,7 +1349,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_queue_get_config_reply {
+struct of_queue_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1359,7 +1359,7 @@
     list(of_packet_queue_t) queues;
 };
 
-struct ofp_role_request {
+struct of_role_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1369,7 +1369,7 @@
     uint64_t generation_id;
 };
 
-struct ofp_role_reply {
+struct of_role_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
diff --git a/openflow_input/standard-1.3 b/openflow_input/standard-1.3
index e7a9812..300b9ec 100644
--- a/openflow_input/standard-1.3
+++ b/openflow_input/standard-1.3
@@ -548,7 +548,7 @@
     OFPHET_VERSIONBITMAP = 1,
 };
 
-struct ofp_header {
+struct of_header {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -556,27 +556,27 @@
 };
 
 // Special structures used for managing scalar list elements
-struct ofp_uint32 {
+struct of_uint32 {
     uint32_t value;
 };
 
 // Special structures used for managing scalar list elements
-struct ofp_uint8 {
+struct of_uint8 {
     uint8_t value;
 };
 
-struct ofp_hello_elem {
+struct of_hello_elem {
     uint16_t type;
     uint16_t length;
 };
 
-struct ofp_hello_elem_versionbitmap {
+struct of_hello_elem_versionbitmap {
     uint16_t type;
     uint16_t length;
     list(of_uint32_t) bitmaps;
 };
 
-struct ofp_hello {
+struct of_hello {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -584,7 +584,7 @@
     list(of_hello_elem_t) elements;
 };
 
-struct ofp_echo_request {
+struct of_echo_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -592,7 +592,7 @@
     of_octets_t data;
 };
 
-struct ofp_echo_reply {
+struct of_echo_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -600,7 +600,7 @@
     of_octets_t data;
 };
 
-struct ofp_experimenter {
+struct of_experimenter {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -610,28 +610,28 @@
     of_octets_t data;
 };
 
-struct ofp_barrier_request {
+struct of_barrier_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_barrier_reply {
+struct of_barrier_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_request {
+struct of_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_get_config_reply {
+struct of_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -640,7 +640,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_set_config {
+struct of_set_config {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -649,7 +649,7 @@
     uint16_t miss_send_len;
 };
 
-struct ofp_table_mod {
+struct of_table_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -659,7 +659,7 @@
     uint32_t config;
 };
 
-struct ofp_port_desc {
+struct of_port_desc {
     of_port_no_t port_no;
     uint8_t[4] pad;
     of_mac_addr_t hw_addr;
@@ -675,14 +675,14 @@
     uint32_t max_speed;
 };
 
-struct ofp_features_request {
+struct of_features_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
     uint32_t xid;
 };
 
-struct ofp_features_reply {
+struct of_features_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -696,7 +696,7 @@
     uint32_t reserved;
 };
 
-struct ofp_port_status {
+struct of_port_status {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -706,7 +706,7 @@
     of_port_desc_t desc;
 };
 
-struct ofp_port_mod {
+struct of_port_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -722,13 +722,13 @@
 };
 
 // FIXME Does this need to be v4?
-struct ofp_match_v3 {
+struct of_match_v3 {
     uint16_t type;
     uint16_t length;
     list(of_oxm_t) oxm_list;
 };
 
-struct ofp_oxm_experimenter_header {
+struct of_oxm_experimenter_header {
     uint32_t oxm_header;
     uint32_t experimenter;
     of_octets_t data;
@@ -736,13 +736,13 @@
 
 // This looks like an action header, but is standalone.  See 
 // ofp_table_features_prop_actions
-struct ofp_action_id {
+struct of_action_id {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_output {
+struct of_action_output {
     uint16_t type;
     uint16_t len;
     of_port_no_t port;
@@ -750,128 +750,128 @@
     uint8_t[6] pad;
 };
 
-struct ofp_action_copy_ttl_out {
+struct of_action_copy_ttl_out {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_copy_ttl_in {
+struct of_action_copy_ttl_in {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_set_mpls_ttl {
+struct of_action_set_mpls_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t mpls_ttl;
     uint8_t[3] pad;
 };
 
-struct ofp_action_dec_mpls_ttl {
+struct of_action_dec_mpls_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_push_vlan {
+struct of_action_push_vlan {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_pop_vlan {
+struct of_action_pop_vlan {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_push_mpls {
+struct of_action_push_mpls {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_pop_mpls {
+struct of_action_pop_mpls {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action_set_queue {
+struct of_action_set_queue {
     uint16_t type;
     uint16_t len;
     uint32_t queue_id;
 };
 
-struct ofp_action_group {
+struct of_action_group {
     uint16_t type;
     uint16_t len;
     uint32_t group_id;
 };
 
-struct ofp_action_set_nw_ttl {
+struct of_action_set_nw_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t nw_ttl;
     uint8_t[3] pad;
 };
 
-struct ofp_action_dec_nw_ttl {
+struct of_action_dec_nw_ttl {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_set_field {
+struct of_action_set_field {
     uint16_t type;
     uint16_t len;
     of_octets_t field;
 };
 
-struct ofp_action_experimenter {
+struct of_action_experimenter {
     uint16_t type;
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_action_pop_pbb {
+struct of_action_pop_pbb {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_action_push_pbb {
+struct of_action_push_pbb {
     uint16_t type;
     uint16_t len;
     uint16_t ethertype;
     uint8_t[2] pad;
 };
 
-struct ofp_action {
+struct of_action {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_instruction {
+struct of_instruction {
     uint16_t type;
     uint16_t len;
 };
 
-struct ofp_instruction_goto_table {
+struct of_instruction_goto_table {
     uint16_t type;
     uint16_t len;
     uint8_t table_id;
     uint8_t[3] pad;
 };
 
-struct ofp_instruction_write_metadata {
+struct of_instruction_write_metadata {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -879,40 +879,40 @@
     uint64_t metadata_mask;
 };
 
-struct ofp_instruction_write_actions {
+struct of_instruction_write_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
     list(of_action_t) actions;
 };
 
-struct ofp_instruction_apply_actions {
+struct of_instruction_apply_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
     list(of_action_t) actions;
 };
 
-struct ofp_instruction_clear_actions {
+struct of_instruction_clear_actions {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_instruction_meter {
+struct of_instruction_meter {
     uint16_t type;
     uint16_t len;
     uint32_t meter_id;
 };
 
-struct ofp_instruction_experimenter {
+struct of_instruction_experimenter {
     uint16_t type;		
     uint16_t len;
     uint32_t experimenter;
     of_octets_t data;
 };
 
-struct ofp_flow_add {
+struct of_flow_add {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -933,7 +933,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_modify {
+struct of_flow_modify {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -954,7 +954,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_modify_strict {
+struct of_flow_modify_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -975,7 +975,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_delete {
+struct of_flow_delete {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -996,7 +996,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_flow_delete_strict {
+struct of_flow_delete_strict {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1017,7 +1017,7 @@
     list(of_instruction_t) instructions;
 };
 
-struct ofp_bucket {
+struct of_bucket {
     uint16_t len;
     uint16_t weight;
     of_port_no_t watch_port;
@@ -1026,7 +1026,7 @@
     list(of_action_t) actions;
 };
 
-struct ofp_group_mod {
+struct of_group_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1038,7 +1038,7 @@
     list(of_bucket_t) buckets;
 };
 
-struct ofp_packet_out {
+struct of_packet_out {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1051,7 +1051,7 @@
     of_octets_t data;
 };
 
-struct ofp_packet_in {
+struct of_packet_in {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1066,7 +1066,7 @@
     of_octets_t data; /* FIXME: Ensure total_len gets updated */
 };
 
-struct ofp_flow_removed {
+struct of_flow_removed {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1084,14 +1084,14 @@
     of_match_t match;
 };
 
-struct ofp_meter_band {
+struct of_meter_band {
     uint16_t        type;
     uint16_t        len;
 //    uint32_t        rate;  // These are excluded b/c this is the header
 //    uint32_t        burst_size;  // These are excluded b/c this is the header
 };
 
-struct ofp_meter_band_drop {
+struct of_meter_band_drop {
     uint16_t        type;
     uint16_t        len;
     uint32_t        rate;
@@ -1099,7 +1099,7 @@
     uint8_t[4]      pad;
 };
 
-struct ofp_meter_band_dscp_remark {
+struct of_meter_band_dscp_remark {
     uint16_t        type;
     uint16_t        len;
     uint32_t        rate;
@@ -1108,7 +1108,7 @@
     uint8_t[3]      pad;
 };
 
-struct ofp_meter_band_experimenter {
+struct of_meter_band_experimenter {
     uint16_t        type;
     uint16_t        len;
     uint32_t        rate;
@@ -1116,7 +1116,7 @@
     uint32_t        experimenter;
 };
 
-struct ofp_meter_mod {
+struct of_meter_mod {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1127,7 +1127,7 @@
     list(of_meter_band_t) meters;
 };
 
-struct ofp_error_msg {
+struct of_error_msg {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1137,7 +1137,7 @@
     of_octets_t data;
 };
 
-//struct ofp_error_experimenter_msg {
+//struct of_error_experimenter_msg {
 //    uint8_t version;
 //    uint8_t type;
 //    uint16_t length;
@@ -1150,7 +1150,7 @@
 
 // STATS ENTRIES: flow, table, port, queue, group stats, group desc stats
 
-struct ofp_flow_stats_entry {
+struct of_flow_stats_entry {
     uint16_t length;
     uint8_t table_id;
     uint8_t pad;
@@ -1168,7 +1168,7 @@
 };
 
 
-struct ofp_table_stats_entry {
+struct of_table_stats_entry {
     uint8_t table_id;
     uint8_t[3] pad;
     uint32_t active_count;
@@ -1176,7 +1176,7 @@
     uint64_t matched_count;
 };
 
-struct ofp_port_stats_entry {
+struct of_port_stats_entry {
     of_port_no_t port_no;
     uint8_t[4] pad;
     uint64_t rx_packets;
@@ -1195,7 +1195,7 @@
     uint32_t duration_nsec;
 };
 
-struct ofp_queue_stats_entry {
+struct of_queue_stats_entry {
     of_port_no_t port_no;
     uint32_t queue_id;
     uint64_t tx_bytes;
@@ -1205,12 +1205,12 @@
     uint32_t duration_nsec;
 };
 
-struct ofp_bucket_counter {
+struct of_bucket_counter {
     uint64_t packet_count;
     uint64_t byte_count;
 };
 
-struct ofp_group_stats_entry {
+struct of_group_stats_entry {
     uint16_t length;
     uint8_t[2] pad;
     uint32_t group_id;
@@ -1223,7 +1223,7 @@
     list(of_bucket_counter_t) bucket_stats;
 };
 
-struct ofp_group_desc_stats_entry {
+struct of_group_desc_stats_entry {
     uint16_t length;
     uint8_t type;
     uint8_t pad;
@@ -1234,7 +1234,7 @@
 // STATS: 
 //  Desc, flow, agg, table, port, queue, group, group_desc, group_feat, experi
 
-struct ofp_desc_stats_request {
+struct of_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1244,7 +1244,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_desc_stats_reply {
+struct of_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1259,7 +1259,7 @@
     of_desc_str_t dp_desc;
 };
 
-struct ofp_flow_stats_request {
+struct of_flow_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1277,7 +1277,7 @@
     of_match_t match;
 };
 
-struct ofp_flow_stats_reply {
+struct of_flow_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1288,7 +1288,7 @@
     list(of_flow_stats_entry_t) entries;
 };
 
-struct ofp_aggregate_stats_request {
+struct of_aggregate_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1306,7 +1306,7 @@
     of_match_t match;
 };
 
-struct ofp_aggregate_stats_reply {
+struct of_aggregate_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1320,7 +1320,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_table_stats_request {
+struct of_table_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1330,7 +1330,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_table_stats_reply {
+struct of_table_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1343,97 +1343,97 @@
 
 // FIXME: These are padded to 8 byte align beyond the length indicated
 
-struct ofp_table_feature_prop {
+struct of_table_feature_prop {
     uint16_t         type;
     uint16_t         length;
 };
 
-struct ofp_table_feature_prop_instructions {
+struct of_table_feature_prop_instructions {
     uint16_t         type;
     uint16_t         length;
     // FIXME Check if instruction_t is right for ids here
     list(of_instruction_t)   instruction_ids;
 };
 
-struct ofp_table_feature_prop_instructions_miss {
+struct of_table_feature_prop_instructions_miss {
     uint16_t         type;
     uint16_t         length;
     list(of_instruction_t)   instruction_ids;
 };
 
-struct ofp_table_feature_prop_next_tables {
+struct of_table_feature_prop_next_tables {
     uint16_t         type;
     uint16_t         length;
     list(of_uint8_t) next_table_ids;
 };
 
-struct ofp_table_feature_prop_next_tables_miss {
+struct of_table_feature_prop_next_tables_miss {
     uint16_t         type;
     uint16_t         length;
     list(of_uint8_t) next_table_ids;
 };
 
-struct ofp_table_feature_prop_write_actions {
+struct of_table_feature_prop_write_actions {
     uint16_t         type;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
-struct ofp_table_feature_prop_write_actions_miss {
+struct of_table_feature_prop_write_actions_miss {
     uint16_t         type;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
-struct ofp_table_feature_prop_apply_actions {
+struct of_table_feature_prop_apply_actions {
     uint16_t         type;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
-struct ofp_table_feature_prop_apply_actions_miss {
+struct of_table_feature_prop_apply_actions_miss {
     uint16_t         type;
     uint16_t         length;
     list(of_action_id_t) action_ids;
 };
 
-struct ofp_table_feature_prop_match {
+struct of_table_feature_prop_match {
     uint16_t         type;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
-struct ofp_table_feature_prop_wildcards {
+struct of_table_feature_prop_wildcards {
     uint16_t         type;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
-struct ofp_table_feature_prop_write_setfield {
+struct of_table_feature_prop_write_setfield {
     uint16_t         type;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
-struct ofp_table_feature_prop_write_setfield_miss {
+struct of_table_feature_prop_write_setfield_miss {
     uint16_t         type;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
-struct ofp_table_feature_prop_apply_setfield {
+struct of_table_feature_prop_apply_setfield {
     uint16_t         type;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
-struct ofp_table_feature_prop_apply_setfield_miss {
+struct of_table_feature_prop_apply_setfield_miss {
     uint16_t         type;
     uint16_t         length;
     list(of_uint32_t) oxm_ids;
 };
 
-struct ofp_table_feature_prop_experimenter {
+struct of_table_feature_prop_experimenter {
     uint16_t         type;
     uint16_t         length;
     uint32_t         experimenter;
@@ -1442,7 +1442,7 @@
 };
 
 // Not yet supported
-// struct ofp_table_feature_prop_experimenter_miss {
+// struct of_table_feature_prop_experimenter_miss {
 //     uint16_t         type;
 //     uint16_t         length;
 //     uint32_t         experimenter;
@@ -1450,7 +1450,7 @@
 //     of_octets_t      experimenter_data;
 // };
 
-struct ofp_table_features {
+struct of_table_features {
     uint16_t length;
     uint8_t table_id;
     uint8_t[5] pad;
@@ -1462,7 +1462,7 @@
     list(of_table_feature_prop_t) properties;
 };
 
-struct ofp_meter_features {
+struct of_meter_features {
     uint32_t    max_meter;
     uint32_t    band_types;
     uint32_t    capabilities;
@@ -1471,7 +1471,7 @@
     uint8_t[2]     pad;
 };
 
-struct ofp_port_stats_request {
+struct of_port_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1483,7 +1483,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_port_stats_reply {
+struct of_port_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1494,7 +1494,7 @@
     list(of_port_stats_entry_t) entries;
 };
 
-struct ofp_queue_stats_request {
+struct of_queue_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1506,7 +1506,7 @@
     uint32_t queue_id;
 };
 
-struct ofp_queue_stats_reply {
+struct of_queue_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1517,7 +1517,7 @@
     list(of_queue_stats_entry_t) entries;
 };
 
-struct ofp_group_stats_request {
+struct of_group_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1529,7 +1529,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_stats_reply {
+struct of_group_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1540,7 +1540,7 @@
     list(of_group_stats_entry_t) entries;
 };
 
-struct ofp_group_desc_stats_request {
+struct of_group_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1550,7 +1550,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_desc_stats_reply {
+struct of_group_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1561,7 +1561,7 @@
     list(of_group_desc_stats_entry_t) entries;
 };
 
-struct ofp_group_features_stats_request {
+struct of_group_features_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1571,7 +1571,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_group_features_stats_reply {
+struct of_group_features_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1591,7 +1591,7 @@
     uint32_t actions_ff;
 };
 
-struct ofp_meter_stats_request {
+struct of_meter_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1603,7 +1603,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_meter_stats_reply {
+struct of_meter_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1614,7 +1614,7 @@
     list(of_meter_stats_t) entries;
 };
 
-struct ofp_meter_config_stats_request {
+struct of_meter_config_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1626,7 +1626,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_meter_config_stats_reply {
+struct of_meter_config_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1638,7 +1638,7 @@
 };
 
 // FIXME stats added to get things working
-struct ofp_meter_features_stats_request {
+struct of_meter_features_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1649,7 +1649,7 @@
 };
 
 // FIXME stats added to get things working
-struct ofp_meter_features_stats_reply {
+struct of_meter_features_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1661,7 +1661,7 @@
 };
 
 // FIXME stats added to get things working
-struct ofp_table_features_stats_request {
+struct of_table_features_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1673,7 +1673,7 @@
 };
 
 // FIXME stats added to get things working
-struct ofp_table_features_stats_reply {
+struct of_table_features_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1685,7 +1685,7 @@
 };
 
 // FIXME stats added to get things working
-struct ofp_port_desc_stats_request {
+struct of_port_desc_stats_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1696,7 +1696,7 @@
 };
 
 // FIXME stats added to get things working
-struct ofp_port_desc_stats_reply {
+struct of_port_desc_stats_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1707,12 +1707,12 @@
     list(of_port_desc_t) entries;
 };
 
-struct ofp_meter_band_stats {
+struct of_meter_band_stats {
     uint64_t        packet_band_count;
     uint64_t        byte_band_count;
 };
 
-struct ofp_meter_stats {
+struct of_meter_stats {
     uint32_t        meter_id;
     uint16_t        len;
     uint8_t[6]         pad;
@@ -1724,27 +1724,27 @@
     list(of_meter_band_stats_t) band_stats;
 };
 
-struct ofp_meter_config {
+struct of_meter_config {
     uint16_t        length;
     uint16_t        flags;
     uint32_t        meter_id;
     list(of_meter_band_t) entries;
 };
 
-struct ofp_experimenter_multipart_header {
+struct of_experimenter_multipart_header {
     uint32_t experimenter;
     uint32_t subtype;
 };
 
 // END OF STATS OBJECTS
 
-struct ofp_queue_prop {
+struct of_queue_prop {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
 };
 
-struct ofp_queue_prop_min_rate {
+struct of_queue_prop_min_rate {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -1752,7 +1752,7 @@
     uint8_t[6] pad;
 };
 
-struct ofp_queue_prop_max_rate {
+struct of_queue_prop_max_rate {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -1760,7 +1760,7 @@
     uint8_t[6] pad;
 };
 
-struct ofp_queue_prop_experimenter {
+struct of_queue_prop_experimenter {
     uint16_t type;
     uint16_t len;
     uint8_t[4] pad;
@@ -1769,7 +1769,7 @@
     of_octets_t data;
 };
 
-struct ofp_packet_queue {
+struct of_packet_queue {
     uint32_t queue_id;
     of_port_no_t port;
     uint16_t len;
@@ -1777,7 +1777,7 @@
     list(of_queue_prop_t) properties;
 };
 
-struct ofp_queue_get_config_request {
+struct of_queue_get_config_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1786,7 +1786,7 @@
     uint8_t[4] pad;
 };
 
-struct ofp_queue_get_config_reply {
+struct of_queue_get_config_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1796,7 +1796,7 @@
     list(of_packet_queue_t) queues;
 };
 
-struct ofp_role_request {
+struct of_role_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1806,7 +1806,7 @@
     uint64_t generation_id;
 };
 
-struct ofp_role_reply {
+struct of_role_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1821,7 +1821,7 @@
 //   while uint32_t[1] is interest for slave
 ////////////////////////////////////////////////////////////////
 
-struct ofp_async_get_request {
+struct of_async_get_request {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1834,7 +1834,7 @@
     uint32_t flow_removed_mask_slave;
 };
 
-struct ofp_async_get_reply {
+struct of_async_get_reply {
     uint8_t version;
     uint8_t type;
     uint16_t length;
@@ -1847,7 +1847,7 @@
     uint32_t flow_removed_mask_slave;
 };
 
-struct ofp_async_set {
+struct of_async_set {
     uint8_t version;
     uint8_t type;
     uint16_t length;
