blob: 3158697e11347e8307131dd757f695baca976d10 [file] [log] [blame]
Rich Lane64585d92013-10-02 16:01:37 -07001# Copyright 2013, Big Switch Networks, Inc.
2#
3# LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
4# the following special exception:
5#
6# LOXI Exception
7#
8# As a special exception to the terms of the EPL, you may distribute libraries
9# generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
10# that copyright and licensing notices generated by LoxiGen are not altered or removed
11# from the LoxiGen Libraries and the notice provided below is (i) included in
12# the LoxiGen Libraries, if distributed in source code form and (ii) included in any
13# documentation for the LoxiGen Libraries, if distributed in binary form.
14#
15# Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
16#
17# You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
18# a copy of the EPL at:
19#
20# http://www.eclipse.org/legal/epl-v10.html
21#
22# Unless required by applicable law or agreed to in writing, software
23# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
24# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
25# EPL for the specific language governing permissions and limitations
26# under the EPL.
27
28# Map from LOXI types to Wireshark types
29oftype_to_wireshark_type = {
Rich Lane4df40f32013-10-08 15:40:39 -070030 "char": "int8",
31 "uint8_t": "uint8",
32 "uint16_t": "uint16",
33 "uint32_t": "uint32",
34 "uint64_t": "uint64",
35 "of_mac_addr_t": "ether",
36 "of_ipv4_t": "ipv4",
37 "of_ipv6_t": "ipv6",
38 "of_port_name_t": "stringz",
39 "of_table_name_t": "stringz",
40 "of_desc_str_t": "stringz",
41 "of_serial_num_t": "stringz",
Rich Lanef8a3d002014-03-19 13:33:52 -070042 "of_str64_t": "stringz",
Brian O'Connor58a73e32015-05-28 11:51:27 -070043 "of_str32_t": "stringz",
44 "of_str6_t": "stringz",
Rich Lane4df40f32013-10-08 15:40:39 -070045 "of_octets_t": "bytes",
46 "of_port_no_t": "uint32",
47 "of_port_desc_t": "stringz",
48 "of_bsn_vport_t": "bytes",
49 "of_bsn_vport_q_in_q_t": "bytes",
50 "of_fm_cmd_t": "uint16",
51 "of_wc_bmap_t": "uint64",
52 "of_match_bmap_t": "uint64",
53 "of_match_t": "bytes",
54 "of_oxm_t": "bytes",
55 "of_meter_features_t": "bytes",
Rich Lane9d25b082013-10-08 15:53:33 -070056 "of_bitmap_128_t": "bytes",
Rich Lane64585d92013-10-02 16:01:37 -070057}
58
59# Map from LOXI type to Wireshark base
60oftype_to_base = {
61 "char": "DEC",
62 "uint8_t": "DEC",
63 "uint16_t": "DEC",
64 "uint32_t": "DEC",
65 "uint64_t": "DEC",
66 "of_mac_addr_t": "NONE",
67 "of_ipv4_t": "NONE",
68 "of_ipv6_t": "NONE",
69 "of_port_name_t": "NONE",
70 "of_table_name_t": "NONE",
71 "of_desc_str_t": "NONE",
72 "of_serial_num_t": "NONE",
Rich Lanef8a3d002014-03-19 13:33:52 -070073 "of_str64_t": "NONE",
Brian O'Connor58a73e32015-05-28 11:51:27 -070074 "of_str32_t": "NONE",
75 "of_str6_t": "NONE",
Rich Lane64585d92013-10-02 16:01:37 -070076 "of_octets_t": "NONE",
77 "of_port_no_t": "DEC",
78 "of_port_desc_t": "NONE",
79 "of_bsn_vport_t": "NONE",
80 "of_bsn_vport_q_in_q_t": "NONE",
81 "of_fm_cmd_t": "DEC",
82 "of_wc_bmap_t": "HEX",
83 "of_match_bmap_t": "HEX",
84 "of_match_t": "NONE",
85 "of_oxm_t": "NONE",
86 "of_meter_features_t": "NONE",
Rich Lane9d25b082013-10-08 15:53:33 -070087 "of_bitmap_128_t": "NONE",
Rich Lane64585d92013-10-02 16:01:37 -070088}
89
Rich Lane52452662013-10-25 13:34:42 -070090# Use enums for certain fields where it isn't specified in the LOXI input
91class_field_to_enum = {
92 ('of_flow_mod', 'type'): 'ofp_type',
93 ('of_error_msg', 'type'): 'ofp_type',
94 ('of_stats_request', 'type'): 'ofp_type',
95 ('of_stats_request', 'stats_type'): 'ofp_stats_type',
96 ('of_stats_request', 'flags'): 'ofp_stats_request_flags',
97 ('of_stats_reply', 'type'): 'ofp_type',
98 ('of_stats_reply', 'stats_type'): 'ofp_stats_type',
99 ('of_stats_reply', 'flags'): 'ofp_stats_reply_flags',
100 ('of_flow_mod', 'table_id'): 'ofp_table',
101 ('of_flow_mod', '_command'): 'ofp_flow_mod_command',
102 ('of_flow_mod', 'out_port'): 'ofp_port',
103 ('of_flow_mod', 'out_group'): 'ofp_group',
104 ('of_error_msg', 'err_type'): 'ofp_error_type',
105 ('of_port_mod', 'type'): 'ofp_type',
106 ('of_hello', 'type'): 'ofp_type',
107 ('of_features_request', 'type'): 'ofp_type',
108 ('of_features_reply', 'type'): 'ofp_type',
109 ('of_barrier_request', 'type'): 'ofp_type',
110 ('of_barrier_reply', 'type'): 'ofp_type',
111 ('of_echo_request', 'type'): 'ofp_type',
112 ('of_echo_reply', 'type'): 'ofp_type',
Tomasz4bc08ae2013-12-16 21:21:23 -0800113 ('of_flow_delete', 'type'): 'ofp_type',
114 ('of_flow_add', 'type'): 'ofp_type',
Tomasz359147c2013-12-17 18:34:20 -0800115 ('of_port_status', 'type'): 'ofp_type',
Tomaszdb2045d2013-10-25 02:29:23 -0700116 ('of_match_v3', 'type'): 'ofp_match_type',
117 ('of_action_set_nw_ttl', 'type'): 'ofp_action_type',
Tomaszc1b0ad32013-12-08 11:18:59 -0800118 ('of_action_set_field', 'type'): 'ofp_action_type',
Tomaszdb2045d2013-10-25 02:29:23 -0700119 ('of_action_output', 'type'): 'ofp_action_type',
120 ('of_action_group', 'type'): 'ofp_action_type',
121 ('of_action_id', 'type'): 'ofp_action_type',
122 ('of_instruction_apply_actions', 'type'): 'ofp_instruction_type',
123 ('of_instruction_write_actions', 'type'): 'ofp_instruction_type',
Tomasza17a6692013-10-30 17:34:18 -0700124 ('of_group_mod', 'group_type'): 'ofp_group_type',
125 ('of_group_mod', 'type'): 'ofp_type',
Tomasz5e7ffbf2013-11-02 15:09:02 -0700126 ('of_group_mod', 'command'): 'ofp_group_mod_command',
Tomasza17a6692013-10-30 17:34:18 -0700127 ('of_group_mod', 'group_id'): 'ofp_group',
Tomasz5e7ffbf2013-11-02 15:09:02 -0700128 ('of_packet_out', 'type'): 'ofp_type',
129 ('of_packet_in', 'type'): 'ofp_type',
130 ('of_packet_in', 'reason'): 'ofp_packet_in_reason',
131 ('of_flow_stats_request', 'type'): 'ofp_type',
132 ('of_flow_stats_request', 'stats_type'): 'ofp_stats_type',
133 ('of_desc_stats_request', 'type'): 'ofp_type',
134 ('of_desc_stats_request', 'stats_type'): 'ofp_stats_type',
135 ('of_queue_stats_request', 'type'): 'ofp_type',
136 ('of_queue_stats_request', 'stats_type'): 'ofp_stats_type',
137 ('of_port_stats_request', 'type'): 'ofp_type',
138 ('of_port_stats_request', 'stats_type'): 'ofp_stats_type',
139 ('of_table_stats_request', 'type'): 'ofp_type',
140 ('of_table_stats_request', 'stats_type'): 'ofp_stats_type',
141 ('of_port_desc_stats_request', 'type'): 'ofp_type',
142 ('of_port_desc_stats_request', 'stats_type'): 'ofp_stats_type',
143 ('of_meter_stats_request', 'type'): 'ofp_type',
144 ('of_meter_stats_request', 'stats_type'): 'ofp_stats_type',
145 ('of_meter_features_stats_request', 'type'): 'ofp_type',
146 ('of_meter_features_stats_request', 'stats_type'): 'ofp_stats_type',
147 ('of_meter_config_stats_request', 'type'): 'ofp_type',
148 ('of_meter_config_stats_request', 'stats_type'): 'ofp_stats_type',
149 ('of_group_stats_request', 'type'): 'ofp_type',
150 ('of_group_stats_request', 'stats_type'): 'ofp_stats_type',
151 ('of_group_features_stats_request', 'type'): 'ofp_type',
152 ('of_group_features_stats_request', 'stats_type'): 'ofp_stats_type',
153 ('of_group_desc_stats_request', 'type'): 'ofp_type',
154 ('of_group_desc_stats_request', 'stats_type'): 'ofp_stats_type',
155 ('of_aggregate_stats_request', 'type'): 'ofp_type',
156 ('of_aggregate_stats_request', 'stats_type'): 'ofp_stats_type',
157 ('of_async_get_request', 'type'): 'ofp_type',
158 ('of_flow_stats_reply', 'type'): 'ofp_type',
159 ('of_flow_stats_reply', 'stats_type'): 'ofp_stats_type',
160 ('of_desc_stats_reply', 'type'): 'ofp_type',
161 ('of_desc_stats_reply', 'stats_type'): 'ofp_stats_type',
162 ('of_queue_stats_reply', 'type'): 'ofp_type',
163 ('of_queue_stats_reply', 'stats_type'): 'ofp_stats_type',
164 ('of_port_stats_reply', 'type'): 'ofp_type',
165 ('of_port_stats_reply', 'stats_type'): 'ofp_stats_type',
166 ('of_table_stats_reply', 'type'): 'ofp_type',
167 ('of_table_stats_reply', 'stats_type'): 'ofp_stats_type',
168 ('of_port_desc_stats_reply', 'type'): 'ofp_type',
169 ('of_port_desc_stats_reply', 'stats_type'): 'ofp_stats_type',
170 ('of_aggregate_stats_reply', 'type'): 'ofp_type',
171 ('of_aggregate_stats_reply', 'stats_type'): 'ofp_stats_type',
Rich Lane52452662013-10-25 13:34:42 -0700172}
173
Rich Lane64585d92013-10-02 16:01:37 -0700174# Override oftype_to_base for certain field names
175field_to_base = {
176 "eth_type": "HEX",
177 "cookie": "HEX",
178 "datapath_id": "HEX",
179}
tomaszklimczyk8d18d722014-01-19 23:17:05 -0800180
181reader_overrides = {
182 ("of_packet_in", "data"): "read_ethernet",
tomaszklimczyk4f78cef2014-01-29 10:39:58 -0800183 ("of_packet_out", "data"): "read_ethernet",
184 ("of_bsn_pdu_tx_request", "data"): "read_ethernet",
185 ("of_bsn_pdu_rx_request", "data"): "read_ethernet",
Rich Lane88fe6c22014-07-17 10:25:10 -0700186 ("of_error_msg", "data"): "read_openflow",
187 ("of_hello_failed_error_msg", "data"): "read_openflow",
188 ("of_bad_request_error_msg", "data"): "read_openflow",
189 ("of_bad_action_error_msg", "data"): "read_openflow",
190 ("of_bad_instruction_error_msg", "data"): "read_openflow",
191 ("of_bad_match_error_msg", "data"): "read_openflow",
192 ("of_flow_mod_failed_error_msg", "data"): "read_openflow",
193 ("of_group_mod_failed_error_msg", "data"): "read_openflow",
194 ("of_port_mod_failed_error_msg", "data"): "read_openflow",
195 ("of_table_mod_failed_error_msg", "data"): "read_openflow",
196 ("of_queue_op_failed_error_msg", "data"): "read_openflow",
197 ("of_switch_config_failed_error_msg", "data"): "read_openflow",
198 ("of_role_request_failed_error_msg", "data"): "read_openflow",
199 ("of_meter_mod_failed_error_msg", "data"): "read_openflow",
200 ("of_table_features_failed_error_msg", "data"): "read_openflow",
Rich Laned2726bf2015-01-23 13:15:12 -0800201 ("of_bundle_add_msg", "data"): "read_openflow",
tomaszklimczyk8d18d722014-01-19 23:17:05 -0800202}