Initial import

LoxiGen is the work of several developers, not just myself.
diff --git a/openflow_input/standard-1.0 b/openflow_input/standard-1.0
new file mode 100644
index 0000000..943d840
--- /dev/null
+++ b/openflow_input/standard-1.0
@@ -0,0 +1,669 @@
+// Copyright 2013, Big Switch Networks, Inc.
+//
+// LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
+// the following special exception:
+//
+// LOXI Exception
+//
+// As a special exception to the terms of the EPL, you may distribute libraries
+// generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
+// that copyright and licensing notices generated by LoxiGen are not altered or removed
+// from the LoxiGen Libraries and the notice provided below is (i) included in
+// the LoxiGen Libraries, if distributed in source code form and (ii) included in any
+// documentation for the LoxiGen Libraries, if distributed in binary form.
+//
+// Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
+//
+// You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
+// a copy of the EPL at:
+//
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// EPL for the specific language governing permissions and limitations
+// under the EPL.
+
+#version 1
+
+struct ofp_header {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+};
+
+struct ofp_hello {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+};
+
+struct ofp_echo_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_octets_t data;
+};
+
+struct ofp_echo_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_octets_t data;
+};
+
+struct ofp_experimenter {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint32_t experimenter;
+    uint32_t subtype;
+    of_octets_t data;
+};
+
+struct ofp_barrier_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+};
+
+struct ofp_barrier_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+};
+
+struct ofp_get_config_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+};
+
+struct ofp_get_config_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t flags;
+    uint16_t miss_send_len;
+};
+
+struct ofp_set_config {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t flags;
+    uint16_t miss_send_len;
+};
+
+struct ofp_port_desc {
+    of_port_no_t port_no;
+    of_mac_addr_t hw_addr;
+    of_port_name_t name;
+    uint32_t config;
+    uint32_t state;
+    uint32_t curr;
+    uint32_t advertised;
+    uint32_t supported;
+    uint32_t peer;
+};
+
+struct ofp_features_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+};
+
+struct ofp_features_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint64_t datapath_id;
+    uint32_t n_buffers;
+    uint8_t n_tables;
+    uint8_t[3] pad;
+    uint32_t capabilities;
+    uint32_t actions;
+    list(of_port_desc_t) ports;
+};
+
+struct ofp_port_status {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint8_t reason;
+    uint8_t[7] pad;
+    of_port_desc_t desc;
+};
+
+struct ofp_port_mod {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_port_no_t port_no;
+    of_mac_addr_t hw_addr;
+    uint32_t config;
+    uint32_t mask;
+    uint32_t advertise;
+    uint8_t[4] pad;
+};
+
+struct ofp_packet_in {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint32_t buffer_id;
+    uint16_t total_len;
+    of_port_no_t in_port;
+    uint8_t reason;
+    uint8_t pad;
+    of_octets_t data;
+};
+
+struct ofp_action_output {
+    uint16_t type;
+    uint16_t len;
+    of_port_no_t port;
+    uint16_t max_len;
+};
+
+struct ofp_action_set_vlan_vid {
+    uint16_t type;
+    uint16_t len;
+    uint16_t vlan_vid;
+    uint8_t[2] pad;
+};
+
+struct ofp_action_strip_vlan {
+    uint16_t type;
+    uint16_t len;
+    uint8_t[4] pad;
+};
+
+struct ofp_action_set_vlan_pcp {
+    uint16_t type;
+    uint16_t len;
+    uint8_t vlan_pcp;
+    uint8_t[3] pad;
+};
+
+struct ofp_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 {
+    uint16_t type;
+    uint16_t len;
+    of_mac_addr_t dl_addr;
+    uint8_t[6] pad;
+};
+
+struct ofp_action_set_nw_src {
+    uint16_t type;
+    uint16_t len;
+    uint32_t nw_addr;
+};
+
+struct ofp_action_set_nw_dst {
+    uint16_t type;
+    uint16_t len;
+    uint32_t nw_addr;
+};
+
+struct ofp_action_set_tp_src {
+    uint16_t type;
+    uint16_t len;
+    uint16_t tp_port;
+    uint8_t[2] pad;
+};
+
+struct ofp_action_set_tp_dst {
+    uint16_t type;
+    uint16_t len;
+    uint16_t tp_port;
+    uint8_t[2] pad;
+};
+
+struct ofp_action_set_nw_tos {
+    uint16_t type;
+    uint16_t len;
+    uint8_t nw_tos;
+    uint8_t[3] pad;
+};
+
+struct ofp_action_experimenter {
+    uint16_t type;
+    uint16_t len;
+    uint32_t experimenter;
+    of_octets_t data;
+};
+
+struct ofp_action_enqueue {
+    uint16_t type;
+    uint16_t len;
+    of_port_no_t port;
+    uint8_t[6] pad;
+    uint32_t queue_id;
+};
+
+struct ofp_action {
+    uint16_t type;
+    uint16_t len;
+    uint8_t[4] pad;
+};
+
+struct ofp_packet_out {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint32_t buffer_id;
+    of_port_no_t in_port;
+    uint16_t actions_len;
+    list(of_action_t) actions;
+    of_octets_t data;
+};
+
+struct ofp_match_v1 {
+    of_wc_bmap_t wildcards;
+    of_port_no_t in_port;
+    of_mac_addr_t eth_src;
+    of_mac_addr_t eth_dst;
+    uint16_t vlan_vid;
+    uint8_t vlan_pcp;
+    uint8_t[1] pad1;
+    uint16_t eth_type;
+    uint8_t ip_dscp;
+    uint8_t ip_proto;
+    uint8_t[2] pad2;
+    uint32_t ipv4_src;
+    uint32_t ipv4_dst;
+    uint16_t tcp_src;
+    uint16_t tcp_dst;
+};
+
+struct ofp_flow_add {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_match_t match;
+    uint64_t cookie;
+    of_fm_cmd_t _command;
+    uint16_t idle_timeout;
+    uint16_t hard_timeout;
+    uint16_t priority;
+    uint32_t buffer_id;
+    of_port_no_t out_port;
+    uint16_t flags;
+    list(of_action_t) actions;
+};
+
+struct ofp_flow_modify {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_match_t match;
+    uint64_t cookie;
+    of_fm_cmd_t _command;
+    uint16_t idle_timeout;
+    uint16_t hard_timeout;
+    uint16_t priority;
+    uint32_t buffer_id;
+    of_port_no_t out_port;
+    uint16_t flags;
+    list(of_action_t) actions;
+};
+
+struct ofp_flow_modify_strict {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_match_t match;
+    uint64_t cookie;
+    of_fm_cmd_t _command;
+    uint16_t idle_timeout;
+    uint16_t hard_timeout;
+    uint16_t priority;
+    uint32_t buffer_id;
+    of_port_no_t out_port;
+    uint16_t flags;
+    list(of_action_t) actions;
+};
+
+struct ofp_flow_delete {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_match_t match;
+    uint64_t cookie;
+    of_fm_cmd_t _command;
+    uint16_t idle_timeout;
+    uint16_t hard_timeout;
+    uint16_t priority;
+    uint32_t buffer_id;
+    of_port_no_t out_port;
+    uint16_t flags;
+    list(of_action_t) actions;
+};
+
+struct ofp_flow_delete_strict {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_match_t match;
+    uint64_t cookie;
+    of_fm_cmd_t _command;
+    uint16_t idle_timeout;
+    uint16_t hard_timeout;
+    uint16_t priority;
+    uint32_t buffer_id;
+    of_port_no_t out_port;
+    uint16_t flags;
+    list(of_action_t) actions;
+};
+
+struct ofp_flow_removed {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_match_t match;
+    uint64_t cookie;
+    uint16_t priority;
+    uint8_t reason;
+    uint8_t[1] pad;
+    uint32_t duration_sec;
+    uint32_t duration_nsec;
+    uint16_t idle_timeout;
+    uint8_t[2] pad2;
+    uint64_t packet_count;
+    uint64_t byte_count;
+};
+
+struct ofp_error_msg {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t err_type;
+    uint16_t code;
+    of_octets_t data;
+};
+
+// STATS ENTRIES: flow, table, port, queue,
+struct ofp_flow_stats_entry {
+    uint16_t length;
+    uint8_t table_id;
+    uint8_t pad;
+    of_match_t match;
+    uint32_t duration_sec;
+    uint32_t duration_nsec;
+    uint16_t priority;
+    uint16_t idle_timeout;
+    uint16_t hard_timeout;
+    uint8_t[6] pad2;
+    uint64_t cookie;
+    uint64_t packet_count;
+    uint64_t byte_count;
+    list(of_action_t) actions;
+};
+
+struct ofp_table_stats_entry {
+    uint8_t table_id;
+    uint8_t[3] pad;
+    of_table_name_t name;
+    of_wc_bmap_t wildcards;
+    uint32_t max_entries;
+    uint32_t active_count;
+    uint64_t lookup_count;
+    uint64_t matched_count;
+};
+
+struct ofp_port_stats_entry {
+    of_port_no_t port_no;
+    uint8_t[6] pad;
+    uint64_t rx_packets;
+    uint64_t tx_packets;
+    uint64_t rx_bytes;
+    uint64_t tx_bytes;
+    uint64_t rx_dropped;
+    uint64_t tx_dropped;
+    uint64_t rx_errors;
+    uint64_t tx_errors;
+    uint64_t rx_frame_err;
+    uint64_t rx_over_err;
+    uint64_t rx_crc_err;
+    uint64_t collisions;
+};
+
+struct ofp_queue_stats_entry {
+    of_port_no_t port_no;
+    uint8_t[2] pad;
+    uint32_t queue_id;
+    uint64_t tx_bytes;
+    uint64_t tx_packets;
+    uint64_t tx_errors;
+};
+
+// STATS request/reply:  Desc, flow, agg, table, port, queue
+
+struct ofp_desc_stats_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+};
+
+struct ofp_desc_stats_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    of_desc_str_t mfr_desc;
+    of_desc_str_t hw_desc;
+    of_desc_str_t sw_desc;
+    of_serial_num_t serial_num;
+    of_desc_str_t dp_desc;
+};
+
+struct ofp_flow_stats_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    of_match_t match;
+    uint8_t table_id;
+    uint8_t pad;
+    of_port_no_t out_port;
+};
+
+struct ofp_flow_stats_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    list(of_flow_stats_entry_t) entries;
+};
+
+struct ofp_aggregate_stats_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    of_match_t match;
+    uint8_t table_id;
+    uint8_t pad;
+    of_port_no_t out_port;
+};
+
+struct ofp_aggregate_stats_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    uint64_t packet_count;
+    uint64_t byte_count;
+    uint32_t flow_count;
+    uint8_t[4] pad;
+};
+
+struct ofp_table_stats_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+};
+
+struct ofp_table_stats_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    list(of_table_stats_entry_t) entries;
+};
+
+struct ofp_port_stats_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    of_port_no_t port_no;
+    uint8_t[6] pad;
+};
+
+struct ofp_port_stats_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    list(of_port_stats_entry_t) entries;
+};
+
+struct ofp_queue_stats_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    of_port_no_t port_no;
+    uint8_t[2] pad;
+    uint32_t queue_id;
+};
+
+struct ofp_queue_stats_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    list(of_queue_stats_entry_t) entries;
+};
+
+struct ofp_experimenter_stats_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    uint32_t experimenter;
+    of_octets_t data;
+};
+
+struct ofp_experimenter_stats_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type;
+    uint16_t flags;
+    uint32_t experimenter;
+    of_octets_t data;
+};
+
+// END OF STATS OBJECTS
+
+struct ofp_queue_prop {
+    uint16_t type;
+    uint16_t len;
+    uint8_t[4] pad;
+};
+
+struct ofp_queue_prop_min_rate {
+    uint16_t type;
+    uint16_t len;
+    uint8_t[4] pad;
+    uint16_t rate;
+    uint8_t[6] pad;
+};
+
+struct ofp_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 {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_port_no_t port;
+    uint8_t[2] pad;
+};
+
+struct ofp_queue_get_config_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    of_port_no_t port;
+    uint8_t[6] pad;
+    list(of_packet_queue_t) queues;
+};