// Copyright 2013-2017, 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 4
#version 5
#version 6

struct of_bsn_tlv_port : of_bsn_tlv {
    uint16_t type == 0;
    uint16_t length;
    of_port_no_t value;
};

struct of_bsn_tlv_mac : of_bsn_tlv {
    uint16_t type == 1;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_rx_packets : of_bsn_tlv {
    uint16_t type == 2;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_tx_packets : of_bsn_tlv {
    uint16_t type == 3;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_ipv4 : of_bsn_tlv {
    uint16_t type == 4;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_idle_time : of_bsn_tlv {
    uint16_t type == 5;
    uint16_t length;
    uint64_t value; /* Milliseconds */
};

struct of_bsn_tlv_vlan_vid : of_bsn_tlv {
    uint16_t type == 6;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_idle_notification : of_bsn_tlv {
    uint16_t type == 7;
    uint16_t length;
};

struct of_bsn_tlv_idle_timeout : of_bsn_tlv {
    uint16_t type == 8;
    uint16_t length;
    uint32_t value; /* Milliseconds */
};

struct of_bsn_tlv_unicast_query_timeout : of_bsn_tlv {
    uint16_t type == 9;
    uint16_t length;
    uint32_t value; /* Milliseconds */
};

struct of_bsn_tlv_broadcast_query_timeout : of_bsn_tlv {
    uint16_t type == 10;
    uint16_t length;
    uint32_t value; /* Milliseconds */
};

struct of_bsn_tlv_request_packets : of_bsn_tlv {
    uint16_t type == 11;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_reply_packets : of_bsn_tlv {
    uint16_t type == 12;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_miss_packets : of_bsn_tlv {
    uint16_t type == 13;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_circuit_id : of_bsn_tlv {
    uint16_t type == 14;
    uint16_t length;
    of_octets_t value;
};

struct of_bsn_tlv_udf_id : of_bsn_tlv {
    uint16_t type == 15;
    uint16_t length;
    uint16_t value;
};

enum ofp_bsn_udf_anchor(wire_type=uint16_t) {
    OFP_BSN_UDF_ANCHOR_PACKET_START = 0,
    OFP_BSN_UDF_ANCHOR_L3_HEADER_START = 1,
    OFP_BSN_UDF_ANCHOR_L4_HEADER_START = 2,
};

struct of_bsn_tlv_udf_anchor : of_bsn_tlv {
    uint16_t type == 16;
    uint16_t length;
    enum ofp_bsn_udf_anchor value;
};

struct of_bsn_tlv_udf_offset : of_bsn_tlv {
    uint16_t type == 17;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_udf_length : of_bsn_tlv {
    uint16_t type == 18;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_vrf : of_bsn_tlv {
    uint16_t type == 19;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_queue_id : of_bsn_tlv {
    uint16_t type == 20;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_queue_weight : of_bsn_tlv {
    uint16_t type == 21;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_crc_enabled : of_bsn_tlv {
    uint16_t type == 22;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_external_ip : of_bsn_tlv {
    uint16_t type == 23;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_external_mac : of_bsn_tlv {
    uint16_t type == 24;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_external_netmask : of_bsn_tlv {
    uint16_t type == 25;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_external_gateway_ip : of_bsn_tlv {
    uint16_t type == 26;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_internal_mac : of_bsn_tlv {
    uint16_t type == 27;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_internal_gateway_mac : of_bsn_tlv {
    uint16_t type == 28;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_external_gateway_mac : of_bsn_tlv {
    uint16_t type == 29;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_sampling_rate : of_bsn_tlv {
    uint16_t type == 30;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_header_size : of_bsn_tlv {
    uint16_t type == 31;
    uint16_t length;
    uint32_t value; /* bytes */
};

struct of_bsn_tlv_eth_src : of_bsn_tlv {
    uint16_t type == 32;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_eth_dst : of_bsn_tlv {
    uint16_t type == 33;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_ipv4_src : of_bsn_tlv {
    uint16_t type == 34;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_ipv4_dst : of_bsn_tlv {
    uint16_t type == 35;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_udp_src : of_bsn_tlv {
    uint16_t type == 36;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_udp_dst : of_bsn_tlv {
    uint16_t type == 37;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_sub_agent_id : of_bsn_tlv {
    uint16_t type == 38;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_tx_bytes : of_bsn_tlv {
    uint16_t type == 39;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_actor_system_priority: of_bsn_tlv {
    uint16_t type == 40;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_actor_system_mac: of_bsn_tlv {
    uint16_t type == 41;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_actor_port_priority: of_bsn_tlv {
    uint16_t type == 42;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_actor_port_num: of_bsn_tlv {
    uint16_t type == 43;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_actor_key: of_bsn_tlv {
    uint16_t type == 44;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_convergence_status: of_bsn_tlv {
    uint16_t type == 45;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_partner_system_priority: of_bsn_tlv {
    uint16_t type == 47;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_partner_system_mac: of_bsn_tlv {
    uint16_t type == 48;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_partner_port_priority: of_bsn_tlv {
    uint16_t type == 49;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_partner_port_num: of_bsn_tlv {
    uint16_t type == 50;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_partner_key: of_bsn_tlv {
    uint16_t type == 51;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_name : of_bsn_tlv {
    uint16_t type == 52;
    uint16_t length;
    of_octets_t value; /* UTF-8 encoded. Not null terminated. */
};

enum ofp_bsn_lacp_state(wire_type=uint8_t, bitmask=True) {
    OFP_BSN_LACP_STATE_ACTIVITY = 0x01,
    OFP_BSN_LACP_STATE_TIMEOUT = 0x02,
    OFP_BSN_LACP_STATE_AGGREGATION = 0x04,
    OFP_BSN_LACP_STATE_SYNCHRONIZATION = 0x08,
    OFP_BSN_LACP_STATE_COLLECTING = 0x10,
    OFP_BSN_LACP_STATE_DISTRIBUTING = 0x20,
    OFP_BSN_LACP_STATE_DEFAULTED = 0x40,
    OFP_BSN_LACP_STATE_EXPIRED = 0x80,
};

struct of_bsn_tlv_actor_state: of_bsn_tlv {
    uint16_t type == 53;
    uint16_t length;
    enum ofp_bsn_lacp_state value;
};

struct of_bsn_tlv_partner_state: of_bsn_tlv {
    uint16_t type == 54;
    uint16_t length;
    enum ofp_bsn_lacp_state value;
};

struct of_bsn_tlv_data : of_bsn_tlv {
    uint16_t type == 55;
    uint16_t length;
    of_octets_t value;
};

struct of_bsn_tlv_mac_mask : of_bsn_tlv {
    uint16_t type == 56;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_priority : of_bsn_tlv {
    uint16_t type == 57;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_interval : of_bsn_tlv {
    uint16_t type == 58;
    uint16_t length;
    uint32_t value; /* Milliseconds */
};

/* A reference to an entry in another gentable */
struct of_bsn_tlv_reference : of_bsn_tlv {
    uint16_t type == 59;
    uint16_t length;
    uint16_t table_id;
    list(of_bsn_tlv_t) key;
};

struct of_bsn_tlv_ipv4_netmask : of_bsn_tlv {
    uint16_t type == 60;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_mpls_label : of_bsn_tlv {
    uint16_t type == 61;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_mpls_control_word : of_bsn_tlv {
    uint16_t type == 62;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_mpls_sequenced : of_bsn_tlv {
    uint16_t type == 63;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_bucket : of_bsn_tlv {
    uint16_t type == 64;
    uint16_t length;
    list(of_bsn_tlv_t) value;
};

struct of_bsn_tlv_tcp_src : of_bsn_tlv {
    uint16_t type == 65;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_tcp_dst : of_bsn_tlv {
    uint16_t type == 66;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_ip_proto : of_bsn_tlv {
    uint16_t type == 67;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_icmp_type : of_bsn_tlv {
    uint16_t type == 68;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_icmp_code : of_bsn_tlv {
    uint16_t type == 69;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_icmp_id : of_bsn_tlv {
    uint16_t type == 70;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_rx_bytes : of_bsn_tlv {
    uint16_t type == 71;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_vlan_pcp : of_bsn_tlv {
    uint16_t type == 72;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_strip_vlan_on_egress : of_bsn_tlv {
    uint16_t type == 73;
    uint16_t length;
};

struct of_bsn_tlv_set_loopback_mode: of_bsn_tlv {
    uint16_t type == 74;
    uint16_t length;
};

struct of_bsn_tlv_strip_mpls_l2_on_ingress : of_bsn_tlv {
    uint16_t type == 75;
    uint16_t length;
};

struct of_bsn_tlv_strip_mpls_l3_on_ingress : of_bsn_tlv {
    uint16_t type == 76;
    uint16_t length;
};

struct of_bsn_tlv_vlan_vid_mask : of_bsn_tlv {
    uint16_t type == 77;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_igmp_snooping : of_bsn_tlv {
    uint16_t type == 78;
    uint16_t length;
};

struct of_bsn_tlv_l2_multicast_lookup : of_bsn_tlv {
    uint16_t type == 79;
    uint16_t length;
};

struct of_bsn_tlv_generation_id : of_bsn_tlv {
    uint16_t type == 80;
    uint16_t length;
    uint64_t value;
};

enum ofp_bsn_anchor(wire_type=uint16_t) {
    OFP_BSN_ANCHOR_PACKET_START = 0,
    OFP_BSN_ANCHOR_L3_HEADER_START = 1,
    OFP_BSN_ANCHOR_L4_HEADER_START = 2,
    OFP_BSN_ANCHOR_L4_PAYLOAD_START = 3,
};

struct of_bsn_tlv_anchor : of_bsn_tlv {
    uint16_t type == 81;
    uint16_t length;
    enum ofp_bsn_anchor value;
};

struct of_bsn_tlv_offset : of_bsn_tlv {
    uint16_t type == 82;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_negate : of_bsn_tlv {
    uint16_t type == 83;
    uint16_t length;
};

struct of_bsn_tlv_ipv6 : of_bsn_tlv {
    uint16_t type == 84;
    uint16_t length;
    of_ipv6_t value;
};

enum ofp_bsn_decap(wire_type=uint16_t) {
    OFP_BSN_DECAP_VXLAN = 0,
    OFP_BSN_DECAP_ERSPAN = 1,
    OFP_BSN_DECAP_L2_GRE = 2,
    OFP_BSN_DECAP_NVGRE = 3,
    OFP_BSN_DECAP_CAPWAP = 4,
    OFP_BSN_DECAP_L2_MPLS = 5,
    OFP_BSN_DECAP_L3_GRE = 6,
    OFP_BSN_DECAP_GTP = 7,
    OFP_BSN_DECAP_L3_MPLS = 8,
};

struct of_bsn_tlv_decap : of_bsn_tlv {
    uint16_t type == 85;
    uint16_t length;
    enum ofp_bsn_decap value;
};

struct of_bsn_tlv_vni : of_bsn_tlv {
    uint16_t type == 86;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_mcg_type_vxlan : of_bsn_tlv {
    uint16_t type == 87;
    uint16_t length;
};

enum ofp_bsn_port_vxlan_mode(wire_type=uint8_t) {
    OFP_BSN_PORT_VXLAN_RECIRCULATION_ENABLE = 0,
    OFP_BSN_PORT_VXLAN_TERMINATION_ENABLE = 1,
};

struct of_bsn_tlv_port_vxlan_mode : of_bsn_tlv {
    uint16_t type == 88;
    uint16_t length;
    enum ofp_bsn_port_vxlan_mode value;
};

enum ofp_bsn_rate_unit(wire_type=uint8_t) {
    OFP_BSN_RATE_UNIT_PPS = 0, /* Packets per second */
    OFP_BSN_RATE_UNIT_KBITPS = 1, /* Kilobits per second */
};

struct of_bsn_tlv_rate_unit : of_bsn_tlv {
    uint16_t type == 89;
    uint16_t length;
    enum ofp_bsn_rate_unit value;
};

struct of_bsn_tlv_broadcast_rate : of_bsn_tlv {
    uint16_t type == 90;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_known_multicast_rate : of_bsn_tlv {
    uint16_t type == 91;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_unknown_multicast_rate : of_bsn_tlv {
    uint16_t type == 92;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_unicast_rate : of_bsn_tlv {
    uint16_t type == 93;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_nexthop_type_vxlan : of_bsn_tlv {
    uint16_t type == 94;
    uint16_t length;
};

struct of_bsn_tlv_multicast_interface_id : of_bsn_tlv {
    uint16_t type == 95;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_use_packet_state : of_bsn_tlv {
    uint16_t type == 96;
    uint16_t length;
    uint8_t value;
};

enum ofp_bsn_status(wire_type=uint8_t) {
    OFP_BSN_STATUS_DISABLE = 0,
    OFP_BSN_STATUS_ENABLE = 1,
};

struct of_bsn_tlv_status: of_bsn_tlv {
    uint16_t type == 97;
    uint16_t length;
    enum ofp_bsn_status value;
};

struct of_bsn_vlan_mac {
    uint16_t vlan_vid;
    of_mac_addr_t mac;
};

struct of_bsn_tlv_vlan_mac_list : of_bsn_tlv {
    uint16_t type == 98;
    uint16_t length;
    list(of_bsn_vlan_mac_t) key;
};

struct of_bsn_tlv_vfi : of_bsn_tlv {
    uint16_t type == 99;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_hash_seed : of_bsn_tlv {
    uint16_t type == 100;
    uint16_t length;
    uint32_t seed1;
    uint32_t seed2;
};

enum of_bsn_hash_type(wire_type=uint8_t) {
    OFP_BSN_HASH_TYPE_L2 = 0,
    OFP_BSN_HASH_TYPE_L3 = 1,
    OFP_BSN_HASH_TYPE_ENHANCED = 2,
};

struct of_bsn_tlv_hash_type : of_bsn_tlv {
    uint16_t type == 101;
    uint16_t length;
    enum of_bsn_hash_type value;
};

enum of_bsn_hash_packet_type(wire_type=uint8_t) {
    OF_BSN_HASH_PACKET_L2 = 0,
    OF_BSN_HASH_PACKET_L2GRE = 1,
    OF_BSN_HASH_PACKET_IPV4 = 3,
    OF_BSN_HASH_PACKET_IPV6 = 4,
    OF_BSN_HASH_PACKET_MPLS = 5,
    OF_BSN_HASH_PACKET_SYMMETRIC = 6,
};

struct of_bsn_tlv_hash_packet_type : of_bsn_tlv {
    uint16_t type == 102;
    uint16_t length;
    enum of_bsn_hash_packet_type value;
};

enum of_bsn_hash_packet_field(wire_type=uint64_t, bitmask=True) {
    // 0x1 is unused
    OFP_BSN_HASH_FIELD_DST_MAC =     0x2,
    OFP_BSN_HASH_FIELD_SRC_MAC =     0x4,
    OFP_BSN_HASH_FIELD_ETH_TYPE =    0x8,
    OFP_BSN_HASH_FIELD_VLAN_ID =     0x10,
    OFP_BSN_HASH_FIELD_INNER_L2 =    0x20,
    OFP_BSN_HASH_FIELD_INNER_L3 =    0x40,
    OFP_BSN_HASH_FIELD_SRC_IP =      0x80,
    OFP_BSN_HASH_FIELD_DST_IP =      0x100,
    OFP_BSN_HASH_FIELD_IP_PROTO =    0x200,
    OFP_BSN_HASH_FIELD_SRC_L4_PORT = 0x400,
    OFP_BSN_HASH_FIELD_DST_L4_PORT = 0x800,
    OFP_BSN_HASH_FIELD_MPLS_LABEL1 = 0x1000,
    OFP_BSN_HASH_FIELD_MPLS_LABEL2 = 0x2000,
    OFP_BSN_HASH_FIELD_MPLS_LABEL3 = 0x4000,
    OFP_BSN_HASH_FIELD_MPLS_LABEL_HI_BITS  = 0x8000,
    OFP_BSN_HASH_FIELD_MPLS_PAYLOAD_SRC_IP = 0x10000,
    OFP_BSN_HASH_FIELD_MPLS_PAYLOAD_DST_IP = 0x20000,
    OFP_BSN_HASH_FIELD_SYMMETRIC =           0x40000,
};

struct of_bsn_tlv_hash_packet_field : of_bsn_tlv {
    uint16_t type == 103;
    uint16_t length;
    enum of_bsn_hash_packet_field value;
};

struct of_bsn_tlv_hash_gtp_header_match : of_bsn_tlv {
    uint16_t type == 104;
    uint16_t length;
    uint8_t first_header_byte;
    uint8_t first_header_mask;
};

enum of_bsn_hash_gtp_port_match(wire_type=uint8_t) {
    OF_BSN_HASH_GTP_PORT_MATCH_SRC = 1,
    OF_BSN_HASH_GTP_PORT_MATCH_DST = 2,
    OF_BSN_HASH_GTP_PORT_MATCH_SRC_OR_DST = 3,
    OF_BSN_HASH_GTP_PORT_MATCH_SRC_AND_DST = 4,
};

struct of_bsn_tlv_hash_gtp_port_match : of_bsn_tlv {
    uint16_t type == 105;
    uint16_t length;
    enum of_bsn_hash_gtp_port_match match;
    uint16_t src_port;
    uint16_t dst_port;
};

struct of_bsn_tlv_untagged : of_bsn_tlv {
    uint16_t type == 106;
    uint16_t length;
};

struct of_bsn_tlv_vfp_class_id : of_bsn_tlv {
    uint16_t type == 107;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_qos_priority : of_bsn_tlv {
    uint16_t type == 108;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_parent_port : of_bsn_tlv {
    uint16_t type == 109;
    uint16_t length;
    of_port_no_t value;
};

struct of_bsn_tlv_loopback_port : of_bsn_tlv {
    uint16_t type == 110;
    uint16_t length;
    of_port_no_t value;
};

struct of_bsn_tlv_vpn_key : of_bsn_tlv {
    uint16_t type == 111;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_dscp : of_bsn_tlv {
    uint16_t type == 112;
    uint16_t length;
    uint16_t value;  // 0-63
};

struct of_bsn_tlv_ttl : of_bsn_tlv {
    uint16_t type == 113;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_next_hop_mac : of_bsn_tlv {
    uint16_t type == 114;
    uint16_t length;
    of_mac_addr_t value;
};

struct of_bsn_tlv_next_hop_ipv4 : of_bsn_tlv {
    uint16_t type == 115;
    uint16_t length;
    of_ipv4_t value;
};

struct of_bsn_tlv_rate_limit : of_bsn_tlv {
    uint16_t type == 116;
    uint16_t length;
    uint32_t value;  // in Kbps
};

struct of_bsn_tlv_vxlan_egress_lag : of_bsn_tlv {
    uint16_t type == 117;
    uint16_t length;
};

struct of_bsn_tlv_cpu_lag : of_bsn_tlv {
    uint16_t type == 118;
    uint16_t length;
};

struct of_bsn_tlv_uint64_list : of_bsn_tlv {
    uint16_t type == 119;
    uint16_t length;
    list(of_uint64_t) value;
};

struct of_bsn_tlv_disable_src_mac_check : of_bsn_tlv {
    uint16_t type == 120;
    uint16_t length;
};

struct of_bsn_tlv_drop : of_bsn_tlv {
    uint16_t type == 121;
    uint16_t length;
};

struct of_bsn_tlv_ipv6_prefix : of_bsn_tlv {
    uint16_t type == 122;
    uint16_t length;
    of_ipv6_t value;
    uint8_t prefix_length;
};

struct of_bsn_tlv_ndp_offload : of_bsn_tlv {
    uint16_t type == 123;
    uint16_t length;
};

struct of_bsn_tlv_ndp_static : of_bsn_tlv {
    uint16_t type == 124;
    uint16_t length;
};

struct of_bsn_tlv_icmpv6_chksum : of_bsn_tlv {
    uint16_t type == 125;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_ipv6_src : of_bsn_tlv {
    uint16_t type == 126;
    uint16_t length;
    of_ipv6_t value;
};

struct of_bsn_tlv_ipv6_dst : of_bsn_tlv {
    uint16_t type == 127;
    uint16_t length;
    of_ipv6_t value;
};

struct of_bsn_tlv_push_vlan_on_ingress : of_bsn_tlv {
    uint16_t type == 128;
    uint16_t length;
};

// apply_packets and apply_bytes are stat counters, like rx_packet
// identifies packets and bytes applied to some action, for example:
// packets with inet L3/L4 headers for netflow

struct of_bsn_tlv_apply_packets : of_bsn_tlv {
    uint16_t type == 129;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_apply_bytes : of_bsn_tlv {
    uint16_t type == 130;
    uint16_t length;
    uint64_t value;
};

struct of_bsn_tlv_eth_type : of_bsn_tlv {
    uint16_t type == 131;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_ecn : of_bsn_tlv {
    uint16_t type == 132;
    uint16_t length;
    uint8_t value;
};

struct of_bsn_tlv_tcp_flags : of_bsn_tlv {
    uint16_t type == 133;
    uint16_t length;
    uint16_t value;
};

struct of_bsn_tlv_l3_interface_class_id : of_bsn_tlv {
    uint16_t type == 134;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_l3_src_class_id : of_bsn_tlv {
    uint16_t type == 135;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_l3_dst_class_id : of_bsn_tlv {
    uint16_t type == 136;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_egress_only : of_bsn_tlv {
    uint16_t type == 137;
    uint16_t length;
};

struct of_bsn_tlv_ingress_port_group_id : of_bsn_tlv {
    uint16_t type == 138;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_egress_port_group_id : of_bsn_tlv {
    uint16_t type == 139;
    uint16_t length;
    uint32_t value;
};

struct of_bsn_tlv_data_mask : of_bsn_tlv {
    uint16_t type == 140;
    uint16_t length;
    of_octets_t value;
};

enum ofp_bsn_port_usage(wire_type=uint16_t) {
    OFP_BSN_PORT_UNUSED = 0,
    OFP_BSN_PORT_TRANSMIT_ONLY = 1,
    OFP_BSN_PORT_RECEIVE_ONLY = 2,
    OFP_BSN_PORT_BIDIRECTION = 3,
};

struct of_bsn_tlv_port_usage : of_bsn_tlv {
    uint16_t type == 141;
    uint16_t length;
    enum ofp_bsn_port_usage value;
};

enum ofp_bsn_tunnel_type(wire_type=uint64_t, bitmask=True) {
    OFP_BSN_TUNNEL_L2GRE = 0x1,
};

struct of_bsn_tlv_tunnel_capability : of_bsn_tlv {
    uint16_t type == 142;
    uint16_t length;
    enum ofp_bsn_tunnel_type value;
};

enum ofp_bsn_enhanced_hash_type(wire_type=uint64_t, bitmask=True) {
    OFP_BSN_ENHANCED_HASH_L2 = 0x1,
    OFP_BSN_ENHANCED_HASH_L3 = 0x2,
    OFP_BSN_ENHANCED_HASH_L2GRE = 0x4,
    OFP_BSN_ENHANCED_HASH_MPLS = 0x8,
    OFP_BSN_ENHANCED_HASH_GTP = 0x10,
    OFP_BSN_ENHANCED_HASH_SYMMETRIC = 0x20,
};

struct of_bsn_tlv_enhanced_hash_capability : of_bsn_tlv {
    uint16_t type == 143;
    uint16_t length;
    enum ofp_bsn_enhanced_hash_type value;
};

enum ofp_bsn_auto_negotiation_type(wire_type=uint8_t) {
    OFP_BSN_AUTO_NEGOTIATION_DEFAULT = 0,
    OFP_BSN_AUTO_NEGOTIATION_ENABLE = 1,
    OFP_BSN_AUTO_NEGOTIATION_DISABLE = 2,
};

struct of_bsn_tlv_auto_negotiation : of_bsn_tlv {
    uint16_t type == 144;
    uint16_t length;
    enum ofp_bsn_auto_negotiation_type value;
};

enum ofp_bsn_hash_algorithm_type(wire_type=uint16_t) {
    OFP_BSN_HASH_ALGORITHM_CRC16XOR8 = 0,
    OFP_BSN_HASH_ALGORITHM_CRC16XOR4 = 1,
    OFP_BSN_HASH_ALGORITHM_CRC16XOR2 = 2,
    OFP_BSN_HASH_ALGORITHM_CRC16XOR1 = 3,
    OFP_BSN_HASH_ALGORITHM_CRC16 = 4,
    OFP_BSN_HASH_ALGORITHM_XOR16 = 5,
    OFP_BSN_HASH_ALGORITHM_CRC16CCITT = 6,
    OFP_BSN_HASH_ALGORITHM_CRC32LO = 7,
    OFP_BSN_HASH_ALGORITHM_CRC32HI = 8,
};

struct of_bsn_tlv_hash_algorithm : of_bsn_tlv {
    uint16_t type == 145;
    uint16_t length;
    enum ofp_bsn_hash_algorithm_type value;
};

enum ofp_bsn_loopback_mode(wire_type=uint8_t) {
    OFP_BSN_LOOPBACK_MODE_NONE = 0,
    OFP_BSN_LOOPBACK_MODE_MAC = 1,
    OFP_BSN_LOOPBACK_MODE_PHY = 2,
    OFP_BSN_LOOPBACK_MODE_PHY_REMOTE = 3,
};

struct of_bsn_tlv_loopback_mode : of_bsn_tlv {
    uint16_t type == 146;
    uint16_t length;
    enum ofp_bsn_loopback_mode value;
};

struct of_bsn_tlv_no_arp_response : of_bsn_tlv {
    uint16_t type == 147;
    uint16_t length;
};

struct of_bsn_tlv_no_ns_response : of_bsn_tlv {
    uint16_t type == 148;
    uint16_t length;
};

enum ofp_bsn_forward_error_correction_type(wire_type=uint8_t) {
    OFP_BSN_FORWARD_ERROR_CORRECTION_DEFAULT = 0,
    OFP_BSN_FORWARD_ERROR_CORRECTION_ENABLE = 1,
    OFP_BSN_FORWARD_ERROR_CORRECTION_DISABLE = 2,
};

struct of_bsn_tlv_forward_error_correction : of_bsn_tlv {
    uint16_t type == 149;
    uint16_t length;
    enum ofp_bsn_forward_error_correction_type value;
};

struct of_bsn_tlv_optics_always_enabled : of_bsn_tlv {
    uint16_t type == 150;
    uint16_t length;
};

struct of_bsn_tlv_force_link_up : of_bsn_tlv {
    uint16_t type == 151;
    uint16_t length;
};
