blob: bdab9d8e3c7a1be466219e74b4fc334352da93d9 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tsengbe342052017-11-03 10:21:23 -07002 "header_types" : [
3 {
4 "name" : "scalars_0",
5 "id" : 0,
6 "fields" : [
Daniele Moro5a2de712019-09-24 14:34:07 -07007 ["tmp_0", 16, false],
8 ["tmp_1", 16, false],
9 ["tmp_2", 4, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080010 ["tmp", 32, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070011 ["tmp_3", 32, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080012 ["egress_next_tmp", 1, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080013 ["fabric_metadata_t.ip_eth_type", 16, false],
14 ["fabric_metadata_t.vlan_id", 12, false],
15 ["fabric_metadata_t.vlan_pri", 3, false],
16 ["fabric_metadata_t.vlan_cfi", 1, false],
17 ["fabric_metadata_t.mpls_label", 20, false],
18 ["fabric_metadata_t.mpls_ttl", 8, false],
19 ["fabric_metadata_t.skip_forwarding", 1, false],
20 ["fabric_metadata_t.skip_next", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070021 ["fabric_metadata_t.fwd_type", 3, false],
22 ["fabric_metadata_t.next_id", 32, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020023 ["fabric_metadata_t.is_multicast", 1, false],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -070024 ["fabric_metadata_t.is_controller_packet_out", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070025 ["fabric_metadata_t.ip_proto", 8, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080026 ["fabric_metadata_t.l4_sport", 16, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070027 ["fabric_metadata_t.l4_dport", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080028 ]
29 },
30 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +020031 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -080032 "id" : 1,
33 "fields" : [
Carmelo Cascone6af4e172018-06-15 16:01:30 +020034 ["ingress_port", 9, false],
35 ["egress_spec", 9, false],
36 ["egress_port", 9, false],
37 ["clone_spec", 32, false],
38 ["instance_type", 32, false],
39 ["drop", 1, false],
40 ["recirculate_port", 16, false],
41 ["packet_length", 32, false],
42 ["enq_timestamp", 32, false],
43 ["enq_qdepth", 19, false],
44 ["deq_timedelta", 32, false],
45 ["deq_qdepth", 19, false],
46 ["ingress_global_timestamp", 48, false],
47 ["egress_global_timestamp", 48, false],
48 ["lf_field_list", 32, false],
49 ["mcast_grp", 16, false],
50 ["resubmit_flag", 32, false],
51 ["egress_rid", 16, false],
Carmelo Cascone6af4e172018-06-15 16:01:30 +020052 ["recirculate_flag", 32, false],
Carmelo Cascone9b607da2019-05-08 14:03:01 -070053 ["checksum_error", 1, false],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -070054 ["parser_error", 32, false],
Carmelo Cascone9b607da2019-05-08 14:03:01 -070055 ["priority", 3, false],
56 ["_padding", 2, false]
Carmelo Cascone6af4e172018-06-15 16:01:30 +020057 ]
58 },
59 {
60 "name" : "ethernet_t",
61 "id" : 2,
62 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080063 ["dst_addr", 48, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070064 ["src_addr", 48, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080065 ]
66 },
67 {
68 "name" : "vlan_tag_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020069 "id" : 3,
Yi Tsengc6844f52017-12-19 11:58:25 -080070 "fields" : [
Daniele Moro5a2de712019-09-24 14:34:07 -070071 ["eth_type", 16, false],
Yi Tsengc6844f52017-12-19 11:58:25 -080072 ["pri", 3, false],
73 ["cfi", 1, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070074 ["vlan_id", 12, false]
75 ]
76 },
77 {
78 "name" : "eth_type_t",
79 "id" : 4,
80 "fields" : [
81 ["value", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080082 ]
83 },
84 {
85 "name" : "mpls_t",
Daniele Moro5a2de712019-09-24 14:34:07 -070086 "id" : 5,
Yi Tsengc6844f52017-12-19 11:58:25 -080087 "fields" : [
88 ["label", 20, false],
89 ["tc", 3, false],
90 ["bos", 1, false],
91 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070092 ]
93 },
94 {
95 "name" : "ipv4_t",
Daniele Moro5a2de712019-09-24 14:34:07 -070096 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -070097 "fields" : [
98 ["version", 4, false],
99 ["ihl", 4, false],
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900100 ["dscp", 6, false],
101 ["ecn", 2, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700102 ["total_len", 16, false],
103 ["identification", 16, false],
104 ["flags", 3, false],
105 ["frag_offset", 13, false],
106 ["ttl", 8, false],
107 ["protocol", 8, false],
108 ["hdr_checksum", 16, false],
109 ["src_addr", 32, false],
110 ["dst_addr", 32, false]
111 ]
112 },
113 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800114 "name" : "tcp_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700115 "id" : 7,
Yi Tseng47eac892018-07-11 02:17:04 +0800116 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800117 ["sport", 16, false],
118 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700119 ["seq_no", 32, false],
120 ["ack_no", 32, false],
121 ["data_offset", 4, false],
122 ["res", 3, false],
123 ["ecn", 3, false],
124 ["ctrl", 6, false],
125 ["window", 16, false],
126 ["checksum", 16, false],
127 ["urgent_ptr", 16, false]
128 ]
129 },
130 {
131 "name" : "udp_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700132 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700133 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800134 ["sport", 16, false],
135 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700136 ["len", 16, false],
137 ["checksum", 16, false]
138 ]
139 },
140 {
141 "name" : "icmp_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700142 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700143 "fields" : [
144 ["icmp_type", 8, false],
145 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800146 ["checksum", 16, false],
147 ["identifier", 16, false],
148 ["sequence_number", 16, false],
149 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700150 ]
151 },
152 {
153 "name" : "packet_out_header_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700154 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700155 "fields" : [
156 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800157 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700158 ]
159 },
160 {
161 "name" : "packet_in_header_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700162 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700163 "fields" : [
164 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800165 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700166 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700167 }
168 ],
169 "headers" : [
170 {
Yi Tsengbe342052017-11-03 10:21:23 -0700171 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800172 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700173 "header_type" : "scalars_0",
174 "metadata" : true,
175 "pi_omit" : true
176 },
177 {
178 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800179 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700180 "header_type" : "standard_metadata",
181 "metadata" : true,
182 "pi_omit" : true
183 },
184 {
185 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800186 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700187 "header_type" : "ethernet_t",
188 "metadata" : false,
189 "pi_omit" : true
190 },
191 {
192 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800193 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700194 "header_type" : "vlan_tag_t",
195 "metadata" : false,
196 "pi_omit" : true
197 },
198 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800199 "name" : "inner_vlan_tag",
Yi Tsengbd46d052018-01-22 17:18:16 -0800200 "id" : 4,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800201 "header_type" : "vlan_tag_t",
202 "metadata" : false,
203 "pi_omit" : true
204 },
205 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700206 "name" : "eth_type",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800207 "id" : 5,
Daniele Moro5a2de712019-09-24 14:34:07 -0700208 "header_type" : "eth_type_t",
209 "metadata" : false,
210 "pi_omit" : true
211 },
212 {
213 "name" : "mpls",
214 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700215 "header_type" : "mpls_t",
216 "metadata" : false,
217 "pi_omit" : true
218 },
219 {
220 "name" : "ipv4",
Daniele Moro5a2de712019-09-24 14:34:07 -0700221 "id" : 7,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800222 "header_type" : "ipv4_t",
Yi Tsengbe342052017-11-03 10:21:23 -0700223 "metadata" : false,
224 "pi_omit" : true
225 },
226 {
227 "name" : "tcp",
Daniele Moro5a2de712019-09-24 14:34:07 -0700228 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700229 "header_type" : "tcp_t",
230 "metadata" : false,
231 "pi_omit" : true
232 },
233 {
234 "name" : "udp",
Daniele Moro5a2de712019-09-24 14:34:07 -0700235 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700236 "header_type" : "udp_t",
237 "metadata" : false,
238 "pi_omit" : true
239 },
240 {
241 "name" : "icmp",
Daniele Moro5a2de712019-09-24 14:34:07 -0700242 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700243 "header_type" : "icmp_t",
244 "metadata" : false,
245 "pi_omit" : true
246 },
247 {
248 "name" : "packet_out",
Daniele Moro5a2de712019-09-24 14:34:07 -0700249 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700250 "header_type" : "packet_out_header_t",
251 "metadata" : false,
252 "pi_omit" : true
253 },
254 {
255 "name" : "packet_in",
Daniele Moro5a2de712019-09-24 14:34:07 -0700256 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700257 "header_type" : "packet_in_header_t",
258 "metadata" : false,
259 "pi_omit" : true
260 }
261 ],
262 "header_stacks" : [],
263 "header_union_types" : [],
264 "header_unions" : [],
265 "header_union_stacks" : [],
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700266 "field_lists" : [
267 {
268 "id" : 1,
269 "name" : "fl",
270 "source_info" : {
Daniele Moro3b7a21b2019-06-25 17:33:40 -0700271 "filename" : "include/control/acl.p4",
272 "line" : 46,
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700273 "column" : 40,
Daniele Moro3b7a21b2019-06-25 17:33:40 -0700274 "source_fragment" : "{standard_metadata.ingress_port}"
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700275 },
276 "elements" : [
277 {
278 "type" : "field",
279 "value" : ["standard_metadata", "ingress_port"]
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700280 }
281 ]
282 }
283 ],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700284 "errors" : [
Carmelo Cascone4d8785b2019-05-31 17:11:26 -0700285 ["NoError", 1],
286 ["PacketTooShort", 2],
287 ["NoMatch", 3],
288 ["StackOutOfBounds", 4],
289 ["HeaderTooShort", 5],
290 ["ParserTimeout", 6],
291 ["ParserInvalidArgument", 7]
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700292 ],
Yi Tsengbe342052017-11-03 10:21:23 -0700293 "enums" : [],
294 "parsers" : [
295 {
296 "name" : "parser",
297 "id" : 0,
298 "init_state" : "start",
299 "parse_states" : [
300 {
301 "name" : "start",
302 "id" : 0,
303 "parser_ops" : [],
304 "transitions" : [
305 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800306 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700307 "value" : "0x00ff",
308 "mask" : null,
309 "next_state" : "parse_packet_out"
310 },
311 {
312 "value" : "default",
313 "mask" : null,
314 "next_state" : "parse_ethernet"
315 }
316 ],
317 "transition_key" : [
318 {
319 "type" : "field",
320 "value" : ["standard_metadata", "ingress_port"]
321 }
322 ]
323 },
324 {
325 "name" : "parse_packet_out",
326 "id" : 1,
327 "parser_ops" : [
328 {
329 "parameters" : [
330 {
331 "type" : "regular",
332 "value" : "packet_out"
333 }
334 ],
335 "op" : "extract"
336 }
337 ],
338 "transitions" : [
339 {
340 "value" : "default",
341 "mask" : null,
342 "next_state" : "parse_ethernet"
343 }
344 ],
345 "transition_key" : []
346 },
347 {
348 "name" : "parse_ethernet",
349 "id" : 2,
350 "parser_ops" : [
351 {
352 "parameters" : [
353 {
354 "type" : "regular",
355 "value" : "ethernet"
356 }
357 ],
358 "op" : "extract"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800359 },
360 {
361 "parameters" : [
362 {
363 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700364 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800365 },
366 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700367 "type" : "hexstr",
368 "value" : "0x0ffe"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800369 }
370 ],
371 "op" : "set"
372 },
373 {
374 "parameters" : [
375 {
376 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700377 "value" : ["scalars", "tmp_0"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800378 },
379 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700380 "type" : "lookahead",
381 "value" : [0, 16]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800382 }
383 ],
384 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700385 }
386 ],
387 "transitions" : [
388 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800389 "type" : "hexstr",
Daniele Moro77654f92019-07-30 10:29:54 -0700390 "value" : "0x88a8",
391 "mask" : null,
392 "next_state" : "parse_vlan_tag"
393 },
394 {
395 "type" : "hexstr",
396 "value" : "0x9100",
397 "mask" : null,
398 "next_state" : "parse_vlan_tag"
399 },
400 {
401 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700402 "value" : "0x8100",
403 "mask" : null,
404 "next_state" : "parse_vlan_tag"
405 },
406 {
Yi Tsengbe342052017-11-03 10:21:23 -0700407 "value" : "default",
408 "mask" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -0700409 "next_state" : "parse_eth_type"
Yi Tsengbe342052017-11-03 10:21:23 -0700410 }
411 ],
412 "transition_key" : [
413 {
414 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700415 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700416 }
417 ]
418 },
419 {
420 "name" : "parse_vlan_tag",
421 "id" : 3,
422 "parser_ops" : [
423 {
424 "parameters" : [
425 {
426 "type" : "regular",
427 "value" : "vlan_tag"
428 }
429 ],
430 "op" : "extract"
Daniele Moro5a2de712019-09-24 14:34:07 -0700431 },
432 {
433 "parameters" : [
434 {
435 "type" : "field",
436 "value" : ["scalars", "tmp_1"]
437 },
438 {
439 "type" : "lookahead",
440 "value" : [0, 16]
441 }
442 ],
443 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700444 }
445 ],
446 "transitions" : [
447 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800448 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800449 "value" : "0x8100",
450 "mask" : null,
451 "next_state" : "parse_inner_vlan_tag"
452 },
453 {
454 "value" : "default",
455 "mask" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -0700456 "next_state" : "parse_eth_type"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800457 }
458 ],
459 "transition_key" : [
460 {
461 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700462 "value" : ["scalars", "tmp_1"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800463 }
464 ]
465 },
466 {
467 "name" : "parse_inner_vlan_tag",
468 "id" : 4,
469 "parser_ops" : [
470 {
471 "parameters" : [
472 {
473 "type" : "regular",
474 "value" : "inner_vlan_tag"
475 }
476 ],
477 "op" : "extract"
478 }
479 ],
480 "transitions" : [
481 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700482 "value" : "default",
Yi Tsengbe342052017-11-03 10:21:23 -0700483 "mask" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -0700484 "next_state" : "parse_eth_type"
485 }
486 ],
487 "transition_key" : []
488 },
489 {
490 "name" : "parse_eth_type",
491 "id" : 5,
492 "parser_ops" : [
493 {
494 "parameters" : [
495 {
496 "type" : "regular",
497 "value" : "eth_type"
498 }
499 ],
500 "op" : "extract"
501 }
502 ],
503 "transitions" : [
Yi Tsengbe342052017-11-03 10:21:23 -0700504 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800505 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800506 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700507 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800508 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700509 },
510 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700511 "type" : "hexstr",
512 "value" : "0x0800",
513 "mask" : null,
514 "next_state" : "parse_ipv4"
515 },
516 {
Yi Tsengbe342052017-11-03 10:21:23 -0700517 "value" : "default",
518 "mask" : null,
519 "next_state" : null
520 }
521 ],
522 "transition_key" : [
523 {
524 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700525 "value" : ["eth_type", "value"]
Yi Tsengbe342052017-11-03 10:21:23 -0700526 }
527 ]
528 },
529 {
530 "name" : "parse_mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -0700531 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700532 "parser_ops" : [
533 {
534 "parameters" : [
535 {
536 "type" : "regular",
537 "value" : "mpls"
538 }
539 ],
540 "op" : "extract"
541 },
542 {
543 "parameters" : [
544 {
545 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800546 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
547 },
548 {
549 "type" : "field",
550 "value" : ["mpls", "label"]
551 }
552 ],
553 "op" : "set"
554 },
555 {
556 "parameters" : [
557 {
558 "type" : "field",
559 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
560 },
561 {
562 "type" : "field",
563 "value" : ["mpls", "ttl"]
564 }
565 ],
566 "op" : "set"
567 },
568 {
569 "parameters" : [
570 {
571 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700572 "value" : ["scalars", "tmp_2"]
Yi Tsengbe342052017-11-03 10:21:23 -0700573 },
574 {
575 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800576 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700577 }
578 ],
579 "op" : "set"
580 }
581 ],
582 "transitions" : [
583 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800584 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700585 "value" : "0x04",
586 "mask" : null,
587 "next_state" : "parse_ipv4"
588 },
589 {
Yi Tsengbe342052017-11-03 10:21:23 -0700590 "value" : "default",
591 "mask" : null,
592 "next_state" : "parse_ethernet"
593 }
594 ],
595 "transition_key" : [
596 {
597 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700598 "value" : ["scalars", "tmp_2"]
Yi Tsengbe342052017-11-03 10:21:23 -0700599 }
600 ]
601 },
602 {
Daniele Moro7c3a0022019-07-12 13:38:34 -0700603 "name" : "parse_ipv4",
604 "id" : 7,
605 "parser_ops" : [
606 {
607 "parameters" : [
608 {
Yi Tsengbe342052017-11-03 10:21:23 -0700609 "type" : "regular",
610 "value" : "ipv4"
611 }
612 ],
613 "op" : "extract"
614 },
615 {
616 "parameters" : [
617 {
618 "type" : "field",
619 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
620 },
621 {
622 "type" : "field",
623 "value" : ["ipv4", "protocol"]
624 }
625 ],
626 "op" : "set"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800627 },
628 {
629 "parameters" : [
630 {
631 "type" : "field",
632 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
633 },
634 {
635 "type" : "hexstr",
636 "value" : "0x0800"
637 }
638 ],
639 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700640 }
641 ],
642 "transitions" : [
643 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800644 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700645 "value" : "0x06",
646 "mask" : null,
647 "next_state" : "parse_tcp"
648 },
649 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800650 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700651 "value" : "0x11",
652 "mask" : null,
653 "next_state" : "parse_udp"
654 },
655 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800656 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700657 "value" : "0x01",
658 "mask" : null,
659 "next_state" : "parse_icmp"
660 },
661 {
662 "value" : "default",
663 "mask" : null,
664 "next_state" : null
665 }
666 ],
667 "transition_key" : [
668 {
669 "type" : "field",
670 "value" : ["ipv4", "protocol"]
671 }
672 ]
673 },
674 {
Yi Tsengbe342052017-11-03 10:21:23 -0700675 "name" : "parse_tcp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700676 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700677 "parser_ops" : [
678 {
679 "parameters" : [
680 {
681 "type" : "regular",
682 "value" : "tcp"
683 }
684 ],
685 "op" : "extract"
686 },
687 {
688 "parameters" : [
689 {
690 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800691 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700692 },
693 {
694 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800695 "value" : ["tcp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700696 }
697 ],
698 "op" : "set"
699 },
700 {
701 "parameters" : [
702 {
703 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800704 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700705 },
706 {
707 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800708 "value" : ["tcp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700709 }
710 ],
711 "op" : "set"
712 }
713 ],
714 "transitions" : [
715 {
716 "value" : "default",
717 "mask" : null,
718 "next_state" : null
719 }
720 ],
721 "transition_key" : []
722 },
723 {
724 "name" : "parse_udp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700725 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700726 "parser_ops" : [
727 {
728 "parameters" : [
729 {
730 "type" : "regular",
731 "value" : "udp"
732 }
733 ],
734 "op" : "extract"
735 },
736 {
737 "parameters" : [
738 {
739 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800740 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700741 },
742 {
743 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800744 "value" : ["udp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700745 }
746 ],
747 "op" : "set"
748 },
749 {
750 "parameters" : [
751 {
752 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800753 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700754 },
755 {
756 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800757 "value" : ["udp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700758 }
759 ],
760 "op" : "set"
761 }
762 ],
763 "transitions" : [
764 {
765 "value" : "default",
766 "mask" : null,
767 "next_state" : null
768 }
769 ],
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700770 "transition_key" : [
771 {
772 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800773 "value" : ["udp", "dport"]
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700774 }
775 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700776 },
777 {
778 "name" : "parse_icmp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700779 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700780 "parser_ops" : [
781 {
782 "parameters" : [
783 {
784 "type" : "regular",
785 "value" : "icmp"
786 }
787 ],
788 "op" : "extract"
789 }
790 ],
791 "transitions" : [
792 {
793 "value" : "default",
794 "mask" : null,
795 "next_state" : null
796 }
797 ],
798 "transition_key" : []
799 }
800 ]
801 }
802 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800803 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700804 "deparsers" : [
805 {
806 "name" : "deparser",
807 "id" : 0,
808 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200809 "filename" : "include/parser.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -0700810 "line" : 259,
Yi Tsengbe342052017-11-03 10:21:23 -0700811 "column" : 8,
812 "source_fragment" : "FabricDeparser"
813 },
Daniele Moro5a2de712019-09-24 14:34:07 -0700814 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "mpls", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700815 }
816 ],
817 "meter_arrays" : [],
818 "counter_arrays" : [
819 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800820 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800821 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800822 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700823 "binding" : "FabricIngress.filtering.ingress_port_vlan",
824 "source_info" : {
825 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800826 "line" : 31,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700827 "column" : 50,
828 "source_fragment" : "ingress_port_vlan_counter"
829 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800830 },
831 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800832 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800833 "id" : 1,
834 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700835 "binding" : "FabricIngress.filtering.fwd_classifier",
836 "source_info" : {
837 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700838 "line" : 83,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700839 "column" : 50,
840 "source_fragment" : "fwd_classifier_counter"
841 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800842 },
843 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800844 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800845 "id" : 2,
846 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700847 "binding" : "FabricIngress.forwarding.bridging",
848 "source_info" : {
849 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800850 "line" : 36,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700851 "column" : 50,
852 "source_fragment" : "bridging_counter"
853 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800854 },
855 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800856 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800857 "id" : 3,
858 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700859 "binding" : "FabricIngress.forwarding.mpls",
860 "source_info" : {
861 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700862 "line" : 63,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700863 "column" : 50,
864 "source_fragment" : "mpls_counter"
865 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800866 },
867 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800868 "name" : "FabricIngress.acl.acl_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700869 "id" : 4,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800870 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800871 "binding" : "FabricIngress.acl.acl",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700872 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800873 "filename" : "include/control/acl.p4",
874 "line" : 30,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700875 "column" : 50,
876 "source_fragment" : "acl_counter"
877 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800878 },
879 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800880 "name" : "FabricIngress.next.next_vlan_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700881 "id" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +0800882 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800883 "binding" : "FabricIngress.next.next_vlan",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700884 "source_info" : {
885 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800886 "line" : 67,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700887 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800888 "source_fragment" : "next_vlan_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700889 }
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800890 },
891 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800892 "name" : "FabricIngress.next.xconnect_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700893 "id" : 6,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800894 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800895 "binding" : "FabricIngress.next.xconnect",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700896 "source_info" : {
897 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700898 "line" : 103,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700899 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800900 "source_fragment" : "xconnect_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700901 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800902 },
903 {
904 "name" : "FabricIngress.next.hashed_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700905 "id" : 7,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800906 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700907 "binding" : "FabricIngress.next.hashed",
908 "source_info" : {
909 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -0700910 "line" : 180,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700911 "column" : 50,
912 "source_fragment" : "hashed_counter"
913 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800914 },
915 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000916 "name" : "FabricIngress.next.multicast_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700917 "id" : 8,
Esin Karaman971fb7f2017-12-28 13:44:52 +0000918 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700919 "binding" : "FabricIngress.next.multicast",
920 "source_info" : {
921 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -0700922 "line" : 224,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700923 "column" : 50,
924 "source_fragment" : "multicast_counter"
925 }
Esin Karaman971fb7f2017-12-28 13:44:52 +0000926 },
927 {
928 "name" : "FabricIngress.port_counters_control.egress_port_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700929 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700930 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200931 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800932 "line" : 26,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800933 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700934 "source_fragment" : "egress_port_counter"
935 },
936 "size" : 511,
937 "is_direct" : false
938 },
939 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800940 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700941 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700942 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200943 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800944 "line" : 27,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800945 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700946 "source_fragment" : "ingress_port_counter"
947 },
948 "size" : 511,
949 "is_direct" : false
Yi Tseng47eac892018-07-11 02:17:04 +0800950 },
951 {
952 "name" : "FabricEgress.egress_next.egress_vlan_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700953 "id" : 11,
Yi Tseng47eac892018-07-11 02:17:04 +0800954 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700955 "binding" : "FabricEgress.egress_next.egress_vlan",
956 "source_info" : {
957 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -0700958 "line" : 309,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700959 "column" : 50,
960 "source_fragment" : "egress_vlan_counter"
961 }
Yi Tsengbe342052017-11-03 10:21:23 -0700962 }
963 ],
964 "register_arrays" : [],
965 "calculations" : [
966 {
967 "name" : "calc",
968 "id" : 0,
969 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200970 "filename" : "include/checksum.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200971 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700972 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200973 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700974 },
975 "algo" : "csum16",
976 "input" : [
977 {
978 "type" : "field",
979 "value" : ["ipv4", "version"]
980 },
981 {
982 "type" : "field",
983 "value" : ["ipv4", "ihl"]
984 },
985 {
986 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900987 "value" : ["ipv4", "dscp"]
988 },
989 {
990 "type" : "field",
991 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -0700992 },
993 {
994 "type" : "field",
995 "value" : ["ipv4", "total_len"]
996 },
997 {
998 "type" : "field",
999 "value" : ["ipv4", "identification"]
1000 },
1001 {
1002 "type" : "field",
1003 "value" : ["ipv4", "flags"]
1004 },
1005 {
1006 "type" : "field",
1007 "value" : ["ipv4", "frag_offset"]
1008 },
1009 {
1010 "type" : "field",
1011 "value" : ["ipv4", "ttl"]
1012 },
1013 {
1014 "type" : "field",
1015 "value" : ["ipv4", "protocol"]
1016 },
1017 {
1018 "type" : "field",
1019 "value" : ["ipv4", "src_addr"]
1020 },
1021 {
1022 "type" : "field",
1023 "value" : ["ipv4", "dst_addr"]
1024 }
1025 ]
1026 },
1027 {
1028 "name" : "calc_0",
1029 "id" : 1,
1030 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001031 "filename" : "include/checksum.p4",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001032 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07001033 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001034 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -07001035 },
1036 "algo" : "csum16",
1037 "input" : [
1038 {
1039 "type" : "field",
1040 "value" : ["ipv4", "version"]
1041 },
1042 {
1043 "type" : "field",
1044 "value" : ["ipv4", "ihl"]
1045 },
1046 {
1047 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001048 "value" : ["ipv4", "dscp"]
1049 },
1050 {
1051 "type" : "field",
1052 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -07001053 },
1054 {
1055 "type" : "field",
1056 "value" : ["ipv4", "total_len"]
1057 },
1058 {
1059 "type" : "field",
1060 "value" : ["ipv4", "identification"]
1061 },
1062 {
1063 "type" : "field",
1064 "value" : ["ipv4", "flags"]
1065 },
1066 {
1067 "type" : "field",
1068 "value" : ["ipv4", "frag_offset"]
1069 },
1070 {
1071 "type" : "field",
1072 "value" : ["ipv4", "ttl"]
1073 },
1074 {
1075 "type" : "field",
1076 "value" : ["ipv4", "protocol"]
1077 },
1078 {
1079 "type" : "field",
1080 "value" : ["ipv4", "src_addr"]
1081 },
1082 {
1083 "type" : "field",
1084 "value" : ["ipv4", "dst_addr"]
1085 }
1086 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001087 }
1088 ],
1089 "learn_lists" : [],
1090 "actions" : [
1091 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001092 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001093 "id" : 0,
1094 "runtime_data" : [],
1095 "primitives" : []
1096 },
1097 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001098 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001099 "id" : 1,
1100 "runtime_data" : [],
1101 "primitives" : []
1102 },
1103 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001104 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001105 "id" : 2,
1106 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001107 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001108 },
1109 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001110 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001111 "id" : 3,
1112 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001113 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001114 },
1115 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001116 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001117 "id" : 4,
1118 "runtime_data" : [],
1119 "primitives" : []
1120 },
1121 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001122 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001123 "id" : 5,
1124 "runtime_data" : [],
1125 "primitives" : []
1126 },
1127 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001128 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001129 "id" : 6,
1130 "runtime_data" : [],
1131 "primitives" : []
1132 },
1133 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001134 "name" : "FabricIngress.filtering.deny",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001135 "id" : 7,
Yi Tseng47eac892018-07-11 02:17:04 +08001136 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001137 "primitives" : [
1138 {
Yi Tsengbe342052017-11-03 10:21:23 -07001139 "op" : "assign",
1140 "parameters" : [
1141 {
1142 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001143 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
Yi Tsengbe342052017-11-03 10:21:23 -07001144 },
1145 {
1146 "type" : "expression",
1147 "value" : {
1148 "type" : "expression",
1149 "value" : {
1150 "op" : "b2d",
1151 "left" : null,
1152 "right" : {
1153 "type" : "bool",
1154 "value" : true
1155 }
1156 }
1157 }
1158 }
1159 ],
1160 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001161 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001162 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001163 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001164 "source_fragment" : "fabric_metadata.skip_forwarding = true"
1165 }
1166 },
1167 {
1168 "op" : "assign",
1169 "parameters" : [
1170 {
1171 "type" : "field",
1172 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1173 },
1174 {
1175 "type" : "expression",
1176 "value" : {
1177 "type" : "expression",
1178 "value" : {
1179 "op" : "b2d",
1180 "left" : null,
1181 "right" : {
1182 "type" : "bool",
1183 "value" : true
1184 }
1185 }
1186 }
1187 }
1188 ],
1189 "source_info" : {
1190 "filename" : "include/control/filtering.p4",
1191 "line" : 37,
1192 "column" : 8,
1193 "source_fragment" : "fabric_metadata.skip_next = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001194 }
1195 }
1196 ]
1197 },
1198 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001199 "name" : "FabricIngress.filtering.permit",
1200 "id" : 8,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001201 "runtime_data" : [],
1202 "primitives" : []
1203 },
1204 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001205 "name" : "FabricIngress.filtering.permit_with_internal_vlan",
1206 "id" : 9,
1207 "runtime_data" : [
1208 {
1209 "name" : "vlan_id",
1210 "bitwidth" : 12
1211 }
1212 ],
1213 "primitives" : [
1214 {
1215 "op" : "assign",
1216 "parameters" : [
1217 {
1218 "type" : "field",
1219 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1220 },
1221 {
1222 "type" : "runtime_data",
1223 "value" : 0
1224 }
1225 ],
1226 "source_info" : {
1227 "filename" : "include/control/filtering.p4",
1228 "line" : 47,
1229 "column" : 8,
1230 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1231 }
1232 }
1233 ]
1234 },
1235 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001236 "name" : "FabricIngress.filtering.set_forwarding_type",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001237 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07001238 "runtime_data" : [
1239 {
1240 "name" : "fwd_type",
1241 "bitwidth" : 3
1242 }
1243 ],
1244 "primitives" : [
1245 {
1246 "op" : "assign",
1247 "parameters" : [
1248 {
1249 "type" : "field",
1250 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1251 },
1252 {
1253 "type" : "runtime_data",
1254 "value" : 0
1255 }
1256 ],
1257 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001258 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07001259 "line" : 86,
Yi Tsengbe342052017-11-03 10:21:23 -07001260 "column" : 8,
1261 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1262 }
1263 }
1264 ]
1265 },
1266 {
Yi Tseng47eac892018-07-11 02:17:04 +08001267 "name" : "FabricIngress.forwarding.set_next_id_bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001268 "id" : 11,
Carmelo Casconef645e842018-07-16 18:31:52 +02001269 "runtime_data" : [
1270 {
1271 "name" : "next_id",
1272 "bitwidth" : 32
1273 }
1274 ],
1275 "primitives" : [
1276 {
1277 "op" : "assign",
1278 "parameters" : [
1279 {
1280 "type" : "field",
1281 "value" : ["scalars", "fabric_metadata_t.next_id"]
1282 },
1283 {
1284 "type" : "runtime_data",
1285 "value" : 0
1286 }
1287 ],
1288 "source_info" : {
1289 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001290 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001291 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001292 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001293 }
1294 }
1295 ]
1296 },
1297 {
1298 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001299 "id" : 12,
Carmelo Casconef645e842018-07-16 18:31:52 +02001300 "runtime_data" : [
1301 {
1302 "name" : "next_id",
1303 "bitwidth" : 32
1304 }
1305 ],
1306 "primitives" : [
1307 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001308 "op" : "assign",
Carmelo Casconef645e842018-07-16 18:31:52 +02001309 "parameters" : [
1310 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001311 "type" : "field",
1312 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1313 },
1314 {
1315 "type" : "hexstr",
1316 "value" : "0x000000"
Carmelo Casconef645e842018-07-16 18:31:52 +02001317 }
1318 ],
1319 "source_info" : {
1320 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001321 "line" : 66,
Carmelo Casconef645e842018-07-16 18:31:52 +02001322 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001323 "source_fragment" : "fabric_metadata.mpls_label = 0"
Carmelo Casconef645e842018-07-16 18:31:52 +02001324 }
1325 },
1326 {
1327 "op" : "assign",
1328 "parameters" : [
1329 {
1330 "type" : "field",
1331 "value" : ["scalars", "fabric_metadata_t.next_id"]
1332 },
1333 {
1334 "type" : "runtime_data",
1335 "value" : 0
1336 }
1337 ],
1338 "source_info" : {
1339 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001340 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001341 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001342 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001343 }
1344 }
1345 ]
1346 },
1347 {
Charles Chan384aea22018-08-23 22:08:02 -07001348 "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001349 "id" : 13,
Carmelo Casconef645e842018-07-16 18:31:52 +02001350 "runtime_data" : [
1351 {
1352 "name" : "next_id",
1353 "bitwidth" : 32
1354 }
1355 ],
1356 "primitives" : [
1357 {
1358 "op" : "assign",
1359 "parameters" : [
1360 {
1361 "type" : "field",
1362 "value" : ["scalars", "fabric_metadata_t.next_id"]
1363 },
1364 {
1365 "type" : "runtime_data",
1366 "value" : 0
1367 }
1368 ],
1369 "source_info" : {
1370 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001371 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001372 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001373 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001374 }
1375 }
1376 ]
1377 },
1378 {
Charles Chancd03f072018-08-31 17:46:37 -07001379 "name" : "FabricIngress.forwarding.nop_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001380 "id" : 14,
Charles Chancd03f072018-08-31 17:46:37 -07001381 "runtime_data" : [],
1382 "primitives" : []
1383 },
1384 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001385 "name" : "FabricIngress.acl.set_next_id_acl",
1386 "id" : 15,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001387 "runtime_data" : [
1388 {
1389 "name" : "next_id",
1390 "bitwidth" : 32
1391 }
1392 ],
1393 "primitives" : [
1394 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001395 "op" : "assign",
1396 "parameters" : [
1397 {
1398 "type" : "field",
1399 "value" : ["scalars", "fabric_metadata_t.next_id"]
1400 },
1401 {
1402 "type" : "runtime_data",
1403 "value" : 0
1404 }
1405 ],
1406 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001407 "filename" : "include/control/acl.p4",
1408 "line" : 33,
Yi Tseng47eac892018-07-11 02:17:04 +08001409 "column" : 8,
1410 "source_fragment" : "fabric_metadata.next_id = next_id"
1411 }
1412 }
1413 ]
1414 },
1415 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001416 "name" : "FabricIngress.acl.punt_to_cpu",
1417 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07001418 "runtime_data" : [],
1419 "primitives" : [
1420 {
1421 "op" : "assign",
1422 "parameters" : [
1423 {
1424 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001425 "value" : ["standard_metadata", "egress_spec"]
1426 },
1427 {
1428 "type" : "hexstr",
1429 "value" : "0x00ff"
1430 }
1431 ],
1432 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001433 "filename" : "include/control/acl.p4",
1434 "line" : 39,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001435 "column" : 8,
1436 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001437 }
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001438 },
1439 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001440 "op" : "assign",
1441 "parameters" : [
1442 {
1443 "type" : "field",
1444 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1445 },
1446 {
1447 "type" : "expression",
1448 "value" : {
1449 "type" : "expression",
1450 "value" : {
1451 "op" : "b2d",
1452 "left" : null,
1453 "right" : {
1454 "type" : "bool",
1455 "value" : true
1456 }
1457 }
1458 }
1459 }
1460 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001461 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001462 "filename" : "include/control/acl.p4",
1463 "line" : 40,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001464 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001465 "source_fragment" : "fabric_metadata.skip_next = true"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001466 }
1467 }
1468 ]
1469 },
1470 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001471 "name" : "FabricIngress.acl.set_clone_session_id",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001472 "id" : 17,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001473 "runtime_data" : [
1474 {
1475 "name" : "clone_id",
1476 "bitwidth" : 32
1477 }
1478 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001479 "primitives" : [
1480 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001481 "op" : "clone_ingress_pkt_to_egress",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001482 "parameters" : [
1483 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001484 "type" : "runtime_data",
1485 "value" : 0
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001486 },
1487 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001488 "type" : "hexstr",
1489 "value" : "0x1"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001490 }
1491 ],
1492 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001493 "filename" : "include/control/acl.p4",
1494 "line" : 46,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001495 "column" : 8,
Daniele Moro3b7a21b2019-06-25 17:33:40 -07001496 "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001497 }
Yi Tsengbe342052017-11-03 10:21:23 -07001498 }
1499 ]
1500 },
1501 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001502 "name" : "FabricIngress.acl.drop",
1503 "id" : 18,
Yi Tseng47eac892018-07-11 02:17:04 +08001504 "runtime_data" : [],
1505 "primitives" : [
1506 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001507 "op" : "mark_to_drop",
1508 "parameters" : [
1509 {
1510 "type" : "header",
1511 "value" : "standard_metadata"
1512 }
1513 ],
Yi Tseng47eac892018-07-11 02:17:04 +08001514 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001515 "filename" : "include/control/acl.p4",
1516 "line" : 51,
Yi Tseng47eac892018-07-11 02:17:04 +08001517 "column" : 8,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001518 "source_fragment" : "mark_to_drop(standard_metadata)"
Yi Tseng47eac892018-07-11 02:17:04 +08001519 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001520 },
1521 {
1522 "op" : "assign",
1523 "parameters" : [
1524 {
1525 "type" : "field",
1526 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1527 },
1528 {
1529 "type" : "expression",
1530 "value" : {
1531 "type" : "expression",
1532 "value" : {
1533 "op" : "b2d",
1534 "left" : null,
1535 "right" : {
1536 "type" : "bool",
1537 "value" : true
1538 }
1539 }
1540 }
1541 }
1542 ],
1543 "source_info" : {
1544 "filename" : "include/control/acl.p4",
1545 "line" : 52,
1546 "column" : 8,
1547 "source_fragment" : "fabric_metadata.skip_next = true"
1548 }
Yi Tseng47eac892018-07-11 02:17:04 +08001549 }
1550 ]
1551 },
1552 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001553 "name" : "FabricIngress.acl.nop_acl",
1554 "id" : 19,
Charles Chancf696e52018-08-16 16:25:13 -07001555 "runtime_data" : [],
1556 "primitives" : []
1557 },
1558 {
Yi Tseng47eac892018-07-11 02:17:04 +08001559 "name" : "FabricIngress.next.set_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001560 "id" : 20,
1561 "runtime_data" : [
1562 {
1563 "name" : "vlan_id",
1564 "bitwidth" : 12
1565 }
1566 ],
1567 "primitives" : [
1568 {
1569 "op" : "assign",
1570 "parameters" : [
1571 {
1572 "type" : "field",
1573 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1574 },
1575 {
1576 "type" : "runtime_data",
1577 "value" : 0
1578 }
1579 ],
1580 "source_info" : {
1581 "filename" : "include/control/next.p4",
1582 "line" : 70,
1583 "column" : 8,
1584 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1585 }
1586 }
1587 ]
1588 },
1589 {
1590 "name" : "FabricIngress.next.output_xconnect",
Charles Chancd03f072018-08-31 17:46:37 -07001591 "id" : 21,
Yi Tseng47eac892018-07-11 02:17:04 +08001592 "runtime_data" : [
1593 {
Yi Tsengbe342052017-11-03 10:21:23 -07001594 "name" : "port_num",
1595 "bitwidth" : 9
1596 }
1597 ],
1598 "primitives" : [
1599 {
1600 "op" : "assign",
1601 "parameters" : [
1602 {
1603 "type" : "field",
1604 "value" : ["standard_metadata", "egress_spec"]
1605 },
1606 {
1607 "type" : "runtime_data",
1608 "value" : 0
1609 }
1610 ],
1611 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001612 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001613 "line" : 31,
1614 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001615 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1616 }
1617 }
1618 ]
1619 },
1620 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001621 "name" : "FabricIngress.next.set_next_id_xconnect",
1622 "id" : 22,
1623 "runtime_data" : [
1624 {
1625 "name" : "next_id",
1626 "bitwidth" : 32
1627 }
1628 ],
1629 "primitives" : [
1630 {
1631 "op" : "assign",
1632 "parameters" : [
1633 {
1634 "type" : "field",
1635 "value" : ["scalars", "fabric_metadata_t.next_id"]
1636 },
1637 {
1638 "type" : "runtime_data",
1639 "value" : 0
1640 }
1641 ],
1642 "source_info" : {
1643 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07001644 "line" : 111,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001645 "column" : 8,
1646 "source_fragment" : "fabric_metadata.next_id = next_id"
1647 }
1648 }
1649 ]
1650 },
1651 {
1652 "name" : "FabricIngress.next.output_hashed",
1653 "id" : 23,
1654 "runtime_data" : [
1655 {
1656 "name" : "port_num",
1657 "bitwidth" : 9
1658 }
1659 ],
1660 "primitives" : [
1661 {
1662 "op" : "assign",
1663 "parameters" : [
1664 {
1665 "type" : "field",
1666 "value" : ["standard_metadata", "egress_spec"]
1667 },
1668 {
1669 "type" : "runtime_data",
1670 "value" : 0
1671 }
1672 ],
1673 "source_info" : {
1674 "filename" : "include/control/next.p4",
1675 "line" : 31,
1676 "column" : 5,
1677 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1678 }
1679 }
1680 ]
1681 },
1682 {
1683 "name" : "FabricIngress.next.routing_hashed",
Charles Chancd03f072018-08-31 17:46:37 -07001684 "id" : 24,
Yi Tseng47eac892018-07-11 02:17:04 +08001685 "runtime_data" : [
1686 {
1687 "name" : "port_num",
1688 "bitwidth" : 9
1689 },
1690 {
1691 "name" : "smac",
1692 "bitwidth" : 48
1693 },
1694 {
1695 "name" : "dmac",
1696 "bitwidth" : 48
1697 }
1698 ],
1699 "primitives" : [
1700 {
1701 "op" : "assign",
1702 "parameters" : [
1703 {
1704 "type" : "field",
1705 "value" : ["ethernet", "src_addr"]
1706 },
1707 {
1708 "type" : "runtime_data",
1709 "value" : 1
1710 }
1711 ],
1712 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001713 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001714 "line" : 36,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001715 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001716 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1717 }
1718 },
1719 {
1720 "op" : "assign",
1721 "parameters" : [
1722 {
1723 "type" : "field",
1724 "value" : ["ethernet", "dst_addr"]
1725 },
1726 {
1727 "type" : "runtime_data",
1728 "value" : 2
1729 }
1730 ],
1731 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001732 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001733 "line" : 41,
1734 "column" : 8,
1735 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1736 }
1737 },
1738 {
1739 "op" : "assign",
1740 "parameters" : [
1741 {
1742 "type" : "field",
1743 "value" : ["standard_metadata", "egress_spec"]
1744 },
1745 {
1746 "type" : "runtime_data",
1747 "value" : 0
1748 }
1749 ],
1750 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001751 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001752 "line" : 31,
1753 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001754 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001755 }
1756 }
1757 ]
1758 },
1759 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001760 "name" : "FabricIngress.next.mpls_routing_hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02001761 "id" : 25,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001762 "runtime_data" : [
1763 {
1764 "name" : "port_num",
1765 "bitwidth" : 9
1766 },
1767 {
1768 "name" : "smac",
1769 "bitwidth" : 48
1770 },
1771 {
1772 "name" : "dmac",
1773 "bitwidth" : 48
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001774 },
1775 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001776 "name" : "label",
1777 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001778 }
1779 ],
1780 "primitives" : [
1781 {
1782 "op" : "assign",
1783 "parameters" : [
1784 {
1785 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001786 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1787 },
1788 {
1789 "type" : "runtime_data",
1790 "value" : 3
1791 }
1792 ],
1793 "source_info" : {
1794 "filename" : "include/control/next.p4",
1795 "line" : 46,
1796 "column" : 8,
1797 "source_fragment" : "fabric_metadata.mpls_label = label; ..."
1798 }
1799 },
1800 {
1801 "op" : "assign",
1802 "parameters" : [
1803 {
1804 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001805 "value" : ["ethernet", "src_addr"]
1806 },
1807 {
1808 "type" : "runtime_data",
1809 "value" : 1
1810 }
1811 ],
1812 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001813 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001814 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001815 "column" : 8,
1816 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1817 }
1818 },
1819 {
1820 "op" : "assign",
1821 "parameters" : [
1822 {
1823 "type" : "field",
1824 "value" : ["ethernet", "dst_addr"]
1825 },
1826 {
1827 "type" : "runtime_data",
1828 "value" : 2
1829 }
1830 ],
1831 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001832 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001833 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001834 "column" : 8,
1835 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1836 }
1837 },
1838 {
1839 "op" : "assign",
1840 "parameters" : [
1841 {
1842 "type" : "field",
1843 "value" : ["standard_metadata", "egress_spec"]
1844 },
1845 {
1846 "type" : "runtime_data",
1847 "value" : 0
1848 }
1849 ],
1850 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001851 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001852 "line" : 31,
1853 "column" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07001854 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1855 }
Yi Tsengbe342052017-11-03 10:21:23 -07001856 }
1857 ]
1858 },
1859 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001860 "name" : "FabricIngress.next.set_mcast_group_id",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001861 "id" : 26,
1862 "runtime_data" : [
1863 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001864 "name" : "group_id",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001865 "bitwidth" : 16
1866 }
1867 ],
1868 "primitives" : [
1869 {
1870 "op" : "assign",
1871 "parameters" : [
1872 {
1873 "type" : "field",
1874 "value" : ["standard_metadata", "mcast_grp"]
1875 },
1876 {
1877 "type" : "runtime_data",
1878 "value" : 0
1879 }
1880 ],
1881 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001882 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07001883 "line" : 227,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001884 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001885 "source_fragment" : "standard_metadata.mcast_grp = group_id"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001886 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02001887 },
1888 {
1889 "op" : "assign",
1890 "parameters" : [
1891 {
1892 "type" : "field",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001893 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02001894 },
1895 {
1896 "type" : "expression",
1897 "value" : {
1898 "type" : "expression",
1899 "value" : {
1900 "op" : "b2d",
1901 "left" : null,
1902 "right" : {
1903 "type" : "bool",
1904 "value" : true
1905 }
1906 }
1907 }
1908 }
1909 ],
1910 "source_info" : {
1911 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07001912 "line" : 228,
Carmelo Casconea5400af2018-07-17 22:11:54 +02001913 "column" : 8,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001914 "source_fragment" : "fabric_metadata.is_multicast = true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02001915 }
Esin Karaman971fb7f2017-12-28 13:44:52 +00001916 }
1917 ]
1918 },
1919 {
1920 "name" : "act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001921 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001922 "runtime_data" : [],
1923 "primitives" : [
1924 {
1925 "op" : "assign",
1926 "parameters" : [
1927 {
1928 "type" : "field",
1929 "value" : ["standard_metadata", "egress_spec"]
1930 },
1931 {
1932 "type" : "field",
1933 "value" : ["packet_out", "egress_port"]
1934 }
1935 ],
1936 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001937 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001938 "line" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001939 "column" : 12,
1940 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
1941 }
Yi Tseng1d842672017-11-28 16:06:52 -08001942 },
1943 {
1944 "op" : "remove_header",
1945 "parameters" : [
1946 {
1947 "type" : "header",
1948 "value" : "packet_out"
1949 }
1950 ],
1951 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001952 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001953 "line" : 26,
Yi Tseng1d842672017-11-28 16:06:52 -08001954 "column" : 12,
1955 "source_fragment" : "hdr.packet_out.setInvalid()"
1956 }
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001957 },
1958 {
1959 "op" : "assign",
1960 "parameters" : [
1961 {
1962 "type" : "field",
1963 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
1964 },
1965 {
1966 "type" : "expression",
1967 "value" : {
1968 "type" : "expression",
1969 "value" : {
1970 "op" : "b2d",
1971 "left" : null,
1972 "right" : {
1973 "type" : "bool",
1974 "value" : true
1975 }
1976 }
1977 }
1978 }
1979 ],
1980 "source_info" : {
1981 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001982 "line" : 27,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001983 "column" : 12,
1984 "source_fragment" : "fabric_metadata.is_controller_packet_out = true"
1985 }
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001986 },
1987 {
1988 "op" : "exit",
1989 "parameters" : [],
1990 "source_info" : {
1991 "filename" : "include/control/packetio.p4",
1992 "line" : 29,
1993 "column" : 12,
1994 "source_fragment" : "exit"
1995 }
Yi Tsengbe342052017-11-03 10:21:23 -07001996 }
1997 ]
1998 },
1999 {
2000 "name" : "act_0",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002001 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002002 "runtime_data" : [],
2003 "primitives" : [
2004 {
2005 "op" : "assign",
2006 "parameters" : [
2007 {
2008 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002009 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2010 },
2011 {
2012 "type" : "field",
2013 "value" : ["vlan_tag", "vlan_id"]
2014 }
2015 ],
2016 "source_info" : {
2017 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002018 "line" : 109,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002019 "column" : 12,
2020 "source_fragment" : "fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id"
2021 }
2022 },
2023 {
2024 "op" : "assign",
2025 "parameters" : [
2026 {
2027 "type" : "field",
2028 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2029 },
2030 {
2031 "type" : "field",
2032 "value" : ["vlan_tag", "pri"]
2033 }
2034 ],
2035 "source_info" : {
2036 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002037 "line" : 110,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002038 "column" : 12,
2039 "source_fragment" : "fabric_metadata.vlan_pri = hdr.vlan_tag.pri"
2040 }
2041 },
2042 {
2043 "op" : "assign",
2044 "parameters" : [
2045 {
2046 "type" : "field",
2047 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2048 },
2049 {
2050 "type" : "field",
2051 "value" : ["vlan_tag", "cfi"]
2052 }
2053 ],
2054 "source_info" : {
2055 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002056 "line" : 111,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002057 "column" : 12,
2058 "source_fragment" : "fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi"
2059 }
Yi Tseng1d842672017-11-28 16:06:52 -08002060 }
2061 ]
2062 },
2063 {
2064 "name" : "act_1",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002065 "id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002066 "runtime_data" : [],
2067 "primitives" : [
2068 {
2069 "op" : "assign",
2070 "parameters" : [
2071 {
2072 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002073 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2074 },
2075 {
2076 "type" : "hexstr",
2077 "value" : "0x41"
2078 }
2079 ],
2080 "source_info" : {
2081 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002082 "line" : 125,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002083 "column" : 12,
2084 "source_fragment" : "fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1"
2085 }
2086 }
2087 ]
2088 },
2089 {
2090 "name" : "act_2",
2091 "id" : 30,
2092 "runtime_data" : [],
2093 "primitives" : [
2094 {
2095 "op" : "assign",
2096 "parameters" : [
2097 {
2098 "type" : "field",
2099 "value" : ["scalars", "tmp"]
Yi Tseng1d842672017-11-28 16:06:52 -08002100 },
2101 {
2102 "type" : "expression",
2103 "value" : {
2104 "type" : "expression",
2105 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002106 "op" : "&",
2107 "left" : {
2108 "type" : "field",
2109 "value" : ["standard_metadata", "egress_spec"]
2110 },
Yi Tseng1d842672017-11-28 16:06:52 -08002111 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002112 "type" : "hexstr",
2113 "value" : "0xffffffff"
Yi Tseng1d842672017-11-28 16:06:52 -08002114 }
2115 }
2116 }
2117 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002118 ],
2119 "source_info" : {
2120 "filename" : "include/control/port_counter.p4",
2121 "line" : 31,
2122 "column" : 38,
2123 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2124 }
2125 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002126 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002127 "op" : "count",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002128 "parameters" : [
2129 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002130 "type" : "counter_array",
2131 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002132 },
2133 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002134 "type" : "field",
2135 "value" : ["scalars", "tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002136 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002137 ],
2138 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002139 "filename" : "include/control/port_counter.p4",
2140 "line" : 31,
2141 "column" : 12,
2142 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002143 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002144 }
2145 ]
2146 },
2147 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002148 "name" : "act_3",
2149 "id" : 31,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002150 "runtime_data" : [],
2151 "primitives" : [
2152 {
2153 "op" : "assign",
2154 "parameters" : [
2155 {
2156 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002157 "value" : ["scalars", "tmp_3"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002158 },
2159 {
2160 "type" : "expression",
2161 "value" : {
2162 "type" : "expression",
2163 "value" : {
2164 "op" : "&",
2165 "left" : {
2166 "type" : "field",
2167 "value" : ["standard_metadata", "ingress_port"]
2168 },
2169 "right" : {
2170 "type" : "hexstr",
2171 "value" : "0xffffffff"
2172 }
2173 }
2174 }
2175 }
2176 ],
2177 "source_info" : {
2178 "filename" : "include/control/port_counter.p4",
2179 "line" : 34,
2180 "column" : 39,
2181 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
2182 }
2183 },
2184 {
2185 "op" : "count",
2186 "parameters" : [
2187 {
2188 "type" : "counter_array",
2189 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
2190 },
2191 {
2192 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002193 "value" : ["scalars", "tmp_3"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002194 }
2195 ],
2196 "source_info" : {
2197 "filename" : "include/control/port_counter.p4",
2198 "line" : 34,
2199 "column" : 12,
2200 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2201 }
2202 }
2203 ]
2204 },
2205 {
2206 "name" : "nop",
Daniele Moro5a2de712019-09-24 14:34:07 -07002207 "id" : 32,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002208 "runtime_data" : [],
2209 "primitives" : []
2210 },
2211 {
2212 "name" : "FabricEgress.egress_next.pop_mpls_if_present",
Daniele Moro5a2de712019-09-24 14:34:07 -07002213 "id" : 33,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002214 "runtime_data" : [],
2215 "primitives" : [
2216 {
2217 "op" : "remove_header",
2218 "parameters" : [
2219 {
2220 "type" : "header",
2221 "value" : "mpls"
2222 }
2223 ],
2224 "source_info" : {
2225 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002226 "line" : 266,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002227 "column" : 8,
2228 "source_fragment" : "hdr.mpls.setInvalid()"
2229 }
2230 },
2231 {
2232 "op" : "assign",
2233 "parameters" : [
2234 {
2235 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002236 "value" : ["eth_type", "value"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002237 },
2238 {
2239 "type" : "field",
2240 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
2241 }
2242 ],
2243 "source_info" : {
2244 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002245 "line" : 268,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002246 "column" : 8,
Daniele Moro5a2de712019-09-24 14:34:07 -07002247 "source_fragment" : "hdr.eth_type.value = fabric_metadata.ip_eth_type"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002248 }
2249 }
2250 ]
2251 },
2252 {
2253 "name" : "FabricEgress.egress_next.set_mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07002254 "id" : 34,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002255 "runtime_data" : [],
2256 "primitives" : [
2257 {
2258 "op" : "add_header",
2259 "parameters" : [
2260 {
2261 "type" : "header",
2262 "value" : "mpls"
2263 }
2264 ],
2265 "source_info" : {
2266 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002267 "line" : 273,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002268 "column" : 8,
2269 "source_fragment" : "hdr.mpls.setValid()"
2270 }
2271 },
2272 {
2273 "op" : "assign",
2274 "parameters" : [
2275 {
2276 "type" : "field",
2277 "value" : ["mpls", "label"]
2278 },
2279 {
2280 "type" : "field",
2281 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
2282 }
2283 ],
2284 "source_info" : {
2285 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002286 "line" : 274,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002287 "column" : 8,
2288 "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label"
2289 }
2290 },
2291 {
2292 "op" : "assign",
2293 "parameters" : [
2294 {
2295 "type" : "field",
2296 "value" : ["mpls", "tc"]
2297 },
2298 {
2299 "type" : "hexstr",
2300 "value" : "0x00"
2301 }
2302 ],
2303 "source_info" : {
2304 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002305 "line" : 275,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002306 "column" : 8,
2307 "source_fragment" : "hdr.mpls.tc = 3w0"
2308 }
2309 },
2310 {
2311 "op" : "assign",
2312 "parameters" : [
2313 {
2314 "type" : "field",
2315 "value" : ["mpls", "bos"]
2316 },
2317 {
2318 "type" : "hexstr",
2319 "value" : "0x01"
2320 }
2321 ],
2322 "source_info" : {
2323 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002324 "line" : 276,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002325 "column" : 8,
2326 "source_fragment" : "hdr.mpls.bos = 1w1"
2327 }
2328 },
2329 {
2330 "op" : "assign",
2331 "parameters" : [
2332 {
2333 "type" : "field",
2334 "value" : ["mpls", "ttl"]
2335 },
2336 {
2337 "type" : "field",
2338 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2339 }
2340 ],
2341 "source_info" : {
2342 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002343 "line" : 277,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002344 "column" : 8,
2345 "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl"
2346 }
2347 },
2348 {
2349 "op" : "assign",
2350 "parameters" : [
2351 {
2352 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002353 "value" : ["eth_type", "value"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002354 },
2355 {
2356 "type" : "hexstr",
2357 "value" : "0x8847"
2358 }
2359 ],
2360 "source_info" : {
2361 "filename" : "include/control/../define.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002362 "line" : 112,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002363 "column" : 31,
2364 "source_fragment" : "0x8847; ..."
2365 }
2366 }
2367 ]
2368 },
2369 {
2370 "name" : "FabricEgress.egress_next.push_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07002371 "id" : 35,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002372 "runtime_data" : [],
2373 "primitives" : [
2374 {
2375 "op" : "add_header",
2376 "parameters" : [
2377 {
2378 "type" : "header",
2379 "value" : "vlan_tag"
2380 }
2381 ],
2382 "source_info" : {
2383 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002384 "line" : 285,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002385 "column" : 8,
2386 "source_fragment" : "hdr.vlan_tag.setValid()"
2387 }
2388 },
2389 {
2390 "op" : "assign",
2391 "parameters" : [
2392 {
2393 "type" : "field",
2394 "value" : ["vlan_tag", "cfi"]
2395 },
2396 {
2397 "type" : "field",
2398 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2399 }
2400 ],
2401 "source_info" : {
2402 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002403 "line" : 286,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002404 "column" : 8,
2405 "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi"
2406 }
2407 },
2408 {
2409 "op" : "assign",
2410 "parameters" : [
2411 {
2412 "type" : "field",
2413 "value" : ["vlan_tag", "pri"]
2414 },
2415 {
2416 "type" : "field",
2417 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2418 }
2419 ],
2420 "source_info" : {
2421 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002422 "line" : 287,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002423 "column" : 8,
2424 "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri"
2425 }
2426 },
2427 {
2428 "op" : "assign",
2429 "parameters" : [
2430 {
2431 "type" : "field",
2432 "value" : ["vlan_tag", "eth_type"]
2433 },
2434 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002435 "type" : "hexstr",
2436 "value" : "0x8100"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002437 }
2438 ],
2439 "source_info" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07002440 "filename" : "include/control/../define.p4",
2441 "line" : 111,
2442 "column" : 31,
2443 "source_fragment" : "0x8100; ..."
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002444 }
2445 },
2446 {
2447 "op" : "assign",
2448 "parameters" : [
2449 {
2450 "type" : "field",
2451 "value" : ["vlan_tag", "vlan_id"]
2452 },
2453 {
2454 "type" : "field",
2455 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2456 }
2457 ],
2458 "source_info" : {
2459 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002460 "line" : 289,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002461 "column" : 8,
2462 "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id"
2463 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002464 }
2465 ]
2466 },
2467 {
2468 "name" : "FabricEgress.egress_next.pop_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07002469 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002470 "runtime_data" : [],
2471 "primitives" : [
2472 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002473 "op" : "remove_header",
2474 "parameters" : [
2475 {
2476 "type" : "header",
2477 "value" : "vlan_tag"
2478 }
2479 ],
2480 "source_info" : {
2481 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002482 "line" : 312,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002483 "column" : 8,
2484 "source_fragment" : "hdr.vlan_tag.setInvalid()"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002485 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002486 }
2487 ]
2488 },
2489 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002490 "name" : "act_4",
2491 "id" : 37,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002492 "runtime_data" : [],
2493 "primitives" : [
2494 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002495 "op" : "exit",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002496 "parameters" : [],
2497 "source_info" : {
2498 "filename" : "include/control/packetio.p4",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002499 "line" : 41,
2500 "column" : 12,
2501 "source_fragment" : "exit"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002502 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002503 }
2504 ]
2505 },
2506 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002507 "name" : "act_5",
2508 "id" : 38,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002509 "runtime_data" : [],
2510 "primitives" : [
2511 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002512 "op" : "add_header",
2513 "parameters" : [
2514 {
2515 "type" : "header",
2516 "value" : "packet_in"
2517 }
2518 ],
2519 "source_info" : {
2520 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002521 "line" : 44,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002522 "column" : 12,
2523 "source_fragment" : "hdr.packet_in.setValid()"
2524 }
2525 },
2526 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02002527 "op" : "assign",
2528 "parameters" : [
2529 {
2530 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002531 "value" : ["packet_in", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002532 },
2533 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002534 "type" : "field",
2535 "value" : ["standard_metadata", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002536 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002537 ],
2538 "source_info" : {
2539 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002540 "line" : 45,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002541 "column" : 12,
2542 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2543 }
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002544 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002545 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002546 "op" : "exit",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002547 "parameters" : [],
2548 "source_info" : {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002549 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002550 "line" : 47,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002551 "column" : 12,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002552 "source_fragment" : "exit"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002553 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002554 }
2555 ]
2556 },
2557 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002558 "name" : "act_6",
2559 "id" : 39,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002560 "runtime_data" : [],
2561 "primitives" : [
2562 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002563 "op" : "mark_to_drop",
2564 "parameters" : [
2565 {
2566 "type" : "header",
2567 "value" : "standard_metadata"
2568 }
2569 ],
2570 "source_info" : {
2571 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002572 "line" : 333,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002573 "column" : 12,
2574 "source_fragment" : "mark_to_drop(standard_metadata)"
2575 }
2576 }
2577 ]
2578 },
2579 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002580 "name" : "act_7",
2581 "id" : 40,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002582 "runtime_data" : [],
2583 "primitives" : [
2584 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002585 "op" : "assign",
2586 "parameters" : [
2587 {
2588 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002589 "value" : ["scalars", "egress_next_tmp"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002590 },
2591 {
2592 "type" : "expression",
2593 "value" : {
2594 "type" : "expression",
2595 "value" : {
2596 "op" : "b2d",
2597 "left" : null,
2598 "right" : {
2599 "type" : "bool",
2600 "value" : true
2601 }
2602 }
2603 }
2604 }
2605 ]
2606 }
2607 ]
2608 },
2609 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002610 "name" : "act_8",
2611 "id" : 41,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002612 "runtime_data" : [],
2613 "primitives" : [
2614 {
2615 "op" : "assign",
2616 "parameters" : [
2617 {
2618 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002619 "value" : ["scalars", "egress_next_tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002620 },
2621 {
2622 "type" : "expression",
2623 "value" : {
2624 "type" : "expression",
2625 "value" : {
2626 "op" : "b2d",
2627 "left" : null,
2628 "right" : {
2629 "type" : "bool",
2630 "value" : false
2631 }
2632 }
2633 }
2634 }
2635 ]
2636 }
2637 ]
2638 },
2639 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002640 "name" : "act_9",
2641 "id" : 42,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002642 "runtime_data" : [],
2643 "primitives" : [
2644 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002645 "op" : "mark_to_drop",
2646 "parameters" : [
2647 {
2648 "type" : "header",
2649 "value" : "standard_metadata"
2650 }
2651 ],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002652 "source_info" : {
2653 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002654 "line" : 366,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002655 "column" : 35,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002656 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002657 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002658 }
2659 ]
2660 },
2661 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002662 "name" : "act_10",
2663 "id" : 43,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002664 "runtime_data" : [],
2665 "primitives" : [
2666 {
2667 "op" : "assign",
2668 "parameters" : [
2669 {
2670 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002671 "value" : ["mpls", "ttl"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002672 },
2673 {
2674 "type" : "expression",
2675 "value" : {
2676 "type" : "expression",
2677 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002678 "op" : "&",
2679 "left" : {
2680 "type" : "expression",
2681 "value" : {
2682 "op" : "+",
2683 "left" : {
2684 "type" : "field",
2685 "value" : ["mpls", "ttl"]
2686 },
2687 "right" : {
2688 "type" : "hexstr",
2689 "value" : "0xff"
2690 }
2691 }
2692 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002693 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002694 "type" : "hexstr",
2695 "value" : "0xff"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002696 }
2697 }
2698 }
2699 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002700 ],
2701 "source_info" : {
2702 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002703 "line" : 365,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002704 "column" : 12,
2705 "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
2706 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002707 }
2708 ]
2709 },
2710 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002711 "name" : "act_11",
2712 "id" : 44,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002713 "runtime_data" : [],
2714 "primitives" : [
2715 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002716 "op" : "mark_to_drop",
2717 "parameters" : [
2718 {
2719 "type" : "header",
2720 "value" : "standard_metadata"
2721 }
2722 ],
Carmelo Casconea5400af2018-07-17 22:11:54 +02002723 "source_info" : {
2724 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002725 "line" : 370,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002726 "column" : 39,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002727 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002728 }
2729 }
2730 ]
2731 },
2732 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002733 "name" : "act_12",
2734 "id" : 45,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002735 "runtime_data" : [],
2736 "primitives" : [
2737 {
2738 "op" : "assign",
2739 "parameters" : [
2740 {
2741 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002742 "value" : ["ipv4", "ttl"]
2743 },
2744 {
2745 "type" : "expression",
2746 "value" : {
2747 "type" : "expression",
2748 "value" : {
2749 "op" : "&",
2750 "left" : {
2751 "type" : "expression",
2752 "value" : {
2753 "op" : "+",
2754 "left" : {
2755 "type" : "field",
2756 "value" : ["ipv4", "ttl"]
2757 },
2758 "right" : {
2759 "type" : "hexstr",
2760 "value" : "0xff"
2761 }
2762 }
2763 },
2764 "right" : {
2765 "type" : "hexstr",
2766 "value" : "0xff"
2767 }
2768 }
2769 }
2770 }
2771 ],
2772 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002773 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002774 "line" : 369,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002775 "column" : 16,
Yi Tseng1d842672017-11-28 16:06:52 -08002776 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2777 }
2778 }
2779 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002780 }
2781 ],
2782 "pipelines" : [
2783 {
2784 "name" : "ingress",
2785 "id" : 0,
2786 "source_info" : {
2787 "filename" : "fabric.p4",
Carmelo Cascone4d8785b2019-05-31 17:11:26 -07002788 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002789 "column" : 8,
2790 "source_fragment" : "FabricIngress"
2791 },
2792 "init_table" : "node_2",
2793 "tables" : [
2794 {
2795 "name" : "tbl_act",
2796 "id" : 0,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002797 "source_info" : {
2798 "filename" : "include/control/packetio.p4",
2799 "line" : 25,
2800 "column" : 42,
2801 "source_fragment" : "= hdr.packet_out.egress_port; ..."
2802 },
Yi Tsengbe342052017-11-03 10:21:23 -07002803 "key" : [],
2804 "match_type" : "exact",
2805 "type" : "simple",
2806 "max_size" : 1024,
2807 "with_counters" : false,
2808 "support_timeout" : false,
2809 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002810 "action_ids" : [27],
Yi Tsengbe342052017-11-03 10:21:23 -07002811 "actions" : ["act"],
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002812 "base_default_next" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07002813 "next_tables" : {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002814 "act" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07002815 },
2816 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002817 "action_id" : 27,
2818 "action_const" : true,
2819 "action_data" : [],
2820 "action_entry_const" : true
2821 }
2822 },
2823 {
2824 "name" : "tbl_act_0",
2825 "id" : 1,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002826 "source_info" : {
2827 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002828 "line" : 109,
Daniele Moro7c3a0022019-07-12 13:38:34 -07002829 "column" : 36,
2830 "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
Carmelo Cascone3032b872019-04-13 01:23:54 -07002831 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002832 "key" : [],
2833 "match_type" : "exact",
2834 "type" : "simple",
2835 "max_size" : 1024,
2836 "with_counters" : false,
2837 "support_timeout" : false,
2838 "direct_meters" : null,
2839 "action_ids" : [28],
2840 "actions" : ["act_0"],
2841 "base_default_next" : "node_6",
2842 "next_tables" : {
2843 "act_0" : "node_6"
2844 },
2845 "default_entry" : {
2846 "action_id" : 28,
2847 "action_const" : true,
2848 "action_data" : [],
2849 "action_entry_const" : true
2850 }
2851 },
2852 {
2853 "name" : "tbl_act_1",
2854 "id" : 2,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002855 "source_info" : {
2856 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002857 "line" : 125,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002858 "column" : 37,
2859 "source_fragment" : "="
2860 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002861 "key" : [],
2862 "match_type" : "exact",
2863 "type" : "simple",
2864 "max_size" : 1024,
2865 "with_counters" : false,
2866 "support_timeout" : false,
2867 "direct_meters" : null,
2868 "action_ids" : [29],
2869 "actions" : ["act_1"],
Daniele Moro5a2de712019-09-24 14:34:07 -07002870 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002871 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07002872 "act_1" : "FabricIngress.filtering.ingress_port_vlan"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002873 },
2874 "default_entry" : {
2875 "action_id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002876 "action_const" : true,
2877 "action_data" : [],
2878 "action_entry_const" : true
2879 }
2880 },
2881 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002882 "name" : "FabricIngress.filtering.ingress_port_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07002883 "id" : 3,
Daniele Moro7c3a0022019-07-12 13:38:34 -07002884 "source_info" : {
2885 "filename" : "include/control/filtering.p4",
2886 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07002887 "column" : 10,
2888 "source_fragment" : "ingress_port_vlan"
2889 },
2890 "key" : [
2891 {
2892 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002893 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002894 "target" : ["standard_metadata", "ingress_port"],
2895 "mask" : null
2896 },
2897 {
2898 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002899 "name" : "vlan_is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07002900 "target" : ["vlan_tag", "$valid$"],
2901 "mask" : null
2902 },
2903 {
2904 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002905 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002906 "target" : ["vlan_tag", "vlan_id"],
2907 "mask" : null
Daniele Moro7c3a0022019-07-12 13:38:34 -07002908 },
2909 {
2910 "match_type" : "ternary",
2911 "name" : "inner_vlan_id",
2912 "target" : ["inner_vlan_tag", "vlan_id"],
2913 "mask" : null
Yi Tsengbe342052017-11-03 10:21:23 -07002914 }
2915 ],
2916 "match_type" : "ternary",
2917 "type" : "simple",
2918 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002919 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002920 "support_timeout" : false,
2921 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002922 "action_ids" : [7, 8, 9],
2923 "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"],
2924 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002925 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002926 "FabricIngress.filtering.deny" : "FabricIngress.filtering.fwd_classifier",
2927 "FabricIngress.filtering.permit" : "FabricIngress.filtering.fwd_classifier",
2928 "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002929 },
2930 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002931 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07002932 "action_const" : true,
2933 "action_data" : [],
2934 "action_entry_const" : true
2935 }
2936 },
2937 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002938 "name" : "FabricIngress.filtering.fwd_classifier",
Daniele Moro5a2de712019-09-24 14:34:07 -07002939 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07002940 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002941 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002942 "line" : 90,
Yi Tsengbe342052017-11-03 10:21:23 -07002943 "column" : 10,
2944 "source_fragment" : "fwd_classifier"
2945 },
2946 "key" : [
2947 {
2948 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002949 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002950 "target" : ["standard_metadata", "ingress_port"],
2951 "mask" : null
2952 },
2953 {
Charles Chan384aea22018-08-23 22:08:02 -07002954 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002955 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07002956 "target" : ["ethernet", "dst_addr"],
2957 "mask" : null
2958 },
2959 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002960 "match_type" : "ternary",
2961 "name" : "eth_type",
2962 "target" : ["eth_type", "value"],
Daniele Moro7c3a0022019-07-12 13:38:34 -07002963 "mask" : null
2964 },
2965 {
2966 "match_type" : "exact",
Daniele Moro5a2de712019-09-24 14:34:07 -07002967 "name" : "ip_eth_type",
2968 "target" : ["scalars", "fabric_metadata_t.ip_eth_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002969 "mask" : null
2970 }
2971 ],
Charles Chan384aea22018-08-23 22:08:02 -07002972 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002973 "type" : "simple",
2974 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002975 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002976 "support_timeout" : false,
2977 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002978 "action_ids" : [10],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002979 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Daniele Moro5a2de712019-09-24 14:34:07 -07002980 "base_default_next" : "node_10",
Yi Tsengbe342052017-11-03 10:21:23 -07002981 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07002982 "FabricIngress.filtering.set_forwarding_type" : "node_10"
Yi Tsengbe342052017-11-03 10:21:23 -07002983 },
2984 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002985 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07002986 "action_const" : true,
2987 "action_data" : ["0x0"],
2988 "action_entry_const" : true
2989 }
2990 },
2991 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002992 "name" : "FabricIngress.forwarding.bridging",
Daniele Moro5a2de712019-09-24 14:34:07 -07002993 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07002994 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002995 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002996 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002997 "column" : 10,
2998 "source_fragment" : "bridging"
2999 },
3000 "key" : [
3001 {
3002 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003003 "name" : "vlan_id",
3004 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tsengbe342052017-11-03 10:21:23 -07003005 "mask" : null
3006 },
3007 {
3008 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003009 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003010 "target" : ["ethernet", "dst_addr"],
3011 "mask" : null
3012 }
3013 ],
3014 "match_type" : "ternary",
3015 "type" : "simple",
3016 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003017 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003018 "support_timeout" : false,
3019 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003020 "action_ids" : [11, 0],
3021 "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
3022 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003023 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003024 "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
3025 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003026 },
3027 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003028 "action_id" : 0,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003029 "action_const" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003030 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003031 "action_entry_const" : true
Yi Tseng1d842672017-11-28 16:06:52 -08003032 }
3033 },
3034 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003035 "name" : "FabricIngress.forwarding.mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07003036 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003037 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003038 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003039 "line" : 71,
Yi Tseng1d842672017-11-28 16:06:52 -08003040 "column" : 10,
3041 "source_fragment" : "mpls"
3042 },
3043 "key" : [
3044 {
3045 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003046 "name" : "mpls_label",
3047 "target" : ["scalars", "fabric_metadata_t.mpls_label"],
Yi Tseng1d842672017-11-28 16:06:52 -08003048 "mask" : null
3049 }
3050 ],
3051 "match_type" : "exact",
3052 "type" : "simple",
3053 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003054 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003055 "support_timeout" : false,
3056 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003057 "action_ids" : [12, 1],
3058 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
3059 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003060 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003061 "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
3062 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003063 },
3064 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003065 "action_id" : 1,
Yi Tseng1d842672017-11-28 16:06:52 -08003066 "action_const" : true,
3067 "action_data" : [],
3068 "action_entry_const" : true
3069 }
3070 },
3071 {
Charles Chan384aea22018-08-23 22:08:02 -07003072 "name" : "FabricIngress.forwarding.routing_v4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003073 "id" : 7,
Yi Tseng1d842672017-11-28 16:06:52 -08003074 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003075 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003076 "line" : 108,
Yi Tseng1d842672017-11-28 16:06:52 -08003077 "column" : 10,
Charles Chan384aea22018-08-23 22:08:02 -07003078 "source_fragment" : "routing_v4"
Yi Tseng1d842672017-11-28 16:06:52 -08003079 },
3080 "key" : [
3081 {
3082 "match_type" : "lpm",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003083 "name" : "ipv4_dst",
Yi Tseng1d842672017-11-28 16:06:52 -08003084 "target" : ["ipv4", "dst_addr"],
3085 "mask" : null
3086 }
3087 ],
3088 "match_type" : "lpm",
3089 "type" : "simple",
3090 "max_size" : 1024,
Daniele Moro5a2de712019-09-24 14:34:07 -07003091 "with_counters" : false,
Yi Tseng1d842672017-11-28 16:06:52 -08003092 "support_timeout" : false,
3093 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003094 "action_ids" : [13, 14, 2],
3095 "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
3096 "base_default_next" : "FabricIngress.acl.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003097 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003098 "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
3099 "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
3100 "nop" : "FabricIngress.acl.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003101 },
3102 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003103 "action_id" : 2,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003104 "action_const" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003105 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003106 "action_entry_const" : true
Yi Tsengbe342052017-11-03 10:21:23 -07003107 }
3108 },
3109 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003110 "name" : "FabricIngress.acl.acl",
Daniele Moro5a2de712019-09-24 14:34:07 -07003111 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003112 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003113 "filename" : "include/control/acl.p4",
3114 "line" : 60,
Yi Tsengbe342052017-11-03 10:21:23 -07003115 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003116 "source_fragment" : "acl"
3117 },
3118 "key" : [
3119 {
3120 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003121 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003122 "target" : ["standard_metadata", "ingress_port"],
3123 "mask" : null
3124 },
3125 {
3126 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003127 "name" : "ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003128 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3129 "mask" : null
3130 },
3131 {
3132 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003133 "name" : "l4_sport",
3134 "target" : ["scalars", "fabric_metadata_t.l4_sport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003135 "mask" : null
3136 },
3137 {
3138 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003139 "name" : "l4_dport",
3140 "target" : ["scalars", "fabric_metadata_t.l4_dport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003141 "mask" : null
3142 },
3143 {
3144 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003145 "name" : "eth_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003146 "target" : ["ethernet", "dst_addr"],
3147 "mask" : null
3148 },
3149 {
3150 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003151 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003152 "target" : ["ethernet", "src_addr"],
3153 "mask" : null
3154 },
3155 {
3156 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003157 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003158 "target" : ["vlan_tag", "vlan_id"],
3159 "mask" : null
3160 },
3161 {
3162 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003163 "name" : "eth_type",
Daniele Moro5a2de712019-09-24 14:34:07 -07003164 "target" : ["eth_type", "value"],
Yi Tseng8235a1a2018-07-24 20:57:28 +08003165 "mask" : null
3166 },
3167 {
3168 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003169 "name" : "ipv4_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003170 "target" : ["ipv4", "src_addr"],
3171 "mask" : null
3172 },
3173 {
3174 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003175 "name" : "ipv4_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003176 "target" : ["ipv4", "dst_addr"],
3177 "mask" : null
3178 },
3179 {
3180 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003181 "name" : "icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003182 "target" : ["icmp", "icmp_type"],
3183 "mask" : null
3184 },
3185 {
3186 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003187 "name" : "icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003188 "target" : ["icmp", "icmp_code"],
3189 "mask" : null
3190 }
3191 ],
3192 "match_type" : "ternary",
3193 "type" : "simple",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003194 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003195 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003196 "support_timeout" : false,
3197 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003198 "action_ids" : [15, 16, 17, 18, 19],
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003199 "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
Daniele Moro5a2de712019-09-24 14:34:07 -07003200 "base_default_next" : "node_18",
Yi Tsengbe342052017-11-03 10:21:23 -07003201 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003202 "FabricIngress.acl.set_next_id_acl" : "node_18",
3203 "FabricIngress.acl.punt_to_cpu" : "node_18",
3204 "FabricIngress.acl.set_clone_session_id" : "node_18",
3205 "FabricIngress.acl.drop" : "node_18",
3206 "FabricIngress.acl.nop_acl" : "node_18"
Yi Tsengbe342052017-11-03 10:21:23 -07003207 },
3208 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003209 "action_id" : 19,
Yi Tsengbe342052017-11-03 10:21:23 -07003210 "action_const" : true,
3211 "action_data" : [],
3212 "action_entry_const" : true
3213 }
3214 },
3215 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003216 "name" : "FabricIngress.next.xconnect",
Daniele Moro5a2de712019-09-24 14:34:07 -07003217 "id" : 9,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003218 "source_info" : {
3219 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003220 "line" : 115,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003221 "column" : 10,
3222 "source_fragment" : "xconnect"
3223 },
3224 "key" : [
3225 {
3226 "match_type" : "exact",
3227 "name" : "ig_port",
3228 "target" : ["standard_metadata", "ingress_port"],
3229 "mask" : null
3230 },
3231 {
3232 "match_type" : "exact",
3233 "name" : "next_id",
3234 "target" : ["scalars", "fabric_metadata_t.next_id"],
3235 "mask" : null
3236 }
3237 ],
3238 "match_type" : "exact",
3239 "type" : "simple",
3240 "max_size" : 1024,
3241 "with_counters" : true,
3242 "support_timeout" : false,
3243 "direct_meters" : null,
3244 "action_ids" : [21, 22, 4],
3245 "actions" : ["FabricIngress.next.output_xconnect", "FabricIngress.next.set_next_id_xconnect", "nop"],
3246 "base_default_next" : "FabricIngress.next.hashed",
3247 "next_tables" : {
3248 "FabricIngress.next.output_xconnect" : "FabricIngress.next.hashed",
3249 "FabricIngress.next.set_next_id_xconnect" : "FabricIngress.next.hashed",
3250 "nop" : "FabricIngress.next.hashed"
3251 },
3252 "default_entry" : {
3253 "action_id" : 4,
3254 "action_const" : true,
3255 "action_data" : [],
3256 "action_entry_const" : true
3257 }
3258 },
3259 {
3260 "name" : "FabricIngress.next.hashed",
Daniele Moro5a2de712019-09-24 14:34:07 -07003261 "id" : 10,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003262 "source_info" : {
3263 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003264 "line" : 198,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003265 "column" : 10,
3266 "source_fragment" : "hashed"
3267 },
3268 "key" : [
3269 {
3270 "match_type" : "exact",
3271 "name" : "next_id",
3272 "target" : ["scalars", "fabric_metadata_t.next_id"],
3273 "mask" : null
3274 }
3275 ],
3276 "match_type" : "exact",
3277 "type" : "indirect_ws",
3278 "action_profile" : "FabricIngress.next.hashed_selector",
3279 "max_size" : 1024,
3280 "with_counters" : true,
3281 "support_timeout" : false,
3282 "direct_meters" : null,
3283 "action_ids" : [23, 24, 25, 5],
3284 "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "FabricIngress.next.mpls_routing_hashed", "nop"],
3285 "base_default_next" : "FabricIngress.next.multicast",
3286 "next_tables" : {
3287 "FabricIngress.next.output_hashed" : "FabricIngress.next.multicast",
3288 "FabricIngress.next.routing_hashed" : "FabricIngress.next.multicast",
3289 "FabricIngress.next.mpls_routing_hashed" : "FabricIngress.next.multicast",
3290 "nop" : "FabricIngress.next.multicast"
3291 }
3292 },
3293 {
3294 "name" : "FabricIngress.next.multicast",
Daniele Moro5a2de712019-09-24 14:34:07 -07003295 "id" : 11,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003296 "source_info" : {
3297 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003298 "line" : 232,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003299 "column" : 10,
3300 "source_fragment" : "multicast"
3301 },
3302 "key" : [
3303 {
3304 "match_type" : "exact",
3305 "name" : "next_id",
3306 "target" : ["scalars", "fabric_metadata_t.next_id"],
3307 "mask" : null
3308 }
3309 ],
3310 "match_type" : "exact",
3311 "type" : "simple",
3312 "max_size" : 1024,
3313 "with_counters" : true,
3314 "support_timeout" : false,
3315 "direct_meters" : null,
3316 "action_ids" : [26, 6],
3317 "actions" : ["FabricIngress.next.set_mcast_group_id", "nop"],
3318 "base_default_next" : "FabricIngress.next.next_vlan",
3319 "next_tables" : {
3320 "FabricIngress.next.set_mcast_group_id" : "FabricIngress.next.next_vlan",
3321 "nop" : "FabricIngress.next.next_vlan"
3322 },
3323 "default_entry" : {
3324 "action_id" : 6,
3325 "action_const" : true,
3326 "action_data" : [],
3327 "action_entry_const" : true
3328 }
3329 },
3330 {
3331 "name" : "FabricIngress.next.next_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07003332 "id" : 12,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003333 "source_info" : {
3334 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003335 "line" : 82,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003336 "column" : 10,
3337 "source_fragment" : "next_vlan"
3338 },
3339 "key" : [
3340 {
3341 "match_type" : "exact",
3342 "name" : "next_id",
3343 "target" : ["scalars", "fabric_metadata_t.next_id"],
3344 "mask" : null
3345 }
3346 ],
3347 "match_type" : "exact",
3348 "type" : "simple",
3349 "max_size" : 1024,
3350 "with_counters" : true,
3351 "support_timeout" : false,
3352 "direct_meters" : null,
3353 "action_ids" : [20, 3],
3354 "actions" : ["FabricIngress.next.set_vlan", "nop"],
Daniele Moro5a2de712019-09-24 14:34:07 -07003355 "base_default_next" : "node_23",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003356 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003357 "FabricIngress.next.set_vlan" : "node_23",
3358 "nop" : "node_23"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003359 },
3360 "default_entry" : {
3361 "action_id" : 3,
3362 "action_const" : true,
3363 "action_data" : [],
3364 "action_entry_const" : true
3365 }
3366 },
3367 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003368 "name" : "tbl_act_2",
3369 "id" : 13,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003370 "source_info" : {
3371 "filename" : "include/control/port_counter.p4",
3372 "line" : 31,
3373 "column" : 12,
3374 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
3375 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003376 "key" : [],
3377 "match_type" : "exact",
3378 "type" : "simple",
3379 "max_size" : 1024,
3380 "with_counters" : false,
3381 "support_timeout" : false,
3382 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003383 "action_ids" : [30],
3384 "actions" : ["act_2"],
3385 "base_default_next" : "node_25",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003386 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003387 "act_2" : "node_25"
Carmelo Casconea5400af2018-07-17 22:11:54 +02003388 },
3389 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003390 "action_id" : 30,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003391 "action_const" : true,
3392 "action_data" : [],
3393 "action_entry_const" : true
3394 }
3395 },
3396 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003397 "name" : "tbl_act_3",
3398 "id" : 14,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003399 "source_info" : {
3400 "filename" : "include/control/port_counter.p4",
3401 "line" : 34,
3402 "column" : 12,
3403 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
3404 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003405 "key" : [],
3406 "match_type" : "exact",
3407 "type" : "simple",
3408 "max_size" : 1024,
3409 "with_counters" : false,
3410 "support_timeout" : false,
3411 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003412 "action_ids" : [31],
3413 "actions" : ["act_3"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003414 "base_default_next" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003415 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003416 "act_3" : null
Yi Tseng27b9bc02018-04-12 14:52:40 +08003417 },
3418 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003419 "action_id" : 31,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003420 "action_const" : true,
3421 "action_data" : [],
3422 "action_entry_const" : true
3423 }
Yi Tsengbe342052017-11-03 10:21:23 -07003424 }
3425 ],
3426 "action_profiles" : [
3427 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003428 "name" : "FabricIngress.next.hashed_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003429 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003430 "source_info" : {
3431 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003432 "line" : 179,
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003433 "column" : 57,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003434 "source_fragment" : "hashed_selector"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003435 },
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003436 "max_size" : 1024,
Yi Tsengbe342052017-11-03 10:21:23 -07003437 "selector" : {
3438 "algo" : "crc16",
3439 "input" : [
3440 {
3441 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003442 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003443 },
3444 {
3445 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003446 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003447 },
3448 {
3449 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003450 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003451 },
3452 {
3453 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003454 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003455 },
3456 {
3457 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003458 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003459 }
3460 ]
3461 }
3462 }
3463 ],
3464 "conditionals" : [
3465 {
3466 "name" : "node_2",
3467 "id" : 0,
3468 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003469 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003470 "line" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07003471 "column" : 12,
3472 "source_fragment" : "hdr.packet_out.isValid()"
3473 },
3474 "expression" : {
3475 "type" : "expression",
3476 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003477 "op" : "d2b",
3478 "left" : null,
3479 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003480 "type" : "field",
3481 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003482 }
3483 }
3484 },
3485 "true_next" : "tbl_act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003486 "false_next" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07003487 },
3488 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003489 "name" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07003490 "id" : 1,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003491 "source_info" : {
3492 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003493 "line" : 108,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003494 "column" : 12,
3495 "source_fragment" : "hdr.vlan_tag.isValid()"
3496 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003497 "expression" : {
3498 "type" : "expression",
3499 "value" : {
3500 "op" : "d2b",
3501 "left" : null,
3502 "right" : {
3503 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003504 "value" : ["vlan_tag", "$valid$"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003505 }
3506 }
3507 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003508 "true_next" : "tbl_act_0",
3509 "false_next" : "node_6"
3510 },
3511 {
3512 "name" : "node_6",
3513 "id" : 2,
3514 "source_info" : {
3515 "filename" : "include/control/filtering.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003516 "line" : 120,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003517 "column" : 12,
3518 "source_fragment" : "!hdr.mpls.isValid()"
3519 },
3520 "expression" : {
3521 "type" : "expression",
3522 "value" : {
3523 "op" : "not",
3524 "left" : null,
3525 "right" : {
3526 "type" : "expression",
3527 "value" : {
3528 "op" : "d2b",
3529 "left" : null,
3530 "right" : {
3531 "type" : "field",
3532 "value" : ["mpls", "$valid$"]
3533 }
3534 }
3535 }
3536 }
3537 },
3538 "true_next" : "tbl_act_1",
Daniele Moro5a2de712019-09-24 14:34:07 -07003539 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003540 },
3541 {
3542 "name" : "node_10",
Daniele Moro5a2de712019-09-24 14:34:07 -07003543 "id" : 3,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003544 "source_info" : {
3545 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003546 "line" : 71,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003547 "column" : 12,
3548 "source_fragment" : "fabric_metadata.skip_forwarding == false"
3549 },
3550 "expression" : {
3551 "type" : "expression",
3552 "value" : {
3553 "op" : "==",
3554 "left" : {
3555 "type" : "expression",
3556 "value" : {
3557 "op" : "d2b",
3558 "left" : null,
3559 "right" : {
3560 "type" : "field",
3561 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
3562 }
3563 }
3564 },
3565 "right" : {
3566 "type" : "bool",
3567 "value" : false
3568 }
3569 }
3570 },
Daniele Moro5a2de712019-09-24 14:34:07 -07003571 "true_next" : "node_11",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003572 "false_next" : "FabricIngress.acl.acl"
3573 },
3574 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003575 "name" : "node_11",
3576 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07003577 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003578 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003579 "line" : 150,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003580 "column" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003581 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3582 },
3583 "expression" : {
3584 "type" : "expression",
3585 "value" : {
3586 "op" : "==",
3587 "left" : {
3588 "type" : "field",
3589 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3590 },
3591 "right" : {
3592 "type" : "hexstr",
3593 "value" : "0x00"
3594 }
3595 }
3596 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003597 "true_next" : "FabricIngress.forwarding.bridging",
Daniele Moro5a2de712019-09-24 14:34:07 -07003598 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003599 },
3600 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003601 "name" : "node_13",
3602 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003603 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003604 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003605 "line" : 151,
Yi Tsengbe342052017-11-03 10:21:23 -07003606 "column" : 17,
3607 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3608 },
3609 "expression" : {
3610 "type" : "expression",
3611 "value" : {
3612 "op" : "==",
3613 "left" : {
3614 "type" : "field",
3615 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3616 },
3617 "right" : {
3618 "type" : "hexstr",
3619 "value" : "0x01"
3620 }
3621 }
3622 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003623 "true_next" : "FabricIngress.forwarding.mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07003624 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07003625 },
3626 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003627 "name" : "node_15",
3628 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003629 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003630 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003631 "line" : 152,
Yi Tsengbe342052017-11-03 10:21:23 -07003632 "column" : 17,
3633 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3634 },
3635 "expression" : {
3636 "type" : "expression",
3637 "value" : {
3638 "op" : "==",
3639 "left" : {
3640 "type" : "field",
3641 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3642 },
3643 "right" : {
3644 "type" : "hexstr",
3645 "value" : "0x02"
3646 }
3647 }
3648 },
Charles Chan384aea22018-08-23 22:08:02 -07003649 "true_next" : "FabricIngress.forwarding.routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003650 "false_next" : "FabricIngress.acl.acl"
3651 },
3652 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003653 "name" : "node_18",
3654 "id" : 7,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003655 "source_info" : {
3656 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003657 "line" : 75,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003658 "column" : 12,
3659 "source_fragment" : "fabric_metadata.skip_next == false"
3660 },
3661 "expression" : {
3662 "type" : "expression",
3663 "value" : {
3664 "op" : "==",
3665 "left" : {
3666 "type" : "expression",
3667 "value" : {
3668 "op" : "d2b",
3669 "left" : null,
3670 "right" : {
3671 "type" : "field",
3672 "value" : ["scalars", "fabric_metadata_t.skip_next"]
3673 }
3674 }
3675 },
3676 "right" : {
3677 "type" : "bool",
3678 "value" : false
3679 }
3680 }
3681 },
3682 "false_next" : null,
3683 "true_next" : "FabricIngress.next.xconnect"
Yi Tseng27b9bc02018-04-12 14:52:40 +08003684 },
3685 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003686 "name" : "node_23",
3687 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003688 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003689 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003690 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07003691 "column" : 12,
3692 "source_fragment" : "standard_metadata.egress_spec < 511"
3693 },
3694 "expression" : {
3695 "type" : "expression",
3696 "value" : {
3697 "op" : "<",
3698 "left" : {
3699 "type" : "field",
3700 "value" : ["standard_metadata", "egress_spec"]
3701 },
3702 "right" : {
3703 "type" : "hexstr",
3704 "value" : "0x01ff"
3705 }
3706 }
3707 },
Daniele Moro5a2de712019-09-24 14:34:07 -07003708 "true_next" : "tbl_act_2",
3709 "false_next" : "node_25"
Yi Tsengbe342052017-11-03 10:21:23 -07003710 },
3711 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003712 "name" : "node_25",
3713 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003714 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003715 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003716 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07003717 "column" : 12,
3718 "source_fragment" : "standard_metadata.ingress_port < 511"
3719 },
3720 "expression" : {
3721 "type" : "expression",
3722 "value" : {
3723 "op" : "<",
3724 "left" : {
3725 "type" : "field",
3726 "value" : ["standard_metadata", "ingress_port"]
3727 },
3728 "right" : {
3729 "type" : "hexstr",
3730 "value" : "0x01ff"
3731 }
3732 }
3733 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003734 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003735 "true_next" : "tbl_act_3"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003736 }
3737 ]
3738 },
3739 {
3740 "name" : "egress",
3741 "id" : 1,
3742 "source_info" : {
3743 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003744 "line" : 93,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003745 "column" : 8,
3746 "source_fragment" : "FabricEgress"
3747 },
Daniele Moro5a2de712019-09-24 14:34:07 -07003748 "init_table" : "node_29",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003749 "tables" : [
3750 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003751 "name" : "tbl_act_4",
3752 "id" : 15,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003753 "source_info" : {
3754 "filename" : "include/control/packetio.p4",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003755 "line" : 41,
3756 "column" : 12,
3757 "source_fragment" : "exit"
Carmelo Cascone3032b872019-04-13 01:23:54 -07003758 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003759 "key" : [],
3760 "match_type" : "exact",
3761 "type" : "simple",
3762 "max_size" : 1024,
3763 "with_counters" : false,
3764 "support_timeout" : false,
3765 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003766 "action_ids" : [37],
3767 "actions" : ["act_4"],
3768 "base_default_next" : "node_31",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003769 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003770 "act_4" : "node_31"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003771 },
3772 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003773 "action_id" : 37,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003774 "action_const" : true,
3775 "action_data" : [],
3776 "action_entry_const" : true
3777 }
3778 },
3779 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003780 "name" : "tbl_act_5",
3781 "id" : 16,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003782 "source_info" : {
3783 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003784 "line" : 44,
3785 "column" : 12,
3786 "source_fragment" : "hdr.packet_in.setValid(); ..."
Carmelo Cascone3032b872019-04-13 01:23:54 -07003787 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003788 "key" : [],
3789 "match_type" : "exact",
3790 "type" : "simple",
3791 "max_size" : 1024,
3792 "with_counters" : false,
3793 "support_timeout" : false,
3794 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003795 "action_ids" : [38],
3796 "actions" : ["act_5"],
3797 "base_default_next" : "node_33",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003798 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003799 "act_5" : "node_33"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003800 },
3801 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003802 "action_id" : 38,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003803 "action_const" : true,
3804 "action_data" : [],
3805 "action_entry_const" : true
3806 }
3807 },
3808 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003809 "name" : "tbl_act_6",
3810 "id" : 17,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003811 "source_info" : {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003812 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003813 "line" : 333,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003814 "column" : 12,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003815 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Cascone3032b872019-04-13 01:23:54 -07003816 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003817 "key" : [],
3818 "match_type" : "exact",
3819 "type" : "simple",
3820 "max_size" : 1024,
3821 "with_counters" : false,
3822 "support_timeout" : false,
3823 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003824 "action_ids" : [39],
3825 "actions" : ["act_6"],
3826 "base_default_next" : "node_35",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003827 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003828 "act_6" : "node_35"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003829 },
3830 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003831 "action_id" : 39,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003832 "action_const" : true,
3833 "action_data" : [],
3834 "action_entry_const" : true
3835 }
3836 },
3837 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003838 "name" : "tbl_egress_next_pop_mpls_if_present",
Daniele Moro5a2de712019-09-24 14:34:07 -07003839 "id" : 18,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003840 "source_info" : {
3841 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003842 "line" : 337,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003843 "column" : 36,
3844 "source_fragment" : "pop_mpls_if_present()"
3845 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003846 "key" : [],
3847 "match_type" : "exact",
3848 "type" : "simple",
3849 "max_size" : 1024,
3850 "with_counters" : false,
3851 "support_timeout" : false,
3852 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003853 "action_ids" : [33],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003854 "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
3855 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3856 "next_tables" : {
3857 "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
3858 },
3859 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003860 "action_id" : 33,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003861 "action_const" : true,
3862 "action_data" : [],
3863 "action_entry_const" : true
3864 }
3865 },
3866 {
3867 "name" : "tbl_egress_next_set_mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07003868 "id" : 19,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003869 "source_info" : {
3870 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003871 "line" : 339,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003872 "column" : 12,
3873 "source_fragment" : "set_mpls()"
3874 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003875 "key" : [],
3876 "match_type" : "exact",
3877 "type" : "simple",
3878 "max_size" : 1024,
3879 "with_counters" : false,
3880 "support_timeout" : false,
3881 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003882 "action_ids" : [34],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003883 "actions" : ["FabricEgress.egress_next.set_mpls"],
3884 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3885 "next_tables" : {
3886 "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
3887 },
3888 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003889 "action_id" : 34,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003890 "action_const" : true,
3891 "action_data" : [],
3892 "action_entry_const" : true
3893 }
3894 },
3895 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003896 "name" : "FabricEgress.egress_next.egress_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07003897 "id" : 20,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003898 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003899 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003900 "line" : 316,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003901 "column" : 10,
3902 "source_fragment" : "egress_vlan"
3903 },
3904 "key" : [
3905 {
3906 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003907 "name" : "vlan_id",
3908 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003909 "mask" : null
3910 },
3911 {
3912 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003913 "name" : "eg_port",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003914 "target" : ["standard_metadata", "egress_port"],
3915 "mask" : null
3916 }
3917 ],
3918 "match_type" : "exact",
3919 "type" : "simple",
3920 "max_size" : 1024,
Yi Tseng47eac892018-07-11 02:17:04 +08003921 "with_counters" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003922 "support_timeout" : false,
3923 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003924 "action_ids" : [36, 32],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003925 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003926 "base_default_next" : null,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003927 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003928 "__HIT__" : "tbl_act_7",
3929 "__MISS__" : "tbl_act_8"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003930 },
3931 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003932 "action_id" : 32,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003933 "action_const" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003934 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003935 "action_entry_const" : true
3936 }
3937 },
3938 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003939 "name" : "tbl_act_7",
3940 "id" : 21,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003941 "key" : [],
3942 "match_type" : "exact",
3943 "type" : "simple",
3944 "max_size" : 1024,
3945 "with_counters" : false,
3946 "support_timeout" : false,
3947 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003948 "action_ids" : [40],
3949 "actions" : ["act_7"],
3950 "base_default_next" : "node_42",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003951 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003952 "act_7" : "node_42"
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003953 },
3954 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003955 "action_id" : 40,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003956 "action_const" : true,
3957 "action_data" : [],
3958 "action_entry_const" : true
3959 }
3960 },
3961 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003962 "name" : "tbl_act_8",
3963 "id" : 22,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003964 "key" : [],
3965 "match_type" : "exact",
3966 "type" : "simple",
3967 "max_size" : 1024,
3968 "with_counters" : false,
3969 "support_timeout" : false,
3970 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003971 "action_ids" : [41],
3972 "actions" : ["act_8"],
3973 "base_default_next" : "node_42",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003974 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003975 "act_8" : "node_42"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003976 },
3977 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003978 "action_id" : 41,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003979 "action_const" : true,
3980 "action_data" : [],
3981 "action_entry_const" : true
3982 }
3983 },
3984 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003985 "name" : "tbl_egress_next_push_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07003986 "id" : 23,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003987 "source_info" : {
3988 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003989 "line" : 356,
Daniele Moro7c3a0022019-07-12 13:38:34 -07003990 "column" : 20,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003991 "source_fragment" : "push_vlan()"
3992 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003993 "key" : [],
3994 "match_type" : "exact",
3995 "type" : "simple",
3996 "max_size" : 1024,
3997 "with_counters" : false,
3998 "support_timeout" : false,
3999 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004000 "action_ids" : [35],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004001 "actions" : ["FabricEgress.egress_next.push_vlan"],
Daniele Moro5a2de712019-09-24 14:34:07 -07004002 "base_default_next" : "node_45",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004003 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004004 "FabricEgress.egress_next.push_vlan" : "node_45"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004005 },
4006 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004007 "action_id" : 35,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004008 "action_const" : true,
4009 "action_data" : [],
4010 "action_entry_const" : true
4011 }
4012 },
4013 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004014 "name" : "tbl_act_9",
4015 "id" : 24,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004016 "source_info" : {
4017 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004018 "line" : 365,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004019 "column" : 25,
4020 "source_fragment" : "="
4021 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004022 "key" : [],
4023 "match_type" : "exact",
4024 "type" : "simple",
4025 "max_size" : 1024,
4026 "with_counters" : false,
4027 "support_timeout" : false,
4028 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004029 "action_ids" : [43],
4030 "actions" : ["act_10"],
4031 "base_default_next" : "node_47",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004032 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004033 "act_10" : "node_47"
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004034 },
4035 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004036 "action_id" : 43,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004037 "action_const" : true,
4038 "action_data" : [],
4039 "action_entry_const" : true
4040 }
4041 },
4042 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004043 "name" : "tbl_act_10",
4044 "id" : 25,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004045 "source_info" : {
4046 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004047 "line" : 366,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004048 "column" : 35,
4049 "source_fragment" : "mark_to_drop(standard_metadata)"
4050 },
4051 "key" : [],
4052 "match_type" : "exact",
4053 "type" : "simple",
4054 "max_size" : 1024,
4055 "with_counters" : false,
4056 "support_timeout" : false,
4057 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004058 "action_ids" : [42],
4059 "actions" : ["act_9"],
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004060 "base_default_next" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004061 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004062 "act_9" : null
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004063 },
4064 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004065 "action_id" : 42,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004066 "action_const" : true,
4067 "action_data" : [],
4068 "action_entry_const" : true
4069 }
4070 },
4071 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004072 "name" : "tbl_act_11",
4073 "id" : 26,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004074 "source_info" : {
4075 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004076 "line" : 369,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004077 "column" : 29,
4078 "source_fragment" : "="
4079 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004080 "key" : [],
4081 "match_type" : "exact",
4082 "type" : "simple",
4083 "max_size" : 1024,
4084 "with_counters" : false,
4085 "support_timeout" : false,
4086 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004087 "action_ids" : [45],
4088 "actions" : ["act_12"],
4089 "base_default_next" : "node_51",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004090 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004091 "act_12" : "node_51"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004092 },
4093 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004094 "action_id" : 45,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004095 "action_const" : true,
4096 "action_data" : [],
4097 "action_entry_const" : true
4098 }
4099 },
4100 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004101 "name" : "tbl_act_12",
4102 "id" : 27,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004103 "source_info" : {
4104 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004105 "line" : 370,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004106 "column" : 39,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004107 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Cascone3032b872019-04-13 01:23:54 -07004108 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004109 "key" : [],
4110 "match_type" : "exact",
4111 "type" : "simple",
4112 "max_size" : 1024,
4113 "with_counters" : false,
4114 "support_timeout" : false,
4115 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004116 "action_ids" : [44],
4117 "actions" : ["act_11"],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004118 "base_default_next" : null,
4119 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004120 "act_11" : null
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004121 },
4122 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004123 "action_id" : 44,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004124 "action_const" : true,
4125 "action_data" : [],
4126 "action_entry_const" : true
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004127 }
Yi Tseng3a5731e2018-01-22 11:38:58 -08004128 }
4129 ],
4130 "action_profiles" : [],
4131 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004132 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004133 "name" : "node_29",
4134 "id" : 10,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004135 "source_info" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004136 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004137 "line" : 39,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004138 "column" : 12,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004139 "source_fragment" : "fabric_metadata.is_controller_packet_out == true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004140 },
4141 "expression" : {
4142 "type" : "expression",
4143 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004144 "op" : "==",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004145 "left" : {
4146 "type" : "expression",
4147 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004148 "op" : "d2b",
4149 "left" : null,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004150 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004151 "type" : "field",
4152 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02004153 }
4154 }
4155 },
4156 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004157 "type" : "bool",
4158 "value" : true
Carmelo Casconea5400af2018-07-17 22:11:54 +02004159 }
4160 }
4161 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004162 "true_next" : "tbl_act_4",
4163 "false_next" : "node_31"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004164 },
4165 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004166 "name" : "node_31",
4167 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07004168 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004169 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004170 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07004171 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08004172 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07004173 },
4174 "expression" : {
4175 "type" : "expression",
4176 "value" : {
4177 "op" : "==",
4178 "left" : {
4179 "type" : "field",
4180 "value" : ["standard_metadata", "egress_port"]
4181 },
4182 "right" : {
4183 "type" : "hexstr",
4184 "value" : "0x00ff"
4185 }
4186 }
4187 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004188 "true_next" : "tbl_act_5",
4189 "false_next" : "node_33"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004190 },
4191 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004192 "name" : "node_33",
4193 "id" : 12,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004194 "source_info" : {
4195 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004196 "line" : 331,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004197 "column" : 12,
4198 "source_fragment" : "fabric_metadata.is_multicast == true ..."
4199 },
4200 "expression" : {
4201 "type" : "expression",
4202 "value" : {
4203 "op" : "and",
4204 "left" : {
4205 "type" : "expression",
4206 "value" : {
4207 "op" : "==",
4208 "left" : {
4209 "type" : "expression",
4210 "value" : {
4211 "op" : "d2b",
4212 "left" : null,
4213 "right" : {
4214 "type" : "field",
4215 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4216 }
4217 }
4218 },
4219 "right" : {
4220 "type" : "bool",
4221 "value" : true
4222 }
4223 }
4224 },
4225 "right" : {
4226 "type" : "expression",
4227 "value" : {
4228 "op" : "==",
4229 "left" : {
4230 "type" : "field",
4231 "value" : ["standard_metadata", "ingress_port"]
4232 },
4233 "right" : {
4234 "type" : "field",
4235 "value" : ["standard_metadata", "egress_port"]
4236 }
4237 }
4238 }
4239 }
4240 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004241 "true_next" : "tbl_act_6",
4242 "false_next" : "node_35"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004243 },
4244 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004245 "name" : "node_35",
4246 "id" : 13,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004247 "source_info" : {
4248 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004249 "line" : 336,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004250 "column" : 12,
4251 "source_fragment" : "fabric_metadata.mpls_label == 0"
4252 },
4253 "expression" : {
4254 "type" : "expression",
4255 "value" : {
4256 "op" : "==",
4257 "left" : {
4258 "type" : "field",
4259 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
4260 },
4261 "right" : {
4262 "type" : "hexstr",
4263 "value" : "0x000000"
4264 }
4265 }
4266 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004267 "true_next" : "node_36",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004268 "false_next" : "tbl_egress_next_set_mpls"
4269 },
4270 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004271 "name" : "node_36",
4272 "id" : 14,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004273 "source_info" : {
4274 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004275 "line" : 337,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004276 "column" : 16,
4277 "source_fragment" : "hdr.mpls.isValid()"
4278 },
4279 "expression" : {
4280 "type" : "expression",
4281 "value" : {
4282 "op" : "d2b",
4283 "left" : null,
4284 "right" : {
4285 "type" : "field",
4286 "value" : ["mpls", "$valid$"]
4287 }
4288 }
4289 },
4290 "true_next" : "tbl_egress_next_pop_mpls_if_present",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004291 "false_next" : "FabricEgress.egress_next.egress_vlan"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004292 },
4293 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004294 "name" : "node_42",
4295 "id" : 15,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004296 "source_info" : {
4297 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004298 "line" : 353,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004299 "column" : 16,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004300 "source_fragment" : "!egress_vlan.apply().hit"
4301 },
4302 "expression" : {
4303 "type" : "expression",
4304 "value" : {
4305 "op" : "not",
4306 "left" : null,
4307 "right" : {
4308 "type" : "expression",
4309 "value" : {
4310 "op" : "d2b",
4311 "left" : null,
4312 "right" : {
4313 "type" : "field",
4314 "value" : ["scalars", "egress_next_tmp"]
4315 }
4316 }
4317 }
4318 }
4319 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004320 "true_next" : "node_43",
4321 "false_next" : "node_45"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004322 },
4323 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004324 "name" : "node_43",
4325 "id" : 16,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004326 "source_info" : {
4327 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004328 "line" : 355,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004329 "column" : 20,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004330 "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
4331 },
4332 "expression" : {
4333 "type" : "expression",
4334 "value" : {
4335 "op" : "!=",
4336 "left" : {
4337 "type" : "field",
4338 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
4339 },
4340 "right" : {
4341 "type" : "hexstr",
4342 "value" : "0x0ffe"
4343 }
4344 }
4345 },
4346 "true_next" : "tbl_egress_next_push_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07004347 "false_next" : "node_45"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004348 },
4349 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004350 "name" : "node_45",
4351 "id" : 17,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004352 "source_info" : {
4353 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004354 "line" : 364,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004355 "column" : 12,
4356 "source_fragment" : "hdr.mpls.isValid()"
4357 },
4358 "expression" : {
4359 "type" : "expression",
4360 "value" : {
4361 "op" : "d2b",
4362 "left" : null,
4363 "right" : {
4364 "type" : "field",
4365 "value" : ["mpls", "$valid$"]
4366 }
4367 }
4368 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004369 "true_next" : "tbl_act_9",
4370 "false_next" : "node_49"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004371 },
4372 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004373 "name" : "node_47",
4374 "id" : 18,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004375 "source_info" : {
4376 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004377 "line" : 366,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004378 "column" : 16,
4379 "source_fragment" : "hdr.mpls.ttl == 0"
4380 },
4381 "expression" : {
4382 "type" : "expression",
4383 "value" : {
4384 "op" : "==",
4385 "left" : {
4386 "type" : "field",
4387 "value" : ["mpls", "ttl"]
4388 },
4389 "right" : {
4390 "type" : "hexstr",
4391 "value" : "0x00"
4392 }
4393 }
4394 },
4395 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004396 "true_next" : "tbl_act_10"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004397 },
4398 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004399 "name" : "node_49",
4400 "id" : 19,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004401 "source_info" : {
4402 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004403 "line" : 368,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004404 "column" : 15,
4405 "source_fragment" : "hdr.ipv4.isValid()"
4406 },
4407 "expression" : {
4408 "type" : "expression",
4409 "value" : {
4410 "op" : "d2b",
4411 "left" : null,
4412 "right" : {
4413 "type" : "field",
4414 "value" : ["ipv4", "$valid$"]
4415 }
4416 }
4417 },
4418 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004419 "true_next" : "tbl_act_11"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004420 },
4421 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004422 "name" : "node_51",
4423 "id" : 20,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004424 "source_info" : {
4425 "filename" : "include/control/next.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07004426 "line" : 370,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004427 "column" : 20,
4428 "source_fragment" : "hdr.ipv4.ttl == 0"
4429 },
4430 "expression" : {
4431 "type" : "expression",
4432 "value" : {
4433 "op" : "==",
4434 "left" : {
4435 "type" : "field",
4436 "value" : ["ipv4", "ttl"]
4437 },
4438 "right" : {
4439 "type" : "hexstr",
4440 "value" : "0x00"
4441 }
4442 }
4443 },
4444 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004445 "true_next" : "tbl_act_12"
Yi Tsengbe342052017-11-03 10:21:23 -07004446 }
4447 ]
4448 }
4449 ],
4450 "checksums" : [
4451 {
4452 "name" : "cksum",
4453 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004454 "source_info" : {
4455 "filename" : "include/checksum.p4",
4456 "line" : 28,
4457 "column" : 8,
4458 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
4459 },
Yi Tsengbe342052017-11-03 10:21:23 -07004460 "target" : ["ipv4", "hdr_checksum"],
4461 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004462 "calculation" : "calc",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004463 "verify" : false,
4464 "update" : true,
Yi Tsengbd46d052018-01-22 17:18:16 -08004465 "if_cond" : {
4466 "type" : "expression",
4467 "value" : {
4468 "op" : "d2b",
4469 "left" : null,
4470 "right" : {
4471 "type" : "field",
4472 "value" : ["ipv4", "$valid$"]
4473 }
4474 }
4475 }
Yi Tsengbe342052017-11-03 10:21:23 -07004476 },
4477 {
4478 "name" : "cksum_0",
4479 "id" : 1,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004480 "source_info" : {
4481 "filename" : "include/checksum.p4",
4482 "line" : 57,
4483 "column" : 8,
4484 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
4485 },
Yi Tsengbe342052017-11-03 10:21:23 -07004486 "target" : ["ipv4", "hdr_checksum"],
4487 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004488 "calculation" : "calc_0",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004489 "verify" : true,
4490 "update" : false,
Yi Tsengbd46d052018-01-22 17:18:16 -08004491 "if_cond" : {
4492 "type" : "expression",
4493 "value" : {
4494 "op" : "d2b",
4495 "left" : null,
4496 "right" : {
4497 "type" : "field",
4498 "value" : ["ipv4", "$valid$"]
4499 }
4500 }
4501 }
Yi Tsengbe342052017-11-03 10:21:23 -07004502 }
4503 ],
4504 "force_arith" : [],
4505 "extern_instances" : [],
4506 "field_aliases" : [
4507 [
4508 "queueing_metadata.enq_timestamp",
4509 ["standard_metadata", "enq_timestamp"]
4510 ],
4511 [
4512 "queueing_metadata.enq_qdepth",
4513 ["standard_metadata", "enq_qdepth"]
4514 ],
4515 [
4516 "queueing_metadata.deq_timedelta",
4517 ["standard_metadata", "deq_timedelta"]
4518 ],
4519 [
4520 "queueing_metadata.deq_qdepth",
4521 ["standard_metadata", "deq_qdepth"]
4522 ],
4523 [
4524 "intrinsic_metadata.ingress_global_timestamp",
4525 ["standard_metadata", "ingress_global_timestamp"]
4526 ],
4527 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08004528 "intrinsic_metadata.egress_global_timestamp",
4529 ["standard_metadata", "egress_global_timestamp"]
4530 ],
4531 [
Yi Tsengbe342052017-11-03 10:21:23 -07004532 "intrinsic_metadata.lf_field_list",
4533 ["standard_metadata", "lf_field_list"]
4534 ],
4535 [
4536 "intrinsic_metadata.mcast_grp",
4537 ["standard_metadata", "mcast_grp"]
4538 ],
4539 [
4540 "intrinsic_metadata.resubmit_flag",
4541 ["standard_metadata", "resubmit_flag"]
4542 ],
4543 [
4544 "intrinsic_metadata.egress_rid",
4545 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08004546 ],
4547 [
4548 "intrinsic_metadata.recirculate_flag",
4549 ["standard_metadata", "recirculate_flag"]
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004550 ],
4551 [
4552 "intrinsic_metadata.priority",
4553 ["standard_metadata", "priority"]
Yi Tsengbe342052017-11-03 10:21:23 -07004554 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02004555 ],
4556 "program" : "fabric.p4",
4557 "__meta__" : {
4558 "version" : [2, 18],
4559 "compiler" : "https://github.com/p4lang/p4c"
4560 }
Carmelo Cascone25243d62019-02-21 15:37:31 -08004561}