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;
+};