# 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.

# Map from LOXI types to Wireshark types
oftype_to_wireshark_type = {
    "char": "int8",
    "uint8_t": "uint8",
    "uint16_t": "uint16",
    "uint32_t": "uint32",
    "uint64_t": "uint64",
    "of_mac_addr_t": "ether",
    "of_ipv4_t": "ipv4",
    "of_ipv6_t": "ipv6",
    "of_port_name_t": "stringz",
    "of_table_name_t": "stringz",
    "of_desc_str_t": "stringz",
    "of_serial_num_t": "stringz",
    "of_octets_t": "bytes",
    "of_port_no_t": "uint32",
    "of_port_desc_t": "stringz",
    "of_bsn_vport_t": "bytes",
    "of_bsn_vport_q_in_q_t": "bytes",
    "of_fm_cmd_t": "uint16",
    "of_wc_bmap_t": "uint64",
    "of_match_bmap_t": "uint64",
    "of_match_t": "bytes",
    "of_oxm_t": "bytes",
    "of_meter_features_t": "bytes",
    "of_bitmap_128_t": "bytes",
}

# Map from LOXI type to Wireshark base
oftype_to_base = {
    "char": "DEC",
    "uint8_t": "DEC",
    "uint16_t": "DEC",
    "uint32_t": "DEC",
    "uint64_t": "DEC",
    "of_mac_addr_t": "NONE",
    "of_ipv4_t": "NONE",
    "of_ipv6_t": "NONE",
    "of_port_name_t": "NONE",
    "of_table_name_t": "NONE",
    "of_desc_str_t": "NONE",
    "of_serial_num_t": "NONE",
    "of_octets_t": "NONE",
    "of_port_no_t": "DEC",
    "of_port_desc_t": "NONE",
    "of_bsn_vport_t": "NONE",
    "of_bsn_vport_q_in_q_t": "NONE",
    "of_fm_cmd_t": "DEC",
    "of_wc_bmap_t": "HEX",
    "of_match_bmap_t": "HEX",
    "of_match_t": "NONE",
    "of_oxm_t": "NONE",
    "of_meter_features_t": "NONE",
    "of_bitmap_128_t": "NONE",
}

# Use enums for certain fields where it isn't specified in the LOXI input
class_field_to_enum = {
    ('of_flow_mod', 'type'): 'ofp_type',
    ('of_error_msg', 'type'): 'ofp_type',
    ('of_stats_request', 'type'): 'ofp_type',
    ('of_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_stats_request', 'flags'): 'ofp_stats_request_flags',
    ('of_stats_reply', 'type'): 'ofp_type',
    ('of_stats_reply', 'stats_type'): 'ofp_stats_type',
    ('of_stats_reply', 'flags'): 'ofp_stats_reply_flags',
    ('of_flow_mod', 'table_id'): 'ofp_table',
    ('of_flow_mod', '_command'): 'ofp_flow_mod_command',
    ('of_flow_mod', 'out_port'): 'ofp_port',
    ('of_flow_mod', 'out_group'): 'ofp_group',
    ('of_error_msg', 'err_type'): 'ofp_error_type',
    ('of_port_mod', 'type'): 'ofp_type',
    ('of_hello', 'type'): 'ofp_type',
    ('of_features_request', 'type'): 'ofp_type',
    ('of_features_reply', 'type'): 'ofp_type',
    ('of_barrier_request', 'type'): 'ofp_type',
    ('of_barrier_reply', 'type'): 'ofp_type',
    ('of_echo_request', 'type'): 'ofp_type',
    ('of_echo_reply', 'type'): 'ofp_type',
    ('of_match_v3', 'type'): 'ofp_match_type',
    ('of_action_set_nw_ttl', 'type'): 'ofp_action_type',
    ('of_action_set_field', 'type'): 'ofp_action_type',
    ('of_action_output', 'type'): 'ofp_action_type',
    ('of_action_group', 'type'): 'ofp_action_type',
    ('of_action_id', 'type'): 'ofp_action_type',
    ('of_instruction_apply_actions', 'type'): 'ofp_instruction_type',
    ('of_instruction_write_actions', 'type'): 'ofp_instruction_type',
    ('of_group_mod', 'group_type'): 'ofp_group_type',
    ('of_group_mod', 'type'): 'ofp_type',
    ('of_group_mod', 'command'): 'ofp_group_mod_command',
    ('of_group_mod', 'group_id'): 'ofp_group',
    ('of_packet_out', 'type'): 'ofp_type',
    ('of_packet_in', 'type'): 'ofp_type',
    ('of_packet_in', 'reason'): 'ofp_packet_in_reason',
    ('of_flow_stats_request', 'type'): 'ofp_type',
    ('of_flow_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_desc_stats_request', 'type'): 'ofp_type',
    ('of_desc_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_queue_stats_request', 'type'): 'ofp_type',
    ('of_queue_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_port_stats_request', 'type'): 'ofp_type',
    ('of_port_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_table_stats_request', 'type'): 'ofp_type',
    ('of_table_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_port_desc_stats_request', 'type'): 'ofp_type',
    ('of_port_desc_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_meter_stats_request', 'type'): 'ofp_type',
    ('of_meter_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_meter_features_stats_request', 'type'): 'ofp_type',
    ('of_meter_features_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_meter_config_stats_request', 'type'): 'ofp_type',
    ('of_meter_config_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_group_stats_request', 'type'): 'ofp_type',
    ('of_group_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_group_features_stats_request', 'type'): 'ofp_type',
    ('of_group_features_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_group_desc_stats_request', 'type'): 'ofp_type',
    ('of_group_desc_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_aggregate_stats_request', 'type'): 'ofp_type',
    ('of_aggregate_stats_request', 'stats_type'): 'ofp_stats_type',
    ('of_async_get_request', 'type'): 'ofp_type',
    ('of_flow_stats_reply', 'type'): 'ofp_type',
    ('of_flow_stats_reply', 'stats_type'): 'ofp_stats_type',
    ('of_desc_stats_reply', 'type'): 'ofp_type',
    ('of_desc_stats_reply', 'stats_type'): 'ofp_stats_type',
    ('of_queue_stats_reply', 'type'): 'ofp_type',
    ('of_queue_stats_reply', 'stats_type'): 'ofp_stats_type',
    ('of_port_stats_reply', 'type'): 'ofp_type',
    ('of_port_stats_reply', 'stats_type'): 'ofp_stats_type',
    ('of_table_stats_reply', 'type'): 'ofp_type',
    ('of_table_stats_reply', 'stats_type'): 'ofp_stats_type',
    ('of_port_desc_stats_reply', 'type'): 'ofp_type',
    ('of_port_desc_stats_reply', 'stats_type'): 'ofp_stats_type',
    ('of_aggregate_stats_reply', 'type'): 'ofp_type',
    ('of_aggregate_stats_reply', 'stats_type'): 'ofp_stats_type',
}

# Override oftype_to_base for certain field names
field_to_base = {
    "eth_type": "HEX",
    "cookie": "HEX",
    "datapath_id": "HEX",
}
