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