blob: 943d840f08dc5f46a051dedcf62d4e1b037ceab4 [file] [log] [blame]
// 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;
};