blob: 4c13eb57adddde12ad95d9af7aa2b5d6a3d13d3f [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" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -08007 ["tmp_0", 4, false],
8 ["tmp", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -07009 ["tmp_1", 32, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080010 ["egress_next_tmp", 1, false],
11 ["fabric_metadata_t.eth_type", 16, false],
12 ["fabric_metadata_t.ip_eth_type", 16, false],
13 ["fabric_metadata_t.vlan_id", 12, false],
14 ["fabric_metadata_t.vlan_pri", 3, false],
15 ["fabric_metadata_t.vlan_cfi", 1, false],
16 ["fabric_metadata_t.mpls_label", 20, false],
17 ["fabric_metadata_t.mpls_ttl", 8, false],
18 ["fabric_metadata_t.skip_forwarding", 1, false],
19 ["fabric_metadata_t.skip_next", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070020 ["fabric_metadata_t.fwd_type", 3, false],
21 ["fabric_metadata_t.next_id", 32, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020022 ["fabric_metadata_t.is_multicast", 1, false],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -070023 ["fabric_metadata_t.is_controller_packet_out", 1, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020024 ["fabric_metadata_t.clone_to_cpu", 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],
27 ["fabric_metadata_t.l4_dport", 16, false],
28 ["_padding_0", 7, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080029 ]
30 },
31 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +020032 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -080033 "id" : 1,
34 "fields" : [
Carmelo Cascone6af4e172018-06-15 16:01:30 +020035 ["ingress_port", 9, false],
36 ["egress_spec", 9, false],
37 ["egress_port", 9, false],
38 ["clone_spec", 32, false],
39 ["instance_type", 32, false],
40 ["drop", 1, false],
41 ["recirculate_port", 16, false],
42 ["packet_length", 32, false],
43 ["enq_timestamp", 32, false],
44 ["enq_qdepth", 19, false],
45 ["deq_timedelta", 32, false],
46 ["deq_qdepth", 19, false],
47 ["ingress_global_timestamp", 48, false],
48 ["egress_global_timestamp", 48, false],
49 ["lf_field_list", 32, false],
50 ["mcast_grp", 16, false],
51 ["resubmit_flag", 32, false],
52 ["egress_rid", 16, false],
53 ["checksum_error", 1, false],
54 ["recirculate_flag", 32, false],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -070055 ["parser_error", 32, false],
Carmelo Cascone6af4e172018-06-15 16:01:30 +020056 ["_padding", 5, false]
57 ]
58 },
59 {
60 "name" : "ethernet_t",
61 "id" : 2,
62 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080063 ["dst_addr", 48, false],
64 ["src_addr", 48, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080065 ["eth_type", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080066 ]
67 },
68 {
69 "name" : "vlan_tag_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020070 "id" : 3,
Yi Tsengc6844f52017-12-19 11:58:25 -080071 "fields" : [
72 ["pri", 3, false],
73 ["cfi", 1, false],
74 ["vlan_id", 12, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080075 ["eth_type", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080076 ]
77 },
78 {
79 "name" : "mpls_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020080 "id" : 4,
Yi Tsengc6844f52017-12-19 11:58:25 -080081 "fields" : [
82 ["label", 20, false],
83 ["tc", 3, false],
84 ["bos", 1, false],
85 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070086 ]
87 },
88 {
89 "name" : "ipv4_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020090 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -070091 "fields" : [
92 ["version", 4, false],
93 ["ihl", 4, false],
Jonghwan Hyuned478dc2018-08-06 15:35:18 +090094 ["dscp", 6, false],
95 ["ecn", 2, false],
Yi Tsengbe342052017-11-03 10:21:23 -070096 ["total_len", 16, false],
97 ["identification", 16, false],
98 ["flags", 3, false],
99 ["frag_offset", 13, false],
100 ["ttl", 8, false],
101 ["protocol", 8, false],
102 ["hdr_checksum", 16, false],
103 ["src_addr", 32, false],
104 ["dst_addr", 32, false]
105 ]
106 },
107 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800108 "name" : "tcp_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200109 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800110 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800111 ["sport", 16, false],
112 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700113 ["seq_no", 32, false],
114 ["ack_no", 32, false],
115 ["data_offset", 4, false],
116 ["res", 3, false],
117 ["ecn", 3, false],
118 ["ctrl", 6, false],
119 ["window", 16, false],
120 ["checksum", 16, false],
121 ["urgent_ptr", 16, false]
122 ]
123 },
124 {
125 "name" : "udp_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800126 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700127 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800128 ["sport", 16, false],
129 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700130 ["len", 16, false],
131 ["checksum", 16, false]
132 ]
133 },
134 {
135 "name" : "icmp_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800136 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700137 "fields" : [
138 ["icmp_type", 8, false],
139 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800140 ["checksum", 16, false],
141 ["identifier", 16, false],
142 ["sequence_number", 16, false],
143 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700144 ]
145 },
146 {
147 "name" : "packet_out_header_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800148 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700149 "fields" : [
150 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800151 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700152 ]
153 },
154 {
155 "name" : "packet_in_header_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800156 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700157 "fields" : [
158 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800159 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700160 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700161 }
162 ],
163 "headers" : [
164 {
Yi Tsengbe342052017-11-03 10:21:23 -0700165 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800166 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700167 "header_type" : "scalars_0",
168 "metadata" : true,
169 "pi_omit" : true
170 },
171 {
172 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800173 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700174 "header_type" : "standard_metadata",
175 "metadata" : true,
176 "pi_omit" : true
177 },
178 {
179 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800180 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700181 "header_type" : "ethernet_t",
182 "metadata" : false,
183 "pi_omit" : true
184 },
185 {
186 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800187 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700188 "header_type" : "vlan_tag_t",
189 "metadata" : false,
190 "pi_omit" : true
191 },
192 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800193 "name" : "inner_vlan_tag",
Yi Tsengbd46d052018-01-22 17:18:16 -0800194 "id" : 4,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800195 "header_type" : "vlan_tag_t",
196 "metadata" : false,
197 "pi_omit" : true
198 },
199 {
200 "name" : "mpls",
201 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700202 "header_type" : "mpls_t",
203 "metadata" : false,
204 "pi_omit" : true
205 },
206 {
207 "name" : "ipv4",
Carmelo Casconef645e842018-07-16 18:31:52 +0200208 "id" : 6,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800209 "header_type" : "ipv4_t",
Yi Tsengbe342052017-11-03 10:21:23 -0700210 "metadata" : false,
211 "pi_omit" : true
212 },
213 {
214 "name" : "tcp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200215 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700216 "header_type" : "tcp_t",
217 "metadata" : false,
218 "pi_omit" : true
219 },
220 {
221 "name" : "udp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200222 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700223 "header_type" : "udp_t",
224 "metadata" : false,
225 "pi_omit" : true
226 },
227 {
228 "name" : "icmp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200229 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700230 "header_type" : "icmp_t",
231 "metadata" : false,
232 "pi_omit" : true
233 },
234 {
235 "name" : "packet_out",
Carmelo Casconef645e842018-07-16 18:31:52 +0200236 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700237 "header_type" : "packet_out_header_t",
238 "metadata" : false,
239 "pi_omit" : true
240 },
241 {
242 "name" : "packet_in",
Carmelo Casconef645e842018-07-16 18:31:52 +0200243 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700244 "header_type" : "packet_in_header_t",
245 "metadata" : false,
246 "pi_omit" : true
247 }
248 ],
249 "header_stacks" : [],
250 "header_union_types" : [],
251 "header_unions" : [],
252 "header_union_stacks" : [],
253 "field_lists" : [],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700254 "errors" : [
255 ["NoError", 1],
256 ["PacketTooShort", 2],
257 ["NoMatch", 3],
258 ["StackOutOfBounds", 4],
259 ["HeaderTooShort", 5],
260 ["ParserTimeout", 6]
261 ],
Yi Tsengbe342052017-11-03 10:21:23 -0700262 "enums" : [],
263 "parsers" : [
264 {
265 "name" : "parser",
266 "id" : 0,
267 "init_state" : "start",
268 "parse_states" : [
269 {
270 "name" : "start",
271 "id" : 0,
272 "parser_ops" : [],
273 "transitions" : [
274 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800275 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700276 "value" : "0x00ff",
277 "mask" : null,
278 "next_state" : "parse_packet_out"
279 },
280 {
281 "value" : "default",
282 "mask" : null,
283 "next_state" : "parse_ethernet"
284 }
285 ],
286 "transition_key" : [
287 {
288 "type" : "field",
289 "value" : ["standard_metadata", "ingress_port"]
290 }
291 ]
292 },
293 {
294 "name" : "parse_packet_out",
295 "id" : 1,
296 "parser_ops" : [
297 {
298 "parameters" : [
299 {
300 "type" : "regular",
301 "value" : "packet_out"
302 }
303 ],
304 "op" : "extract"
305 }
306 ],
307 "transitions" : [
308 {
309 "value" : "default",
310 "mask" : null,
311 "next_state" : "parse_ethernet"
312 }
313 ],
314 "transition_key" : []
315 },
316 {
317 "name" : "parse_ethernet",
318 "id" : 2,
319 "parser_ops" : [
320 {
321 "parameters" : [
322 {
323 "type" : "regular",
324 "value" : "ethernet"
325 }
326 ],
327 "op" : "extract"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800328 },
329 {
330 "parameters" : [
331 {
332 "type" : "field",
333 "value" : ["scalars", "fabric_metadata_t.eth_type"]
334 },
335 {
336 "type" : "field",
337 "value" : ["ethernet", "eth_type"]
338 }
339 ],
340 "op" : "set"
341 },
342 {
343 "parameters" : [
344 {
345 "type" : "field",
346 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
347 },
348 {
349 "type" : "hexstr",
350 "value" : "0x0ffe"
351 }
352 ],
353 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700354 }
355 ],
356 "transitions" : [
357 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800358 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700359 "value" : "0x8100",
360 "mask" : null,
361 "next_state" : "parse_vlan_tag"
362 },
363 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800364 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700365 "value" : "0x8847",
366 "mask" : null,
367 "next_state" : "parse_mpls"
368 },
369 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800370 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700371 "value" : "0x0800",
372 "mask" : null,
373 "next_state" : "parse_ipv4"
374 },
375 {
Yi Tsengbe342052017-11-03 10:21:23 -0700376 "value" : "default",
377 "mask" : null,
378 "next_state" : null
379 }
380 ],
381 "transition_key" : [
382 {
383 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800384 "value" : ["ethernet", "eth_type"]
Yi Tsengbe342052017-11-03 10:21:23 -0700385 }
386 ]
387 },
388 {
389 "name" : "parse_vlan_tag",
390 "id" : 3,
391 "parser_ops" : [
392 {
393 "parameters" : [
394 {
395 "type" : "regular",
396 "value" : "vlan_tag"
397 }
398 ],
399 "op" : "extract"
400 }
401 ],
402 "transitions" : [
403 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800404 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800405 "value" : "0x0800",
Yi Tsengbe342052017-11-03 10:21:23 -0700406 "mask" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800407 "next_state" : "parse_ipv4"
Yi Tsengbe342052017-11-03 10:21:23 -0700408 },
409 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800410 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800411 "value" : "0x8847",
412 "mask" : null,
413 "next_state" : "parse_mpls"
414 },
415 {
416 "type" : "hexstr",
417 "value" : "0x8100",
418 "mask" : null,
419 "next_state" : "parse_inner_vlan_tag"
420 },
421 {
422 "value" : "default",
423 "mask" : null,
424 "next_state" : null
425 }
426 ],
427 "transition_key" : [
428 {
429 "type" : "field",
430 "value" : ["vlan_tag", "eth_type"]
431 }
432 ]
433 },
434 {
435 "name" : "parse_inner_vlan_tag",
436 "id" : 4,
437 "parser_ops" : [
438 {
439 "parameters" : [
440 {
441 "type" : "regular",
442 "value" : "inner_vlan_tag"
443 }
444 ],
445 "op" : "extract"
446 }
447 ],
448 "transitions" : [
449 {
450 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700451 "value" : "0x0800",
452 "mask" : null,
453 "next_state" : "parse_ipv4"
454 },
455 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800456 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800457 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700458 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800459 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700460 },
461 {
462 "value" : "default",
463 "mask" : null,
464 "next_state" : null
465 }
466 ],
467 "transition_key" : [
468 {
469 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800470 "value" : ["inner_vlan_tag", "eth_type"]
Yi Tsengbe342052017-11-03 10:21:23 -0700471 }
472 ]
473 },
474 {
475 "name" : "parse_mpls",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800476 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700477 "parser_ops" : [
478 {
479 "parameters" : [
480 {
481 "type" : "regular",
482 "value" : "mpls"
483 }
484 ],
485 "op" : "extract"
486 },
487 {
488 "parameters" : [
489 {
490 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800491 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
492 },
493 {
494 "type" : "field",
495 "value" : ["mpls", "label"]
496 }
497 ],
498 "op" : "set"
499 },
500 {
501 "parameters" : [
502 {
503 "type" : "field",
504 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
505 },
506 {
507 "type" : "field",
508 "value" : ["mpls", "ttl"]
509 }
510 ],
511 "op" : "set"
512 },
513 {
514 "parameters" : [
515 {
516 "type" : "field",
517 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700518 },
519 {
520 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800521 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700522 }
523 ],
524 "op" : "set"
525 }
526 ],
527 "transitions" : [
528 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800529 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700530 "value" : "0x04",
531 "mask" : null,
532 "next_state" : "parse_ipv4"
533 },
534 {
Yi Tsengbe342052017-11-03 10:21:23 -0700535 "value" : "default",
536 "mask" : null,
537 "next_state" : "parse_ethernet"
538 }
539 ],
540 "transition_key" : [
541 {
542 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800543 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700544 }
545 ]
546 },
547 {
548 "name" : "parse_ipv4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800549 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700550 "parser_ops" : [
551 {
552 "parameters" : [
553 {
554 "type" : "regular",
555 "value" : "ipv4"
556 }
557 ],
558 "op" : "extract"
559 },
560 {
561 "parameters" : [
562 {
563 "type" : "field",
564 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
565 },
566 {
567 "type" : "field",
568 "value" : ["ipv4", "protocol"]
569 }
570 ],
571 "op" : "set"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800572 },
573 {
574 "parameters" : [
575 {
576 "type" : "field",
577 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
578 },
579 {
580 "type" : "hexstr",
581 "value" : "0x0800"
582 }
583 ],
584 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700585 }
586 ],
587 "transitions" : [
588 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800589 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700590 "value" : "0x06",
591 "mask" : null,
592 "next_state" : "parse_tcp"
593 },
594 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800595 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700596 "value" : "0x11",
597 "mask" : null,
598 "next_state" : "parse_udp"
599 },
600 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800601 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700602 "value" : "0x01",
603 "mask" : null,
604 "next_state" : "parse_icmp"
605 },
606 {
607 "value" : "default",
608 "mask" : null,
609 "next_state" : null
610 }
611 ],
612 "transition_key" : [
613 {
614 "type" : "field",
615 "value" : ["ipv4", "protocol"]
616 }
617 ]
618 },
619 {
Yi Tsengbe342052017-11-03 10:21:23 -0700620 "name" : "parse_tcp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200621 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700622 "parser_ops" : [
623 {
624 "parameters" : [
625 {
626 "type" : "regular",
627 "value" : "tcp"
628 }
629 ],
630 "op" : "extract"
631 },
632 {
633 "parameters" : [
634 {
635 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800636 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700637 },
638 {
639 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800640 "value" : ["tcp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700641 }
642 ],
643 "op" : "set"
644 },
645 {
646 "parameters" : [
647 {
648 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800649 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700650 },
651 {
652 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800653 "value" : ["tcp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700654 }
655 ],
656 "op" : "set"
657 }
658 ],
659 "transitions" : [
660 {
661 "value" : "default",
662 "mask" : null,
663 "next_state" : null
664 }
665 ],
666 "transition_key" : []
667 },
668 {
669 "name" : "parse_udp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200670 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700671 "parser_ops" : [
672 {
673 "parameters" : [
674 {
675 "type" : "regular",
676 "value" : "udp"
677 }
678 ],
679 "op" : "extract"
680 },
681 {
682 "parameters" : [
683 {
684 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800685 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700686 },
687 {
688 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800689 "value" : ["udp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700690 }
691 ],
692 "op" : "set"
693 },
694 {
695 "parameters" : [
696 {
697 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800698 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700699 },
700 {
701 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800702 "value" : ["udp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700703 }
704 ],
705 "op" : "set"
706 }
707 ],
708 "transitions" : [
709 {
710 "value" : "default",
711 "mask" : null,
712 "next_state" : null
713 }
714 ],
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700715 "transition_key" : [
716 {
717 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800718 "value" : ["udp", "dport"]
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700719 }
720 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700721 },
722 {
723 "name" : "parse_icmp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200724 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700725 "parser_ops" : [
726 {
727 "parameters" : [
728 {
729 "type" : "regular",
730 "value" : "icmp"
731 }
732 ],
733 "op" : "extract"
734 }
735 ],
736 "transitions" : [
737 {
738 "value" : "default",
739 "mask" : null,
740 "next_state" : null
741 }
742 ],
743 "transition_key" : []
744 }
745 ]
746 }
747 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800748 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700749 "deparsers" : [
750 {
751 "name" : "deparser",
752 "id" : 0,
753 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200754 "filename" : "include/parser.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800755 "line" : 243,
Yi Tsengbe342052017-11-03 10:21:23 -0700756 "column" : 8,
757 "source_fragment" : "FabricDeparser"
758 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800759 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700760 }
761 ],
762 "meter_arrays" : [],
763 "counter_arrays" : [
764 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800765 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800766 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800767 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700768 "binding" : "FabricIngress.filtering.ingress_port_vlan",
769 "source_info" : {
770 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800771 "line" : 31,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700772 "column" : 50,
773 "source_fragment" : "ingress_port_vlan_counter"
774 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800775 },
776 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800777 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800778 "id" : 1,
779 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700780 "binding" : "FabricIngress.filtering.fwd_classifier",
781 "source_info" : {
782 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700783 "line" : 80,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700784 "column" : 50,
785 "source_fragment" : "fwd_classifier_counter"
786 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800787 },
788 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800789 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800790 "id" : 2,
791 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700792 "binding" : "FabricIngress.forwarding.bridging",
793 "source_info" : {
794 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800795 "line" : 36,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700796 "column" : 50,
797 "source_fragment" : "bridging_counter"
798 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800799 },
800 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800801 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800802 "id" : 3,
803 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700804 "binding" : "FabricIngress.forwarding.mpls",
805 "source_info" : {
806 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700807 "line" : 63,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700808 "column" : 50,
809 "source_fragment" : "mpls_counter"
810 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800811 },
812 {
Charles Chan384aea22018-08-23 22:08:02 -0700813 "name" : "FabricIngress.forwarding.routing_v4_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800814 "id" : 4,
815 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700816 "binding" : "FabricIngress.forwarding.routing_v4",
817 "source_info" : {
818 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700819 "line" : 87,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700820 "column" : 50,
821 "source_fragment" : "routing_v4_counter"
822 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800823 },
824 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800825 "name" : "FabricIngress.acl.acl_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800826 "id" : 5,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800827 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800828 "binding" : "FabricIngress.acl.acl",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700829 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800830 "filename" : "include/control/acl.p4",
831 "line" : 30,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700832 "column" : 50,
833 "source_fragment" : "acl_counter"
834 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800835 },
836 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800837 "name" : "FabricIngress.next.next_vlan_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200838 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800839 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800840 "binding" : "FabricIngress.next.next_vlan",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700841 "source_info" : {
842 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800843 "line" : 67,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700844 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800845 "source_fragment" : "next_vlan_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700846 }
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800847 },
848 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800849 "name" : "FabricIngress.next.xconnect_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200850 "id" : 7,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800851 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800852 "binding" : "FabricIngress.next.xconnect",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700853 "source_info" : {
854 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700855 "line" : 92,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700856 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800857 "source_fragment" : "xconnect_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700858 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800859 },
860 {
861 "name" : "FabricIngress.next.hashed_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200862 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800863 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700864 "binding" : "FabricIngress.next.hashed",
865 "source_info" : {
866 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700867 "line" : 166,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700868 "column" : 50,
869 "source_fragment" : "hashed_counter"
870 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800871 },
872 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000873 "name" : "FabricIngress.next.multicast_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200874 "id" : 9,
Esin Karaman971fb7f2017-12-28 13:44:52 +0000875 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700876 "binding" : "FabricIngress.next.multicast",
877 "source_info" : {
878 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700879 "line" : 210,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700880 "column" : 50,
881 "source_fragment" : "multicast_counter"
882 }
Esin Karaman971fb7f2017-12-28 13:44:52 +0000883 },
884 {
885 "name" : "FabricIngress.port_counters_control.egress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200886 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700887 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200888 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800889 "line" : 26,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800890 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700891 "source_fragment" : "egress_port_counter"
892 },
893 "size" : 511,
894 "is_direct" : false
895 },
896 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800897 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200898 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700899 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200900 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800901 "line" : 27,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800902 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700903 "source_fragment" : "ingress_port_counter"
904 },
905 "size" : 511,
906 "is_direct" : false
Yi Tseng47eac892018-07-11 02:17:04 +0800907 },
908 {
909 "name" : "FabricEgress.egress_next.egress_vlan_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200910 "id" : 12,
Yi Tseng47eac892018-07-11 02:17:04 +0800911 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700912 "binding" : "FabricEgress.egress_next.egress_vlan",
913 "source_info" : {
914 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700915 "line" : 283,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700916 "column" : 50,
917 "source_fragment" : "egress_vlan_counter"
918 }
Yi Tsengbe342052017-11-03 10:21:23 -0700919 }
920 ],
921 "register_arrays" : [],
922 "calculations" : [
923 {
924 "name" : "calc",
925 "id" : 0,
926 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200927 "filename" : "include/checksum.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200928 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700929 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200930 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700931 },
932 "algo" : "csum16",
933 "input" : [
934 {
935 "type" : "field",
936 "value" : ["ipv4", "version"]
937 },
938 {
939 "type" : "field",
940 "value" : ["ipv4", "ihl"]
941 },
942 {
943 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900944 "value" : ["ipv4", "dscp"]
945 },
946 {
947 "type" : "field",
948 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -0700949 },
950 {
951 "type" : "field",
952 "value" : ["ipv4", "total_len"]
953 },
954 {
955 "type" : "field",
956 "value" : ["ipv4", "identification"]
957 },
958 {
959 "type" : "field",
960 "value" : ["ipv4", "flags"]
961 },
962 {
963 "type" : "field",
964 "value" : ["ipv4", "frag_offset"]
965 },
966 {
967 "type" : "field",
968 "value" : ["ipv4", "ttl"]
969 },
970 {
971 "type" : "field",
972 "value" : ["ipv4", "protocol"]
973 },
974 {
975 "type" : "field",
976 "value" : ["ipv4", "src_addr"]
977 },
978 {
979 "type" : "field",
980 "value" : ["ipv4", "dst_addr"]
981 }
982 ]
983 },
984 {
985 "name" : "calc_0",
986 "id" : 1,
987 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200988 "filename" : "include/checksum.p4",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900989 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -0700990 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200991 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700992 },
993 "algo" : "csum16",
994 "input" : [
995 {
996 "type" : "field",
997 "value" : ["ipv4", "version"]
998 },
999 {
1000 "type" : "field",
1001 "value" : ["ipv4", "ihl"]
1002 },
1003 {
1004 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001005 "value" : ["ipv4", "dscp"]
1006 },
1007 {
1008 "type" : "field",
1009 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -07001010 },
1011 {
1012 "type" : "field",
1013 "value" : ["ipv4", "total_len"]
1014 },
1015 {
1016 "type" : "field",
1017 "value" : ["ipv4", "identification"]
1018 },
1019 {
1020 "type" : "field",
1021 "value" : ["ipv4", "flags"]
1022 },
1023 {
1024 "type" : "field",
1025 "value" : ["ipv4", "frag_offset"]
1026 },
1027 {
1028 "type" : "field",
1029 "value" : ["ipv4", "ttl"]
1030 },
1031 {
1032 "type" : "field",
1033 "value" : ["ipv4", "protocol"]
1034 },
1035 {
1036 "type" : "field",
1037 "value" : ["ipv4", "src_addr"]
1038 },
1039 {
1040 "type" : "field",
1041 "value" : ["ipv4", "dst_addr"]
1042 }
1043 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001044 }
1045 ],
1046 "learn_lists" : [],
1047 "actions" : [
1048 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001049 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001050 "id" : 0,
1051 "runtime_data" : [],
1052 "primitives" : []
1053 },
1054 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001055 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001056 "id" : 1,
1057 "runtime_data" : [],
1058 "primitives" : []
1059 },
1060 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001061 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001062 "id" : 2,
1063 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001064 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001065 },
1066 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001067 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001068 "id" : 3,
1069 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001070 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001071 },
1072 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001073 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001074 "id" : 4,
1075 "runtime_data" : [],
1076 "primitives" : []
1077 },
1078 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001079 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001080 "id" : 5,
1081 "runtime_data" : [],
1082 "primitives" : []
1083 },
1084 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001085 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001086 "id" : 6,
1087 "runtime_data" : [],
1088 "primitives" : []
1089 },
1090 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001091 "name" : "FabricIngress.filtering.deny",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001092 "id" : 7,
Yi Tseng47eac892018-07-11 02:17:04 +08001093 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001094 "primitives" : [
1095 {
Yi Tsengbe342052017-11-03 10:21:23 -07001096 "op" : "assign",
1097 "parameters" : [
1098 {
1099 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001100 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
Yi Tsengbe342052017-11-03 10:21:23 -07001101 },
1102 {
1103 "type" : "expression",
1104 "value" : {
1105 "type" : "expression",
1106 "value" : {
1107 "op" : "b2d",
1108 "left" : null,
1109 "right" : {
1110 "type" : "bool",
1111 "value" : true
1112 }
1113 }
1114 }
1115 }
1116 ],
1117 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001118 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001119 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001120 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001121 "source_fragment" : "fabric_metadata.skip_forwarding = true"
1122 }
1123 },
1124 {
1125 "op" : "assign",
1126 "parameters" : [
1127 {
1128 "type" : "field",
1129 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1130 },
1131 {
1132 "type" : "expression",
1133 "value" : {
1134 "type" : "expression",
1135 "value" : {
1136 "op" : "b2d",
1137 "left" : null,
1138 "right" : {
1139 "type" : "bool",
1140 "value" : true
1141 }
1142 }
1143 }
1144 }
1145 ],
1146 "source_info" : {
1147 "filename" : "include/control/filtering.p4",
1148 "line" : 37,
1149 "column" : 8,
1150 "source_fragment" : "fabric_metadata.skip_next = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001151 }
1152 }
1153 ]
1154 },
1155 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001156 "name" : "FabricIngress.filtering.permit",
1157 "id" : 8,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001158 "runtime_data" : [],
1159 "primitives" : []
1160 },
1161 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001162 "name" : "FabricIngress.filtering.permit_with_internal_vlan",
1163 "id" : 9,
1164 "runtime_data" : [
1165 {
1166 "name" : "vlan_id",
1167 "bitwidth" : 12
1168 }
1169 ],
1170 "primitives" : [
1171 {
1172 "op" : "assign",
1173 "parameters" : [
1174 {
1175 "type" : "field",
1176 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1177 },
1178 {
1179 "type" : "runtime_data",
1180 "value" : 0
1181 }
1182 ],
1183 "source_info" : {
1184 "filename" : "include/control/filtering.p4",
1185 "line" : 47,
1186 "column" : 8,
1187 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1188 }
1189 }
1190 ]
1191 },
1192 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001193 "name" : "FabricIngress.filtering.set_forwarding_type",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001194 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07001195 "runtime_data" : [
1196 {
1197 "name" : "fwd_type",
1198 "bitwidth" : 3
1199 }
1200 ],
1201 "primitives" : [
1202 {
1203 "op" : "assign",
1204 "parameters" : [
1205 {
1206 "type" : "field",
1207 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1208 },
1209 {
1210 "type" : "runtime_data",
1211 "value" : 0
1212 }
1213 ],
1214 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001215 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001216 "line" : 83,
Yi Tsengbe342052017-11-03 10:21:23 -07001217 "column" : 8,
1218 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1219 }
1220 }
1221 ]
1222 },
1223 {
Yi Tseng47eac892018-07-11 02:17:04 +08001224 "name" : "FabricIngress.forwarding.set_next_id_bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001225 "id" : 11,
Carmelo Casconef645e842018-07-16 18:31:52 +02001226 "runtime_data" : [
1227 {
1228 "name" : "next_id",
1229 "bitwidth" : 32
1230 }
1231 ],
1232 "primitives" : [
1233 {
1234 "op" : "assign",
1235 "parameters" : [
1236 {
1237 "type" : "field",
1238 "value" : ["scalars", "fabric_metadata_t.next_id"]
1239 },
1240 {
1241 "type" : "runtime_data",
1242 "value" : 0
1243 }
1244 ],
1245 "source_info" : {
1246 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001247 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001248 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001249 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001250 }
1251 }
1252 ]
1253 },
1254 {
1255 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001256 "id" : 12,
Carmelo Casconef645e842018-07-16 18:31:52 +02001257 "runtime_data" : [
1258 {
1259 "name" : "next_id",
1260 "bitwidth" : 32
1261 }
1262 ],
1263 "primitives" : [
1264 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001265 "op" : "assign",
Carmelo Casconef645e842018-07-16 18:31:52 +02001266 "parameters" : [
1267 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001268 "type" : "field",
1269 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1270 },
1271 {
1272 "type" : "hexstr",
1273 "value" : "0x000000"
Carmelo Casconef645e842018-07-16 18:31:52 +02001274 }
1275 ],
1276 "source_info" : {
1277 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001278 "line" : 66,
Carmelo Casconef645e842018-07-16 18:31:52 +02001279 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001280 "source_fragment" : "fabric_metadata.mpls_label = 0"
Carmelo Casconef645e842018-07-16 18:31:52 +02001281 }
1282 },
1283 {
1284 "op" : "assign",
1285 "parameters" : [
1286 {
1287 "type" : "field",
1288 "value" : ["scalars", "fabric_metadata_t.next_id"]
1289 },
1290 {
1291 "type" : "runtime_data",
1292 "value" : 0
1293 }
1294 ],
1295 "source_info" : {
1296 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001297 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001298 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001299 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001300 }
1301 }
1302 ]
1303 },
1304 {
Charles Chan384aea22018-08-23 22:08:02 -07001305 "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001306 "id" : 13,
Carmelo Casconef645e842018-07-16 18:31:52 +02001307 "runtime_data" : [
1308 {
1309 "name" : "next_id",
1310 "bitwidth" : 32
1311 }
1312 ],
1313 "primitives" : [
1314 {
1315 "op" : "assign",
1316 "parameters" : [
1317 {
1318 "type" : "field",
1319 "value" : ["scalars", "fabric_metadata_t.next_id"]
1320 },
1321 {
1322 "type" : "runtime_data",
1323 "value" : 0
1324 }
1325 ],
1326 "source_info" : {
1327 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001328 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001329 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001330 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001331 }
1332 }
1333 ]
1334 },
1335 {
Charles Chancd03f072018-08-31 17:46:37 -07001336 "name" : "FabricIngress.forwarding.nop_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001337 "id" : 14,
Charles Chancd03f072018-08-31 17:46:37 -07001338 "runtime_data" : [],
1339 "primitives" : []
1340 },
1341 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001342 "name" : "FabricIngress.acl.set_next_id_acl",
1343 "id" : 15,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001344 "runtime_data" : [
1345 {
1346 "name" : "next_id",
1347 "bitwidth" : 32
1348 }
1349 ],
1350 "primitives" : [
1351 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001352 "op" : "assign",
1353 "parameters" : [
1354 {
1355 "type" : "field",
1356 "value" : ["scalars", "fabric_metadata_t.next_id"]
1357 },
1358 {
1359 "type" : "runtime_data",
1360 "value" : 0
1361 }
1362 ],
1363 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001364 "filename" : "include/control/acl.p4",
1365 "line" : 33,
Yi Tseng47eac892018-07-11 02:17:04 +08001366 "column" : 8,
1367 "source_fragment" : "fabric_metadata.next_id = next_id"
1368 }
1369 }
1370 ]
1371 },
1372 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001373 "name" : "FabricIngress.acl.punt_to_cpu",
1374 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07001375 "runtime_data" : [],
1376 "primitives" : [
1377 {
1378 "op" : "assign",
1379 "parameters" : [
1380 {
1381 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001382 "value" : ["standard_metadata", "egress_spec"]
1383 },
1384 {
1385 "type" : "hexstr",
1386 "value" : "0x00ff"
1387 }
1388 ],
1389 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001390 "filename" : "include/control/acl.p4",
1391 "line" : 39,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001392 "column" : 8,
1393 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001394 }
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001395 },
1396 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001397 "op" : "assign",
1398 "parameters" : [
1399 {
1400 "type" : "field",
1401 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1402 },
1403 {
1404 "type" : "expression",
1405 "value" : {
1406 "type" : "expression",
1407 "value" : {
1408 "op" : "b2d",
1409 "left" : null,
1410 "right" : {
1411 "type" : "bool",
1412 "value" : true
1413 }
1414 }
1415 }
1416 }
1417 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001418 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001419 "filename" : "include/control/acl.p4",
1420 "line" : 40,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001421 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001422 "source_fragment" : "fabric_metadata.skip_next = true"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001423 }
1424 }
1425 ]
1426 },
1427 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001428 "name" : "FabricIngress.acl.clone_to_cpu",
1429 "id" : 17,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001430 "runtime_data" : [],
1431 "primitives" : [
1432 {
1433 "op" : "assign",
1434 "parameters" : [
1435 {
1436 "type" : "field",
1437 "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
1438 },
1439 {
1440 "type" : "expression",
1441 "value" : {
1442 "type" : "expression",
1443 "value" : {
1444 "op" : "b2d",
1445 "left" : null,
1446 "right" : {
1447 "type" : "bool",
1448 "value" : true
1449 }
1450 }
1451 }
1452 }
1453 ],
1454 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001455 "filename" : "include/control/acl.p4",
1456 "line" : 46,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001457 "column" : 8,
1458 "source_fragment" : "fabric_metadata.clone_to_cpu = true"
1459 }
Yi Tsengbe342052017-11-03 10:21:23 -07001460 }
1461 ]
1462 },
1463 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001464 "name" : "FabricIngress.acl.drop",
1465 "id" : 18,
Yi Tseng47eac892018-07-11 02:17:04 +08001466 "runtime_data" : [],
1467 "primitives" : [
1468 {
1469 "op" : "drop",
1470 "parameters" : [],
1471 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001472 "filename" : "include/control/acl.p4",
1473 "line" : 51,
Yi Tseng47eac892018-07-11 02:17:04 +08001474 "column" : 8,
1475 "source_fragment" : "mark_to_drop()"
1476 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001477 },
1478 {
1479 "op" : "assign",
1480 "parameters" : [
1481 {
1482 "type" : "field",
1483 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1484 },
1485 {
1486 "type" : "expression",
1487 "value" : {
1488 "type" : "expression",
1489 "value" : {
1490 "op" : "b2d",
1491 "left" : null,
1492 "right" : {
1493 "type" : "bool",
1494 "value" : true
1495 }
1496 }
1497 }
1498 }
1499 ],
1500 "source_info" : {
1501 "filename" : "include/control/acl.p4",
1502 "line" : 52,
1503 "column" : 8,
1504 "source_fragment" : "fabric_metadata.skip_next = true"
1505 }
Yi Tseng47eac892018-07-11 02:17:04 +08001506 }
1507 ]
1508 },
1509 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001510 "name" : "FabricIngress.acl.nop_acl",
1511 "id" : 19,
Charles Chancf696e52018-08-16 16:25:13 -07001512 "runtime_data" : [],
1513 "primitives" : []
1514 },
1515 {
Yi Tseng47eac892018-07-11 02:17:04 +08001516 "name" : "FabricIngress.next.set_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001517 "id" : 20,
1518 "runtime_data" : [
1519 {
1520 "name" : "vlan_id",
1521 "bitwidth" : 12
1522 }
1523 ],
1524 "primitives" : [
1525 {
1526 "op" : "assign",
1527 "parameters" : [
1528 {
1529 "type" : "field",
1530 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1531 },
1532 {
1533 "type" : "runtime_data",
1534 "value" : 0
1535 }
1536 ],
1537 "source_info" : {
1538 "filename" : "include/control/next.p4",
1539 "line" : 70,
1540 "column" : 8,
1541 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1542 }
1543 }
1544 ]
1545 },
1546 {
1547 "name" : "FabricIngress.next.output_xconnect",
Charles Chancd03f072018-08-31 17:46:37 -07001548 "id" : 21,
Yi Tseng47eac892018-07-11 02:17:04 +08001549 "runtime_data" : [
1550 {
Yi Tsengbe342052017-11-03 10:21:23 -07001551 "name" : "port_num",
1552 "bitwidth" : 9
1553 }
1554 ],
1555 "primitives" : [
1556 {
1557 "op" : "assign",
1558 "parameters" : [
1559 {
1560 "type" : "field",
1561 "value" : ["standard_metadata", "egress_spec"]
1562 },
1563 {
1564 "type" : "runtime_data",
1565 "value" : 0
1566 }
1567 ],
1568 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001569 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001570 "line" : 31,
1571 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001572 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1573 }
1574 }
1575 ]
1576 },
1577 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001578 "name" : "FabricIngress.next.set_next_id_xconnect",
1579 "id" : 22,
1580 "runtime_data" : [
1581 {
1582 "name" : "next_id",
1583 "bitwidth" : 32
1584 }
1585 ],
1586 "primitives" : [
1587 {
1588 "op" : "assign",
1589 "parameters" : [
1590 {
1591 "type" : "field",
1592 "value" : ["scalars", "fabric_metadata_t.next_id"]
1593 },
1594 {
1595 "type" : "runtime_data",
1596 "value" : 0
1597 }
1598 ],
1599 "source_info" : {
1600 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001601 "line" : 100,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001602 "column" : 8,
1603 "source_fragment" : "fabric_metadata.next_id = next_id"
1604 }
1605 }
1606 ]
1607 },
1608 {
1609 "name" : "FabricIngress.next.output_hashed",
1610 "id" : 23,
1611 "runtime_data" : [
1612 {
1613 "name" : "port_num",
1614 "bitwidth" : 9
1615 }
1616 ],
1617 "primitives" : [
1618 {
1619 "op" : "assign",
1620 "parameters" : [
1621 {
1622 "type" : "field",
1623 "value" : ["standard_metadata", "egress_spec"]
1624 },
1625 {
1626 "type" : "runtime_data",
1627 "value" : 0
1628 }
1629 ],
1630 "source_info" : {
1631 "filename" : "include/control/next.p4",
1632 "line" : 31,
1633 "column" : 5,
1634 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1635 }
1636 }
1637 ]
1638 },
1639 {
1640 "name" : "FabricIngress.next.routing_hashed",
Charles Chancd03f072018-08-31 17:46:37 -07001641 "id" : 24,
Yi Tseng47eac892018-07-11 02:17:04 +08001642 "runtime_data" : [
1643 {
1644 "name" : "port_num",
1645 "bitwidth" : 9
1646 },
1647 {
1648 "name" : "smac",
1649 "bitwidth" : 48
1650 },
1651 {
1652 "name" : "dmac",
1653 "bitwidth" : 48
1654 }
1655 ],
1656 "primitives" : [
1657 {
1658 "op" : "assign",
1659 "parameters" : [
1660 {
1661 "type" : "field",
1662 "value" : ["ethernet", "src_addr"]
1663 },
1664 {
1665 "type" : "runtime_data",
1666 "value" : 1
1667 }
1668 ],
1669 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001670 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001671 "line" : 36,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001672 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001673 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1674 }
1675 },
1676 {
1677 "op" : "assign",
1678 "parameters" : [
1679 {
1680 "type" : "field",
1681 "value" : ["ethernet", "dst_addr"]
1682 },
1683 {
1684 "type" : "runtime_data",
1685 "value" : 2
1686 }
1687 ],
1688 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001689 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001690 "line" : 41,
1691 "column" : 8,
1692 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1693 }
1694 },
1695 {
1696 "op" : "assign",
1697 "parameters" : [
1698 {
1699 "type" : "field",
1700 "value" : ["standard_metadata", "egress_spec"]
1701 },
1702 {
1703 "type" : "runtime_data",
1704 "value" : 0
1705 }
1706 ],
1707 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001708 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001709 "line" : 31,
1710 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001711 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001712 }
1713 }
1714 ]
1715 },
1716 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001717 "name" : "FabricIngress.next.mpls_routing_hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02001718 "id" : 25,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001719 "runtime_data" : [
1720 {
1721 "name" : "port_num",
1722 "bitwidth" : 9
1723 },
1724 {
1725 "name" : "smac",
1726 "bitwidth" : 48
1727 },
1728 {
1729 "name" : "dmac",
1730 "bitwidth" : 48
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001731 },
1732 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001733 "name" : "label",
1734 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001735 }
1736 ],
1737 "primitives" : [
1738 {
1739 "op" : "assign",
1740 "parameters" : [
1741 {
1742 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001743 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1744 },
1745 {
1746 "type" : "runtime_data",
1747 "value" : 3
1748 }
1749 ],
1750 "source_info" : {
1751 "filename" : "include/control/next.p4",
1752 "line" : 46,
1753 "column" : 8,
1754 "source_fragment" : "fabric_metadata.mpls_label = label; ..."
1755 }
1756 },
1757 {
1758 "op" : "assign",
1759 "parameters" : [
1760 {
1761 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001762 "value" : ["ethernet", "src_addr"]
1763 },
1764 {
1765 "type" : "runtime_data",
1766 "value" : 1
1767 }
1768 ],
1769 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001770 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001771 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001772 "column" : 8,
1773 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1774 }
1775 },
1776 {
1777 "op" : "assign",
1778 "parameters" : [
1779 {
1780 "type" : "field",
1781 "value" : ["ethernet", "dst_addr"]
1782 },
1783 {
1784 "type" : "runtime_data",
1785 "value" : 2
1786 }
1787 ],
1788 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001789 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001790 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001791 "column" : 8,
1792 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1793 }
1794 },
1795 {
1796 "op" : "assign",
1797 "parameters" : [
1798 {
1799 "type" : "field",
1800 "value" : ["standard_metadata", "egress_spec"]
1801 },
1802 {
1803 "type" : "runtime_data",
1804 "value" : 0
1805 }
1806 ],
1807 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001808 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001809 "line" : 31,
1810 "column" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07001811 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1812 }
Yi Tsengbe342052017-11-03 10:21:23 -07001813 }
1814 ]
1815 },
1816 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001817 "name" : "FabricIngress.next.set_mcast_group_id",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001818 "id" : 26,
1819 "runtime_data" : [
1820 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001821 "name" : "group_id",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001822 "bitwidth" : 16
1823 }
1824 ],
1825 "primitives" : [
1826 {
1827 "op" : "assign",
1828 "parameters" : [
1829 {
1830 "type" : "field",
1831 "value" : ["standard_metadata", "mcast_grp"]
1832 },
1833 {
1834 "type" : "runtime_data",
1835 "value" : 0
1836 }
1837 ],
1838 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001839 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001840 "line" : 213,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001841 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001842 "source_fragment" : "standard_metadata.mcast_grp = group_id"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001843 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02001844 },
1845 {
1846 "op" : "assign",
1847 "parameters" : [
1848 {
1849 "type" : "field",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001850 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02001851 },
1852 {
1853 "type" : "expression",
1854 "value" : {
1855 "type" : "expression",
1856 "value" : {
1857 "op" : "b2d",
1858 "left" : null,
1859 "right" : {
1860 "type" : "bool",
1861 "value" : true
1862 }
1863 }
1864 }
1865 }
1866 ],
1867 "source_info" : {
1868 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001869 "line" : 214,
Carmelo Casconea5400af2018-07-17 22:11:54 +02001870 "column" : 8,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001871 "source_fragment" : "fabric_metadata.is_multicast = true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02001872 }
Esin Karaman971fb7f2017-12-28 13:44:52 +00001873 }
1874 ]
1875 },
1876 {
1877 "name" : "act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001878 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001879 "runtime_data" : [],
1880 "primitives" : [
1881 {
1882 "op" : "assign",
1883 "parameters" : [
1884 {
1885 "type" : "field",
1886 "value" : ["standard_metadata", "egress_spec"]
1887 },
1888 {
1889 "type" : "field",
1890 "value" : ["packet_out", "egress_port"]
1891 }
1892 ],
1893 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001894 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001895 "line" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001896 "column" : 12,
1897 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
1898 }
Yi Tseng1d842672017-11-28 16:06:52 -08001899 },
1900 {
1901 "op" : "remove_header",
1902 "parameters" : [
1903 {
1904 "type" : "header",
1905 "value" : "packet_out"
1906 }
1907 ],
1908 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001909 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001910 "line" : 26,
Yi Tseng1d842672017-11-28 16:06:52 -08001911 "column" : 12,
1912 "source_fragment" : "hdr.packet_out.setInvalid()"
1913 }
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001914 },
1915 {
1916 "op" : "assign",
1917 "parameters" : [
1918 {
1919 "type" : "field",
1920 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
1921 },
1922 {
1923 "type" : "expression",
1924 "value" : {
1925 "type" : "expression",
1926 "value" : {
1927 "op" : "b2d",
1928 "left" : null,
1929 "right" : {
1930 "type" : "bool",
1931 "value" : true
1932 }
1933 }
1934 }
1935 }
1936 ],
1937 "source_info" : {
1938 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001939 "line" : 27,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001940 "column" : 12,
1941 "source_fragment" : "fabric_metadata.is_controller_packet_out = true"
1942 }
Yi Tsengbe342052017-11-03 10:21:23 -07001943 }
1944 ]
1945 },
1946 {
1947 "name" : "act_0",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001948 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07001949 "runtime_data" : [],
1950 "primitives" : [
1951 {
1952 "op" : "assign",
1953 "parameters" : [
1954 {
1955 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001956 "value" : ["scalars", "fabric_metadata_t.eth_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08001957 },
1958 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001959 "type" : "field",
1960 "value" : ["vlan_tag", "eth_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08001961 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001962 ],
1963 "source_info" : {
1964 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001965 "line" : 105,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001966 "column" : 12,
1967 "source_fragment" : "fabric_metadata.eth_type = hdr.vlan_tag.eth_type"
1968 }
1969 },
1970 {
1971 "op" : "assign",
1972 "parameters" : [
1973 {
1974 "type" : "field",
1975 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1976 },
1977 {
1978 "type" : "field",
1979 "value" : ["vlan_tag", "vlan_id"]
1980 }
1981 ],
1982 "source_info" : {
1983 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001984 "line" : 106,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001985 "column" : 12,
1986 "source_fragment" : "fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id"
1987 }
1988 },
1989 {
1990 "op" : "assign",
1991 "parameters" : [
1992 {
1993 "type" : "field",
1994 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
1995 },
1996 {
1997 "type" : "field",
1998 "value" : ["vlan_tag", "pri"]
1999 }
2000 ],
2001 "source_info" : {
2002 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002003 "line" : 107,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002004 "column" : 12,
2005 "source_fragment" : "fabric_metadata.vlan_pri = hdr.vlan_tag.pri"
2006 }
2007 },
2008 {
2009 "op" : "assign",
2010 "parameters" : [
2011 {
2012 "type" : "field",
2013 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2014 },
2015 {
2016 "type" : "field",
2017 "value" : ["vlan_tag", "cfi"]
2018 }
2019 ],
2020 "source_info" : {
2021 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002022 "line" : 108,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002023 "column" : 12,
2024 "source_fragment" : "fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi"
2025 }
Yi Tseng1d842672017-11-28 16:06:52 -08002026 }
2027 ]
2028 },
2029 {
2030 "name" : "act_1",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002031 "id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002032 "runtime_data" : [],
2033 "primitives" : [
2034 {
2035 "op" : "assign",
2036 "parameters" : [
2037 {
2038 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002039 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2040 },
2041 {
2042 "type" : "hexstr",
2043 "value" : "0x41"
2044 }
2045 ],
2046 "source_info" : {
2047 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002048 "line" : 115,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002049 "column" : 12,
2050 "source_fragment" : "fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1"
2051 }
2052 }
2053 ]
2054 },
2055 {
2056 "name" : "act_2",
2057 "id" : 30,
2058 "runtime_data" : [],
2059 "primitives" : [
2060 {
2061 "op" : "assign",
2062 "parameters" : [
2063 {
2064 "type" : "field",
2065 "value" : ["scalars", "tmp"]
Yi Tseng1d842672017-11-28 16:06:52 -08002066 },
2067 {
2068 "type" : "expression",
2069 "value" : {
2070 "type" : "expression",
2071 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002072 "op" : "&",
2073 "left" : {
2074 "type" : "field",
2075 "value" : ["standard_metadata", "egress_spec"]
2076 },
Yi Tseng1d842672017-11-28 16:06:52 -08002077 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002078 "type" : "hexstr",
2079 "value" : "0xffffffff"
Yi Tseng1d842672017-11-28 16:06:52 -08002080 }
2081 }
2082 }
2083 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002084 ],
2085 "source_info" : {
2086 "filename" : "include/control/port_counter.p4",
2087 "line" : 31,
2088 "column" : 38,
2089 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2090 }
2091 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002092 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002093 "op" : "count",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002094 "parameters" : [
2095 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002096 "type" : "counter_array",
2097 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002098 },
2099 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002100 "type" : "field",
2101 "value" : ["scalars", "tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002102 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002103 ],
2104 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002105 "filename" : "include/control/port_counter.p4",
2106 "line" : 31,
2107 "column" : 12,
2108 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002109 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002110 }
2111 ]
2112 },
2113 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002114 "name" : "act_3",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002115 "id" : 31,
2116 "runtime_data" : [],
2117 "primitives" : [
2118 {
2119 "op" : "assign",
2120 "parameters" : [
2121 {
2122 "type" : "field",
2123 "value" : ["scalars", "tmp_1"]
2124 },
2125 {
2126 "type" : "expression",
2127 "value" : {
2128 "type" : "expression",
2129 "value" : {
2130 "op" : "&",
2131 "left" : {
2132 "type" : "field",
2133 "value" : ["standard_metadata", "ingress_port"]
2134 },
2135 "right" : {
2136 "type" : "hexstr",
2137 "value" : "0xffffffff"
2138 }
2139 }
2140 }
2141 }
2142 ],
2143 "source_info" : {
2144 "filename" : "include/control/port_counter.p4",
2145 "line" : 34,
2146 "column" : 39,
2147 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
2148 }
2149 },
2150 {
2151 "op" : "count",
2152 "parameters" : [
2153 {
2154 "type" : "counter_array",
2155 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
2156 },
2157 {
2158 "type" : "field",
2159 "value" : ["scalars", "tmp_1"]
2160 }
2161 ],
2162 "source_info" : {
2163 "filename" : "include/control/port_counter.p4",
2164 "line" : 34,
2165 "column" : 12,
2166 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2167 }
2168 }
2169 ]
2170 },
2171 {
2172 "name" : "nop",
2173 "id" : 32,
2174 "runtime_data" : [],
2175 "primitives" : []
2176 },
2177 {
2178 "name" : "FabricEgress.egress_next.pop_mpls_if_present",
2179 "id" : 33,
2180 "runtime_data" : [],
2181 "primitives" : [
2182 {
2183 "op" : "remove_header",
2184 "parameters" : [
2185 {
2186 "type" : "header",
2187 "value" : "mpls"
2188 }
2189 ],
2190 "source_info" : {
2191 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002192 "line" : 252,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002193 "column" : 8,
2194 "source_fragment" : "hdr.mpls.setInvalid()"
2195 }
2196 },
2197 {
2198 "op" : "assign",
2199 "parameters" : [
2200 {
2201 "type" : "field",
2202 "value" : ["scalars", "fabric_metadata_t.eth_type"]
2203 },
2204 {
2205 "type" : "field",
2206 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
2207 }
2208 ],
2209 "source_info" : {
2210 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002211 "line" : 254,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002212 "column" : 8,
2213 "source_fragment" : "fabric_metadata.eth_type = fabric_metadata.ip_eth_type"
2214 }
2215 }
2216 ]
2217 },
2218 {
2219 "name" : "FabricEgress.egress_next.set_mpls",
2220 "id" : 34,
2221 "runtime_data" : [],
2222 "primitives" : [
2223 {
2224 "op" : "add_header",
2225 "parameters" : [
2226 {
2227 "type" : "header",
2228 "value" : "mpls"
2229 }
2230 ],
2231 "source_info" : {
2232 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002233 "line" : 259,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002234 "column" : 8,
2235 "source_fragment" : "hdr.mpls.setValid()"
2236 }
2237 },
2238 {
2239 "op" : "assign",
2240 "parameters" : [
2241 {
2242 "type" : "field",
2243 "value" : ["mpls", "label"]
2244 },
2245 {
2246 "type" : "field",
2247 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
2248 }
2249 ],
2250 "source_info" : {
2251 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002252 "line" : 260,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002253 "column" : 8,
2254 "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label"
2255 }
2256 },
2257 {
2258 "op" : "assign",
2259 "parameters" : [
2260 {
2261 "type" : "field",
2262 "value" : ["mpls", "tc"]
2263 },
2264 {
2265 "type" : "hexstr",
2266 "value" : "0x00"
2267 }
2268 ],
2269 "source_info" : {
2270 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002271 "line" : 261,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002272 "column" : 8,
2273 "source_fragment" : "hdr.mpls.tc = 3w0"
2274 }
2275 },
2276 {
2277 "op" : "assign",
2278 "parameters" : [
2279 {
2280 "type" : "field",
2281 "value" : ["mpls", "bos"]
2282 },
2283 {
2284 "type" : "hexstr",
2285 "value" : "0x01"
2286 }
2287 ],
2288 "source_info" : {
2289 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002290 "line" : 262,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002291 "column" : 8,
2292 "source_fragment" : "hdr.mpls.bos = 1w1"
2293 }
2294 },
2295 {
2296 "op" : "assign",
2297 "parameters" : [
2298 {
2299 "type" : "field",
2300 "value" : ["mpls", "ttl"]
2301 },
2302 {
2303 "type" : "field",
2304 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2305 }
2306 ],
2307 "source_info" : {
2308 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002309 "line" : 263,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002310 "column" : 8,
2311 "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl"
2312 }
2313 },
2314 {
2315 "op" : "assign",
2316 "parameters" : [
2317 {
2318 "type" : "field",
2319 "value" : ["scalars", "fabric_metadata_t.eth_type"]
2320 },
2321 {
2322 "type" : "hexstr",
2323 "value" : "0x8847"
2324 }
2325 ],
2326 "source_info" : {
2327 "filename" : "include/control/../define.p4",
2328 "line" : 108,
2329 "column" : 31,
2330 "source_fragment" : "0x8847; ..."
2331 }
2332 }
2333 ]
2334 },
2335 {
2336 "name" : "FabricEgress.egress_next.push_vlan",
2337 "id" : 35,
2338 "runtime_data" : [],
2339 "primitives" : [
2340 {
2341 "op" : "add_header",
2342 "parameters" : [
2343 {
2344 "type" : "header",
2345 "value" : "vlan_tag"
2346 }
2347 ],
2348 "source_info" : {
2349 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002350 "line" : 271,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002351 "column" : 8,
2352 "source_fragment" : "hdr.vlan_tag.setValid()"
2353 }
2354 },
2355 {
2356 "op" : "assign",
2357 "parameters" : [
2358 {
2359 "type" : "field",
2360 "value" : ["vlan_tag", "cfi"]
2361 },
2362 {
2363 "type" : "field",
2364 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2365 }
2366 ],
2367 "source_info" : {
2368 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002369 "line" : 272,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002370 "column" : 8,
2371 "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi"
2372 }
2373 },
2374 {
2375 "op" : "assign",
2376 "parameters" : [
2377 {
2378 "type" : "field",
2379 "value" : ["vlan_tag", "pri"]
2380 },
2381 {
2382 "type" : "field",
2383 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2384 }
2385 ],
2386 "source_info" : {
2387 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002388 "line" : 273,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002389 "column" : 8,
2390 "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri"
2391 }
2392 },
2393 {
2394 "op" : "assign",
2395 "parameters" : [
2396 {
2397 "type" : "field",
2398 "value" : ["vlan_tag", "eth_type"]
2399 },
2400 {
2401 "type" : "field",
2402 "value" : ["scalars", "fabric_metadata_t.eth_type"]
2403 }
2404 ],
2405 "source_info" : {
2406 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002407 "line" : 274,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002408 "column" : 8,
2409 "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type"
2410 }
2411 },
2412 {
2413 "op" : "assign",
2414 "parameters" : [
2415 {
2416 "type" : "field",
2417 "value" : ["vlan_tag", "vlan_id"]
2418 },
2419 {
2420 "type" : "field",
2421 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2422 }
2423 ],
2424 "source_info" : {
2425 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002426 "line" : 275,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002427 "column" : 8,
2428 "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id"
2429 }
2430 },
2431 {
2432 "op" : "assign",
2433 "parameters" : [
2434 {
2435 "type" : "field",
2436 "value" : ["ethernet", "eth_type"]
2437 },
2438 {
2439 "type" : "hexstr",
2440 "value" : "0x8100"
2441 }
2442 ],
2443 "source_info" : {
2444 "filename" : "include/control/../define.p4",
2445 "line" : 107,
2446 "column" : 31,
2447 "source_fragment" : "0x8100; ..."
2448 }
2449 }
2450 ]
2451 },
2452 {
2453 "name" : "FabricEgress.egress_next.pop_vlan",
Charles Chancd03f072018-08-31 17:46:37 -07002454 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002455 "runtime_data" : [],
2456 "primitives" : [
2457 {
2458 "op" : "assign",
2459 "parameters" : [
2460 {
2461 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002462 "value" : ["ethernet", "eth_type"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002463 },
2464 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002465 "type" : "field",
2466 "value" : ["scalars", "fabric_metadata_t.eth_type"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002467 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002468 ],
2469 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002470 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002471 "line" : 286,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002472 "column" : 8,
2473 "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type"
2474 }
2475 },
2476 {
2477 "op" : "remove_header",
2478 "parameters" : [
2479 {
2480 "type" : "header",
2481 "value" : "vlan_tag"
2482 }
2483 ],
2484 "source_info" : {
2485 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002486 "line" : 287,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002487 "column" : 8,
2488 "source_fragment" : "hdr.vlan_tag.setInvalid()"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002489 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002490 }
2491 ]
2492 },
2493 {
2494 "name" : "act_4",
Charles Chancd03f072018-08-31 17:46:37 -07002495 "id" : 37,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002496 "runtime_data" : [],
2497 "primitives" : [
2498 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002499 "op" : "drop",
2500 "parameters" : [],
2501 "source_info" : {
2502 "filename" : "include/control/packetio.p4",
2503 "line" : 47,
2504 "column" : 16,
2505 "source_fragment" : "mark_to_drop()"
2506 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002507 }
2508 ]
2509 },
2510 {
2511 "name" : "act_5",
Charles Chancd03f072018-08-31 17:46:37 -07002512 "id" : 38,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002513 "runtime_data" : [],
2514 "primitives" : [
2515 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002516 "op" : "add_header",
2517 "parameters" : [
2518 {
2519 "type" : "header",
2520 "value" : "packet_in"
2521 }
2522 ],
2523 "source_info" : {
2524 "filename" : "include/control/packetio.p4",
2525 "line" : 49,
2526 "column" : 12,
2527 "source_fragment" : "hdr.packet_in.setValid()"
2528 }
2529 },
2530 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02002531 "op" : "assign",
2532 "parameters" : [
2533 {
2534 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002535 "value" : ["packet_in", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002536 },
2537 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002538 "type" : "field",
2539 "value" : ["standard_metadata", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002540 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002541 ],
2542 "source_info" : {
2543 "filename" : "include/control/packetio.p4",
2544 "line" : 50,
2545 "column" : 12,
2546 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2547 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002548 }
2549 ]
2550 },
2551 {
2552 "name" : "act_6",
Charles Chancd03f072018-08-31 17:46:37 -07002553 "id" : 39,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002554 "runtime_data" : [],
2555 "primitives" : [
2556 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002557 "op" : "drop",
2558 "parameters" : [],
2559 "source_info" : {
2560 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002561 "line" : 308,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002562 "column" : 12,
2563 "source_fragment" : "mark_to_drop()"
2564 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002565 }
2566 ]
2567 },
2568 {
2569 "name" : "act_7",
Charles Chancd03f072018-08-31 17:46:37 -07002570 "id" : 40,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002571 "runtime_data" : [],
2572 "primitives" : [
2573 {
2574 "op" : "assign",
2575 "parameters" : [
2576 {
2577 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002578 "value" : ["scalars", "egress_next_tmp"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002579 },
2580 {
2581 "type" : "expression",
2582 "value" : {
2583 "type" : "expression",
2584 "value" : {
2585 "op" : "b2d",
2586 "left" : null,
2587 "right" : {
2588 "type" : "bool",
2589 "value" : true
2590 }
2591 }
2592 }
2593 }
2594 ]
2595 }
2596 ]
2597 },
2598 {
2599 "name" : "act_8",
Charles Chancd03f072018-08-31 17:46:37 -07002600 "id" : 41,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002601 "runtime_data" : [],
2602 "primitives" : [
2603 {
2604 "op" : "assign",
2605 "parameters" : [
2606 {
2607 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002608 "value" : ["scalars", "egress_next_tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002609 },
2610 {
2611 "type" : "expression",
2612 "value" : {
2613 "type" : "expression",
2614 "value" : {
2615 "op" : "b2d",
2616 "left" : null,
2617 "right" : {
2618 "type" : "bool",
2619 "value" : false
2620 }
2621 }
2622 }
2623 }
2624 ]
2625 }
2626 ]
2627 },
2628 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002629 "name" : "act_9",
Charles Chancd03f072018-08-31 17:46:37 -07002630 "id" : 42,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002631 "runtime_data" : [],
2632 "primitives" : [
2633 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002634 "op" : "drop",
2635 "parameters" : [],
2636 "source_info" : {
2637 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002638 "line" : 327,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002639 "column" : 35,
2640 "source_fragment" : "mark_to_drop()"
2641 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002642 }
2643 ]
2644 },
2645 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002646 "name" : "act_10",
Charles Chancd03f072018-08-31 17:46:37 -07002647 "id" : 43,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002648 "runtime_data" : [],
2649 "primitives" : [
2650 {
2651 "op" : "assign",
2652 "parameters" : [
2653 {
2654 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002655 "value" : ["mpls", "ttl"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002656 },
2657 {
2658 "type" : "expression",
2659 "value" : {
2660 "type" : "expression",
2661 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002662 "op" : "&",
2663 "left" : {
2664 "type" : "expression",
2665 "value" : {
2666 "op" : "+",
2667 "left" : {
2668 "type" : "field",
2669 "value" : ["mpls", "ttl"]
2670 },
2671 "right" : {
2672 "type" : "hexstr",
2673 "value" : "0xff"
2674 }
2675 }
2676 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002677 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002678 "type" : "hexstr",
2679 "value" : "0xff"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002680 }
2681 }
2682 }
2683 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002684 ],
2685 "source_info" : {
2686 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002687 "line" : 326,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002688 "column" : 12,
2689 "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
2690 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002691 }
2692 ]
2693 },
2694 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002695 "name" : "act_11",
Charles Chancd03f072018-08-31 17:46:37 -07002696 "id" : 44,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002697 "runtime_data" : [],
2698 "primitives" : [
2699 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002700 "op" : "drop",
2701 "parameters" : [],
Carmelo Casconea5400af2018-07-17 22:11:54 +02002702 "source_info" : {
2703 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002704 "line" : 331,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002705 "column" : 39,
2706 "source_fragment" : "mark_to_drop()"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002707 }
2708 }
2709 ]
2710 },
2711 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002712 "name" : "act_12",
Charles Chancd03f072018-08-31 17:46:37 -07002713 "id" : 45,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002714 "runtime_data" : [],
2715 "primitives" : [
2716 {
2717 "op" : "assign",
2718 "parameters" : [
2719 {
2720 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002721 "value" : ["ipv4", "ttl"]
2722 },
2723 {
2724 "type" : "expression",
2725 "value" : {
2726 "type" : "expression",
2727 "value" : {
2728 "op" : "&",
2729 "left" : {
2730 "type" : "expression",
2731 "value" : {
2732 "op" : "+",
2733 "left" : {
2734 "type" : "field",
2735 "value" : ["ipv4", "ttl"]
2736 },
2737 "right" : {
2738 "type" : "hexstr",
2739 "value" : "0xff"
2740 }
2741 }
2742 },
2743 "right" : {
2744 "type" : "hexstr",
2745 "value" : "0xff"
2746 }
2747 }
2748 }
2749 }
2750 ],
2751 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002752 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002753 "line" : 330,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002754 "column" : 16,
Yi Tseng1d842672017-11-28 16:06:52 -08002755 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2756 }
2757 }
2758 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002759 }
2760 ],
2761 "pipelines" : [
2762 {
2763 "name" : "ingress",
2764 "id" : 0,
2765 "source_info" : {
2766 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002767 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07002768 "column" : 8,
2769 "source_fragment" : "FabricIngress"
2770 },
2771 "init_table" : "node_2",
2772 "tables" : [
2773 {
2774 "name" : "tbl_act",
2775 "id" : 0,
2776 "key" : [],
2777 "match_type" : "exact",
2778 "type" : "simple",
2779 "max_size" : 1024,
2780 "with_counters" : false,
2781 "support_timeout" : false,
2782 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002783 "action_ids" : [27],
Yi Tsengbe342052017-11-03 10:21:23 -07002784 "actions" : ["act"],
2785 "base_default_next" : null,
2786 "next_tables" : {
2787 "act" : null
2788 },
2789 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002790 "action_id" : 27,
2791 "action_const" : true,
2792 "action_data" : [],
2793 "action_entry_const" : true
2794 }
2795 },
2796 {
2797 "name" : "tbl_act_0",
2798 "id" : 1,
2799 "key" : [],
2800 "match_type" : "exact",
2801 "type" : "simple",
2802 "max_size" : 1024,
2803 "with_counters" : false,
2804 "support_timeout" : false,
2805 "direct_meters" : null,
2806 "action_ids" : [28],
2807 "actions" : ["act_0"],
2808 "base_default_next" : "node_6",
2809 "next_tables" : {
2810 "act_0" : "node_6"
2811 },
2812 "default_entry" : {
2813 "action_id" : 28,
2814 "action_const" : true,
2815 "action_data" : [],
2816 "action_entry_const" : true
2817 }
2818 },
2819 {
2820 "name" : "tbl_act_1",
2821 "id" : 2,
2822 "key" : [],
2823 "match_type" : "exact",
2824 "type" : "simple",
2825 "max_size" : 1024,
2826 "with_counters" : false,
2827 "support_timeout" : false,
2828 "direct_meters" : null,
2829 "action_ids" : [29],
2830 "actions" : ["act_1"],
2831 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
2832 "next_tables" : {
2833 "act_1" : "FabricIngress.filtering.ingress_port_vlan"
2834 },
2835 "default_entry" : {
2836 "action_id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002837 "action_const" : true,
2838 "action_data" : [],
2839 "action_entry_const" : true
2840 }
2841 },
2842 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002843 "name" : "FabricIngress.filtering.ingress_port_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002844 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -07002845 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002846 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002847 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07002848 "column" : 10,
2849 "source_fragment" : "ingress_port_vlan"
2850 },
2851 "key" : [
2852 {
2853 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002854 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002855 "target" : ["standard_metadata", "ingress_port"],
2856 "mask" : null
2857 },
2858 {
2859 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002860 "name" : "vlan_is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07002861 "target" : ["vlan_tag", "$valid$"],
2862 "mask" : null
2863 },
2864 {
2865 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002866 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002867 "target" : ["vlan_tag", "vlan_id"],
2868 "mask" : null
2869 }
2870 ],
2871 "match_type" : "ternary",
2872 "type" : "simple",
2873 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002874 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002875 "support_timeout" : false,
2876 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002877 "action_ids" : [7, 8, 9],
2878 "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"],
2879 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002880 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002881 "FabricIngress.filtering.deny" : "FabricIngress.filtering.fwd_classifier",
2882 "FabricIngress.filtering.permit" : "FabricIngress.filtering.fwd_classifier",
2883 "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002884 },
2885 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002886 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07002887 "action_const" : true,
2888 "action_data" : [],
2889 "action_entry_const" : true
2890 }
2891 },
2892 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002893 "name" : "FabricIngress.filtering.fwd_classifier",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002894 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07002895 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002896 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002897 "line" : 87,
Yi Tsengbe342052017-11-03 10:21:23 -07002898 "column" : 10,
2899 "source_fragment" : "fwd_classifier"
2900 },
2901 "key" : [
2902 {
2903 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002904 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002905 "target" : ["standard_metadata", "ingress_port"],
2906 "mask" : null
2907 },
2908 {
Charles Chan384aea22018-08-23 22:08:02 -07002909 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002910 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07002911 "target" : ["ethernet", "dst_addr"],
2912 "mask" : null
2913 },
2914 {
2915 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002916 "name" : "eth_type",
2917 "target" : ["scalars", "fabric_metadata_t.eth_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002918 "mask" : null
2919 }
2920 ],
Charles Chan384aea22018-08-23 22:08:02 -07002921 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002922 "type" : "simple",
2923 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002924 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002925 "support_timeout" : false,
2926 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002927 "action_ids" : [10],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002928 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002929 "base_default_next" : "node_10",
Yi Tsengbe342052017-11-03 10:21:23 -07002930 "next_tables" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002931 "FabricIngress.filtering.set_forwarding_type" : "node_10"
Yi Tsengbe342052017-11-03 10:21:23 -07002932 },
2933 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002934 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07002935 "action_const" : true,
2936 "action_data" : ["0x0"],
2937 "action_entry_const" : true
2938 }
2939 },
2940 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002941 "name" : "FabricIngress.forwarding.bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002942 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07002943 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002944 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002945 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002946 "column" : 10,
2947 "source_fragment" : "bridging"
2948 },
2949 "key" : [
2950 {
2951 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002952 "name" : "vlan_id",
2953 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tsengbe342052017-11-03 10:21:23 -07002954 "mask" : null
2955 },
2956 {
2957 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002958 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07002959 "target" : ["ethernet", "dst_addr"],
2960 "mask" : null
2961 }
2962 ],
2963 "match_type" : "ternary",
2964 "type" : "simple",
2965 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002966 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002967 "support_timeout" : false,
2968 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002969 "action_ids" : [11, 0],
2970 "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
2971 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08002972 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002973 "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
2974 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08002975 },
2976 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002977 "action_id" : 0,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002978 "action_const" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002979 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002980 "action_entry_const" : true
Yi Tseng1d842672017-11-28 16:06:52 -08002981 }
2982 },
2983 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002984 "name" : "FabricIngress.forwarding.mpls",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002985 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08002986 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002987 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002988 "line" : 71,
Yi Tseng1d842672017-11-28 16:06:52 -08002989 "column" : 10,
2990 "source_fragment" : "mpls"
2991 },
2992 "key" : [
2993 {
2994 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002995 "name" : "mpls_label",
2996 "target" : ["scalars", "fabric_metadata_t.mpls_label"],
Yi Tseng1d842672017-11-28 16:06:52 -08002997 "mask" : null
2998 }
2999 ],
3000 "match_type" : "exact",
3001 "type" : "simple",
3002 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003003 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003004 "support_timeout" : false,
3005 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003006 "action_ids" : [12, 1],
3007 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
3008 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003009 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003010 "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
3011 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003012 },
3013 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003014 "action_id" : 1,
Yi Tseng1d842672017-11-28 16:06:52 -08003015 "action_const" : true,
3016 "action_data" : [],
3017 "action_entry_const" : true
3018 }
3019 },
3020 {
Charles Chan384aea22018-08-23 22:08:02 -07003021 "name" : "FabricIngress.forwarding.routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003022 "id" : 7,
Yi Tseng1d842672017-11-28 16:06:52 -08003023 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003024 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003025 "line" : 101,
Yi Tseng1d842672017-11-28 16:06:52 -08003026 "column" : 10,
Charles Chan384aea22018-08-23 22:08:02 -07003027 "source_fragment" : "routing_v4"
Yi Tseng1d842672017-11-28 16:06:52 -08003028 },
3029 "key" : [
3030 {
3031 "match_type" : "lpm",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003032 "name" : "ipv4_dst",
Yi Tseng1d842672017-11-28 16:06:52 -08003033 "target" : ["ipv4", "dst_addr"],
3034 "mask" : null
3035 }
3036 ],
3037 "match_type" : "lpm",
3038 "type" : "simple",
3039 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003040 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003041 "support_timeout" : false,
3042 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003043 "action_ids" : [13, 14, 2],
3044 "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
3045 "base_default_next" : "FabricIngress.acl.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003046 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003047 "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
3048 "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
3049 "nop" : "FabricIngress.acl.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003050 },
3051 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003052 "action_id" : 2,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003053 "action_const" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003054 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003055 "action_entry_const" : true
Yi Tsengbe342052017-11-03 10:21:23 -07003056 }
3057 },
3058 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003059 "name" : "FabricIngress.acl.acl",
3060 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003061 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003062 "filename" : "include/control/acl.p4",
3063 "line" : 60,
Yi Tsengbe342052017-11-03 10:21:23 -07003064 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003065 "source_fragment" : "acl"
3066 },
3067 "key" : [
3068 {
3069 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003070 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003071 "target" : ["standard_metadata", "ingress_port"],
3072 "mask" : null
3073 },
3074 {
3075 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003076 "name" : "ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003077 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3078 "mask" : null
3079 },
3080 {
3081 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003082 "name" : "l4_sport",
3083 "target" : ["scalars", "fabric_metadata_t.l4_sport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003084 "mask" : null
3085 },
3086 {
3087 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003088 "name" : "l4_dport",
3089 "target" : ["scalars", "fabric_metadata_t.l4_dport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003090 "mask" : null
3091 },
3092 {
3093 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003094 "name" : "eth_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003095 "target" : ["ethernet", "dst_addr"],
3096 "mask" : null
3097 },
3098 {
3099 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003100 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003101 "target" : ["ethernet", "src_addr"],
3102 "mask" : null
3103 },
3104 {
3105 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003106 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003107 "target" : ["vlan_tag", "vlan_id"],
3108 "mask" : null
3109 },
3110 {
3111 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003112 "name" : "eth_type",
3113 "target" : ["scalars", "fabric_metadata_t.eth_type"],
Yi Tseng8235a1a2018-07-24 20:57:28 +08003114 "mask" : null
3115 },
3116 {
3117 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003118 "name" : "ipv4_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003119 "target" : ["ipv4", "src_addr"],
3120 "mask" : null
3121 },
3122 {
3123 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003124 "name" : "ipv4_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003125 "target" : ["ipv4", "dst_addr"],
3126 "mask" : null
3127 },
3128 {
3129 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003130 "name" : "icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003131 "target" : ["icmp", "icmp_type"],
3132 "mask" : null
3133 },
3134 {
3135 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003136 "name" : "icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003137 "target" : ["icmp", "icmp_code"],
3138 "mask" : null
3139 }
3140 ],
3141 "match_type" : "ternary",
3142 "type" : "simple",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003143 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003144 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003145 "support_timeout" : false,
3146 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003147 "action_ids" : [15, 16, 17, 18, 19],
3148 "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.clone_to_cpu", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
3149 "base_default_next" : "node_18",
Yi Tsengbe342052017-11-03 10:21:23 -07003150 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003151 "FabricIngress.acl.set_next_id_acl" : "node_18",
3152 "FabricIngress.acl.punt_to_cpu" : "node_18",
3153 "FabricIngress.acl.clone_to_cpu" : "node_18",
3154 "FabricIngress.acl.drop" : "node_18",
3155 "FabricIngress.acl.nop_acl" : "node_18"
Yi Tsengbe342052017-11-03 10:21:23 -07003156 },
3157 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003158 "action_id" : 19,
Yi Tsengbe342052017-11-03 10:21:23 -07003159 "action_const" : true,
3160 "action_data" : [],
3161 "action_entry_const" : true
3162 }
3163 },
3164 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003165 "name" : "FabricIngress.next.xconnect",
3166 "id" : 9,
3167 "source_info" : {
3168 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003169 "line" : 104,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003170 "column" : 10,
3171 "source_fragment" : "xconnect"
3172 },
3173 "key" : [
3174 {
3175 "match_type" : "exact",
3176 "name" : "ig_port",
3177 "target" : ["standard_metadata", "ingress_port"],
3178 "mask" : null
3179 },
3180 {
3181 "match_type" : "exact",
3182 "name" : "next_id",
3183 "target" : ["scalars", "fabric_metadata_t.next_id"],
3184 "mask" : null
3185 }
3186 ],
3187 "match_type" : "exact",
3188 "type" : "simple",
3189 "max_size" : 1024,
3190 "with_counters" : true,
3191 "support_timeout" : false,
3192 "direct_meters" : null,
3193 "action_ids" : [21, 22, 4],
3194 "actions" : ["FabricIngress.next.output_xconnect", "FabricIngress.next.set_next_id_xconnect", "nop"],
3195 "base_default_next" : "FabricIngress.next.hashed",
3196 "next_tables" : {
3197 "FabricIngress.next.output_xconnect" : "FabricIngress.next.hashed",
3198 "FabricIngress.next.set_next_id_xconnect" : "FabricIngress.next.hashed",
3199 "nop" : "FabricIngress.next.hashed"
3200 },
3201 "default_entry" : {
3202 "action_id" : 4,
3203 "action_const" : true,
3204 "action_data" : [],
3205 "action_entry_const" : true
3206 }
3207 },
3208 {
3209 "name" : "FabricIngress.next.hashed",
3210 "id" : 10,
3211 "source_info" : {
3212 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003213 "line" : 184,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003214 "column" : 10,
3215 "source_fragment" : "hashed"
3216 },
3217 "key" : [
3218 {
3219 "match_type" : "exact",
3220 "name" : "next_id",
3221 "target" : ["scalars", "fabric_metadata_t.next_id"],
3222 "mask" : null
3223 }
3224 ],
3225 "match_type" : "exact",
3226 "type" : "indirect_ws",
3227 "action_profile" : "FabricIngress.next.hashed_selector",
3228 "max_size" : 1024,
3229 "with_counters" : true,
3230 "support_timeout" : false,
3231 "direct_meters" : null,
3232 "action_ids" : [23, 24, 25, 5],
3233 "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "FabricIngress.next.mpls_routing_hashed", "nop"],
3234 "base_default_next" : "FabricIngress.next.multicast",
3235 "next_tables" : {
3236 "FabricIngress.next.output_hashed" : "FabricIngress.next.multicast",
3237 "FabricIngress.next.routing_hashed" : "FabricIngress.next.multicast",
3238 "FabricIngress.next.mpls_routing_hashed" : "FabricIngress.next.multicast",
3239 "nop" : "FabricIngress.next.multicast"
3240 }
3241 },
3242 {
3243 "name" : "FabricIngress.next.multicast",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003244 "id" : 11,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003245 "source_info" : {
3246 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003247 "line" : 218,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003248 "column" : 10,
3249 "source_fragment" : "multicast"
3250 },
3251 "key" : [
3252 {
3253 "match_type" : "exact",
3254 "name" : "next_id",
3255 "target" : ["scalars", "fabric_metadata_t.next_id"],
3256 "mask" : null
3257 }
3258 ],
3259 "match_type" : "exact",
3260 "type" : "simple",
3261 "max_size" : 1024,
3262 "with_counters" : true,
3263 "support_timeout" : false,
3264 "direct_meters" : null,
3265 "action_ids" : [26, 6],
3266 "actions" : ["FabricIngress.next.set_mcast_group_id", "nop"],
3267 "base_default_next" : "FabricIngress.next.next_vlan",
3268 "next_tables" : {
3269 "FabricIngress.next.set_mcast_group_id" : "FabricIngress.next.next_vlan",
3270 "nop" : "FabricIngress.next.next_vlan"
3271 },
3272 "default_entry" : {
3273 "action_id" : 6,
3274 "action_const" : true,
3275 "action_data" : [],
3276 "action_entry_const" : true
3277 }
3278 },
3279 {
3280 "name" : "FabricIngress.next.next_vlan",
3281 "id" : 12,
3282 "source_info" : {
3283 "filename" : "include/control/next.p4",
3284 "line" : 74,
3285 "column" : 10,
3286 "source_fragment" : "next_vlan"
3287 },
3288 "key" : [
3289 {
3290 "match_type" : "exact",
3291 "name" : "next_id",
3292 "target" : ["scalars", "fabric_metadata_t.next_id"],
3293 "mask" : null
3294 }
3295 ],
3296 "match_type" : "exact",
3297 "type" : "simple",
3298 "max_size" : 1024,
3299 "with_counters" : true,
3300 "support_timeout" : false,
3301 "direct_meters" : null,
3302 "action_ids" : [20, 3],
3303 "actions" : ["FabricIngress.next.set_vlan", "nop"],
3304 "base_default_next" : "node_23",
3305 "next_tables" : {
3306 "FabricIngress.next.set_vlan" : "node_23",
3307 "nop" : "node_23"
3308 },
3309 "default_entry" : {
3310 "action_id" : 3,
3311 "action_const" : true,
3312 "action_data" : [],
3313 "action_entry_const" : true
3314 }
3315 },
3316 {
3317 "name" : "tbl_act_2",
3318 "id" : 13,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003319 "key" : [],
3320 "match_type" : "exact",
3321 "type" : "simple",
3322 "max_size" : 1024,
3323 "with_counters" : false,
3324 "support_timeout" : false,
3325 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003326 "action_ids" : [30],
3327 "actions" : ["act_2"],
3328 "base_default_next" : "node_25",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003329 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003330 "act_2" : "node_25"
Carmelo Casconea5400af2018-07-17 22:11:54 +02003331 },
3332 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003333 "action_id" : 30,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003334 "action_const" : true,
3335 "action_data" : [],
3336 "action_entry_const" : true
3337 }
3338 },
3339 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003340 "name" : "tbl_act_3",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003341 "id" : 14,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003342 "key" : [],
3343 "match_type" : "exact",
3344 "type" : "simple",
3345 "max_size" : 1024,
3346 "with_counters" : false,
3347 "support_timeout" : false,
3348 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003349 "action_ids" : [31],
3350 "actions" : ["act_3"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003351 "base_default_next" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003352 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003353 "act_3" : null
Yi Tseng27b9bc02018-04-12 14:52:40 +08003354 },
3355 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003356 "action_id" : 31,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003357 "action_const" : true,
3358 "action_data" : [],
3359 "action_entry_const" : true
3360 }
Yi Tsengbe342052017-11-03 10:21:23 -07003361 }
3362 ],
3363 "action_profiles" : [
3364 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003365 "name" : "FabricIngress.next.hashed_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003366 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003367 "source_info" : {
3368 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003369 "line" : 165,
3370 "column" : 57,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003371 "source_fragment" : "hashed_selector"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003372 },
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003373 "max_size" : 1024,
Yi Tsengbe342052017-11-03 10:21:23 -07003374 "selector" : {
3375 "algo" : "crc16",
3376 "input" : [
3377 {
3378 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003379 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003380 },
3381 {
3382 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003383 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003384 },
3385 {
3386 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003387 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003388 },
3389 {
3390 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003391 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003392 },
3393 {
3394 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003395 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003396 }
3397 ]
3398 }
3399 }
3400 ],
3401 "conditionals" : [
3402 {
3403 "name" : "node_2",
3404 "id" : 0,
3405 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003406 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003407 "line" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07003408 "column" : 12,
3409 "source_fragment" : "hdr.packet_out.isValid()"
3410 },
3411 "expression" : {
3412 "type" : "expression",
3413 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003414 "op" : "d2b",
3415 "left" : null,
3416 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003417 "type" : "field",
3418 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003419 }
3420 }
3421 },
3422 "true_next" : "tbl_act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003423 "false_next" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07003424 },
3425 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003426 "name" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07003427 "id" : 1,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003428 "source_info" : {
3429 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003430 "line" : 104,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003431 "column" : 12,
3432 "source_fragment" : "hdr.vlan_tag.isValid()"
3433 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003434 "expression" : {
3435 "type" : "expression",
3436 "value" : {
3437 "op" : "d2b",
3438 "left" : null,
3439 "right" : {
3440 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003441 "value" : ["vlan_tag", "$valid$"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003442 }
3443 }
3444 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003445 "true_next" : "tbl_act_0",
3446 "false_next" : "node_6"
3447 },
3448 {
3449 "name" : "node_6",
3450 "id" : 2,
3451 "source_info" : {
3452 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003453 "line" : 110,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003454 "column" : 12,
3455 "source_fragment" : "!hdr.mpls.isValid()"
3456 },
3457 "expression" : {
3458 "type" : "expression",
3459 "value" : {
3460 "op" : "not",
3461 "left" : null,
3462 "right" : {
3463 "type" : "expression",
3464 "value" : {
3465 "op" : "d2b",
3466 "left" : null,
3467 "right" : {
3468 "type" : "field",
3469 "value" : ["mpls", "$valid$"]
3470 }
3471 }
3472 }
3473 }
3474 },
3475 "true_next" : "tbl_act_1",
3476 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003477 },
3478 {
3479 "name" : "node_10",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003480 "id" : 3,
3481 "source_info" : {
3482 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003483 "line" : 67,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003484 "column" : 12,
3485 "source_fragment" : "fabric_metadata.skip_forwarding == false"
3486 },
3487 "expression" : {
3488 "type" : "expression",
3489 "value" : {
3490 "op" : "==",
3491 "left" : {
3492 "type" : "expression",
3493 "value" : {
3494 "op" : "d2b",
3495 "left" : null,
3496 "right" : {
3497 "type" : "field",
3498 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
3499 }
3500 }
3501 },
3502 "right" : {
3503 "type" : "bool",
3504 "value" : false
3505 }
3506 }
3507 },
3508 "true_next" : "node_11",
3509 "false_next" : "FabricIngress.acl.acl"
3510 },
3511 {
3512 "name" : "node_11",
3513 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07003514 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003515 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003516 "line" : 141,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003517 "column" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003518 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3519 },
3520 "expression" : {
3521 "type" : "expression",
3522 "value" : {
3523 "op" : "==",
3524 "left" : {
3525 "type" : "field",
3526 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3527 },
3528 "right" : {
3529 "type" : "hexstr",
3530 "value" : "0x00"
3531 }
3532 }
3533 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003534 "true_next" : "FabricIngress.forwarding.bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003535 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003536 },
3537 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003538 "name" : "node_13",
3539 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003540 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003541 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003542 "line" : 142,
Yi Tsengbe342052017-11-03 10:21:23 -07003543 "column" : 17,
3544 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3545 },
3546 "expression" : {
3547 "type" : "expression",
3548 "value" : {
3549 "op" : "==",
3550 "left" : {
3551 "type" : "field",
3552 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3553 },
3554 "right" : {
3555 "type" : "hexstr",
3556 "value" : "0x01"
3557 }
3558 }
3559 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003560 "true_next" : "FabricIngress.forwarding.mpls",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003561 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07003562 },
3563 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003564 "name" : "node_15",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003565 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003566 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003567 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003568 "line" : 143,
Yi Tsengbe342052017-11-03 10:21:23 -07003569 "column" : 17,
3570 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3571 },
3572 "expression" : {
3573 "type" : "expression",
3574 "value" : {
3575 "op" : "==",
3576 "left" : {
3577 "type" : "field",
3578 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3579 },
3580 "right" : {
3581 "type" : "hexstr",
3582 "value" : "0x02"
3583 }
3584 }
3585 },
Charles Chan384aea22018-08-23 22:08:02 -07003586 "true_next" : "FabricIngress.forwarding.routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003587 "false_next" : "FabricIngress.acl.acl"
3588 },
3589 {
3590 "name" : "node_18",
3591 "id" : 7,
3592 "source_info" : {
3593 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003594 "line" : 71,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003595 "column" : 12,
3596 "source_fragment" : "fabric_metadata.skip_next == false"
3597 },
3598 "expression" : {
3599 "type" : "expression",
3600 "value" : {
3601 "op" : "==",
3602 "left" : {
3603 "type" : "expression",
3604 "value" : {
3605 "op" : "d2b",
3606 "left" : null,
3607 "right" : {
3608 "type" : "field",
3609 "value" : ["scalars", "fabric_metadata_t.skip_next"]
3610 }
3611 }
3612 },
3613 "right" : {
3614 "type" : "bool",
3615 "value" : false
3616 }
3617 }
3618 },
3619 "false_next" : null,
3620 "true_next" : "FabricIngress.next.xconnect"
Yi Tseng27b9bc02018-04-12 14:52:40 +08003621 },
3622 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003623 "name" : "node_23",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003624 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003625 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003626 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003627 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07003628 "column" : 12,
3629 "source_fragment" : "standard_metadata.egress_spec < 511"
3630 },
3631 "expression" : {
3632 "type" : "expression",
3633 "value" : {
3634 "op" : "<",
3635 "left" : {
3636 "type" : "field",
3637 "value" : ["standard_metadata", "egress_spec"]
3638 },
3639 "right" : {
3640 "type" : "hexstr",
3641 "value" : "0x01ff"
3642 }
3643 }
3644 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003645 "true_next" : "tbl_act_2",
3646 "false_next" : "node_25"
Yi Tsengbe342052017-11-03 10:21:23 -07003647 },
3648 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003649 "name" : "node_25",
3650 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003651 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003652 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003653 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07003654 "column" : 12,
3655 "source_fragment" : "standard_metadata.ingress_port < 511"
3656 },
3657 "expression" : {
3658 "type" : "expression",
3659 "value" : {
3660 "op" : "<",
3661 "left" : {
3662 "type" : "field",
3663 "value" : ["standard_metadata", "ingress_port"]
3664 },
3665 "right" : {
3666 "type" : "hexstr",
3667 "value" : "0x01ff"
3668 }
3669 }
3670 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003671 "false_next" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003672 "true_next" : "tbl_act_3"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003673 }
3674 ]
3675 },
3676 {
3677 "name" : "egress",
3678 "id" : 1,
3679 "source_info" : {
3680 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003681 "line" : 85,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003682 "column" : 8,
3683 "source_fragment" : "FabricEgress"
3684 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003685 "init_table" : "node_29",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003686 "tables" : [
3687 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003688 "name" : "tbl_act_4",
3689 "id" : 15,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003690 "key" : [],
3691 "match_type" : "exact",
3692 "type" : "simple",
3693 "max_size" : 1024,
3694 "with_counters" : false,
3695 "support_timeout" : false,
3696 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003697 "action_ids" : [37],
3698 "actions" : ["act_4"],
3699 "base_default_next" : "tbl_act_5",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003700 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003701 "act_4" : "tbl_act_5"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003702 },
3703 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003704 "action_id" : 37,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003705 "action_const" : true,
3706 "action_data" : [],
3707 "action_entry_const" : true
3708 }
3709 },
3710 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003711 "name" : "tbl_act_5",
3712 "id" : 16,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003713 "key" : [],
3714 "match_type" : "exact",
3715 "type" : "simple",
3716 "max_size" : 1024,
3717 "with_counters" : false,
3718 "support_timeout" : false,
3719 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003720 "action_ids" : [38],
3721 "actions" : ["act_5"],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003722 "base_default_next" : null,
3723 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003724 "act_5" : null
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003725 },
3726 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003727 "action_id" : 38,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003728 "action_const" : true,
3729 "action_data" : [],
3730 "action_entry_const" : true
3731 }
3732 },
3733 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003734 "name" : "tbl_act_6",
3735 "id" : 17,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003736 "key" : [],
3737 "match_type" : "exact",
3738 "type" : "simple",
3739 "max_size" : 1024,
3740 "with_counters" : false,
3741 "support_timeout" : false,
3742 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003743 "action_ids" : [39],
3744 "actions" : ["act_6"],
3745 "base_default_next" : "node_36",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003746 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003747 "act_6" : "node_36"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003748 },
3749 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003750 "action_id" : 39,
3751 "action_const" : true,
3752 "action_data" : [],
3753 "action_entry_const" : true
3754 }
3755 },
3756 {
3757 "name" : "tbl_egress_next_pop_mpls_if_present",
3758 "id" : 18,
3759 "key" : [],
3760 "match_type" : "exact",
3761 "type" : "simple",
3762 "max_size" : 1024,
3763 "with_counters" : false,
3764 "support_timeout" : false,
3765 "direct_meters" : null,
3766 "action_ids" : [33],
3767 "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
3768 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3769 "next_tables" : {
3770 "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
3771 },
3772 "default_entry" : {
3773 "action_id" : 33,
3774 "action_const" : true,
3775 "action_data" : [],
3776 "action_entry_const" : true
3777 }
3778 },
3779 {
3780 "name" : "tbl_egress_next_set_mpls",
3781 "id" : 19,
3782 "key" : [],
3783 "match_type" : "exact",
3784 "type" : "simple",
3785 "max_size" : 1024,
3786 "with_counters" : false,
3787 "support_timeout" : false,
3788 "direct_meters" : null,
3789 "action_ids" : [34],
3790 "actions" : ["FabricEgress.egress_next.set_mpls"],
3791 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3792 "next_tables" : {
3793 "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
3794 },
3795 "default_entry" : {
3796 "action_id" : 34,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003797 "action_const" : true,
3798 "action_data" : [],
3799 "action_entry_const" : true
3800 }
3801 },
3802 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003803 "name" : "FabricEgress.egress_next.egress_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003804 "id" : 20,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003805 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003806 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003807 "line" : 291,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003808 "column" : 10,
3809 "source_fragment" : "egress_vlan"
3810 },
3811 "key" : [
3812 {
3813 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003814 "name" : "vlan_id",
3815 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003816 "mask" : null
3817 },
3818 {
3819 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003820 "name" : "eg_port",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003821 "target" : ["standard_metadata", "egress_port"],
3822 "mask" : null
3823 }
3824 ],
3825 "match_type" : "exact",
3826 "type" : "simple",
3827 "max_size" : 1024,
Yi Tseng47eac892018-07-11 02:17:04 +08003828 "with_counters" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003829 "support_timeout" : false,
3830 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003831 "action_ids" : [36, 32],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003832 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003833 "base_default_next" : null,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003834 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003835 "__HIT__" : "tbl_act_7",
3836 "__MISS__" : "tbl_act_8"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003837 },
3838 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003839 "action_id" : 32,
3840 "action_const" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003841 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003842 "action_entry_const" : true
3843 }
3844 },
3845 {
3846 "name" : "tbl_act_7",
3847 "id" : 21,
3848 "key" : [],
3849 "match_type" : "exact",
3850 "type" : "simple",
3851 "max_size" : 1024,
3852 "with_counters" : false,
3853 "support_timeout" : false,
3854 "direct_meters" : null,
3855 "action_ids" : [40],
3856 "actions" : ["act_7"],
3857 "base_default_next" : "node_43",
3858 "next_tables" : {
3859 "act_7" : "node_43"
3860 },
3861 "default_entry" : {
3862 "action_id" : 40,
3863 "action_const" : true,
3864 "action_data" : [],
3865 "action_entry_const" : true
3866 }
3867 },
3868 {
3869 "name" : "tbl_act_8",
3870 "id" : 22,
3871 "key" : [],
3872 "match_type" : "exact",
3873 "type" : "simple",
3874 "max_size" : 1024,
3875 "with_counters" : false,
3876 "support_timeout" : false,
3877 "direct_meters" : null,
3878 "action_ids" : [41],
3879 "actions" : ["act_8"],
3880 "base_default_next" : "node_43",
3881 "next_tables" : {
3882 "act_8" : "node_43"
3883 },
3884 "default_entry" : {
3885 "action_id" : 41,
3886 "action_const" : true,
3887 "action_data" : [],
3888 "action_entry_const" : true
3889 }
3890 },
3891 {
3892 "name" : "tbl_egress_next_push_vlan",
3893 "id" : 23,
3894 "key" : [],
3895 "match_type" : "exact",
3896 "type" : "simple",
3897 "max_size" : 1024,
3898 "with_counters" : false,
3899 "support_timeout" : false,
3900 "direct_meters" : null,
3901 "action_ids" : [35],
3902 "actions" : ["FabricEgress.egress_next.push_vlan"],
3903 "base_default_next" : "node_46",
3904 "next_tables" : {
3905 "FabricEgress.egress_next.push_vlan" : "node_46"
3906 },
3907 "default_entry" : {
3908 "action_id" : 35,
3909 "action_const" : true,
3910 "action_data" : [],
3911 "action_entry_const" : true
3912 }
3913 },
3914 {
3915 "name" : "tbl_act_9",
3916 "id" : 24,
3917 "key" : [],
3918 "match_type" : "exact",
3919 "type" : "simple",
3920 "max_size" : 1024,
3921 "with_counters" : false,
3922 "support_timeout" : false,
3923 "direct_meters" : null,
3924 "action_ids" : [43],
3925 "actions" : ["act_10"],
3926 "base_default_next" : "node_48",
3927 "next_tables" : {
3928 "act_10" : "node_48"
3929 },
3930 "default_entry" : {
3931 "action_id" : 43,
3932 "action_const" : true,
3933 "action_data" : [],
3934 "action_entry_const" : true
3935 }
3936 },
3937 {
3938 "name" : "tbl_act_10",
3939 "id" : 25,
3940 "key" : [],
3941 "match_type" : "exact",
3942 "type" : "simple",
3943 "max_size" : 1024,
3944 "with_counters" : false,
3945 "support_timeout" : false,
3946 "direct_meters" : null,
3947 "action_ids" : [42],
3948 "actions" : ["act_9"],
3949 "base_default_next" : null,
3950 "next_tables" : {
3951 "act_9" : null
3952 },
3953 "default_entry" : {
3954 "action_id" : 42,
3955 "action_const" : true,
3956 "action_data" : [],
3957 "action_entry_const" : true
3958 }
3959 },
3960 {
3961 "name" : "tbl_act_11",
3962 "id" : 26,
3963 "key" : [],
3964 "match_type" : "exact",
3965 "type" : "simple",
3966 "max_size" : 1024,
3967 "with_counters" : false,
3968 "support_timeout" : false,
3969 "direct_meters" : null,
3970 "action_ids" : [45],
3971 "actions" : ["act_12"],
3972 "base_default_next" : "node_52",
3973 "next_tables" : {
3974 "act_12" : "node_52"
3975 },
3976 "default_entry" : {
3977 "action_id" : 45,
3978 "action_const" : true,
3979 "action_data" : [],
3980 "action_entry_const" : true
3981 }
3982 },
3983 {
3984 "name" : "tbl_act_12",
3985 "id" : 27,
3986 "key" : [],
3987 "match_type" : "exact",
3988 "type" : "simple",
3989 "max_size" : 1024,
3990 "with_counters" : false,
3991 "support_timeout" : false,
3992 "direct_meters" : null,
3993 "action_ids" : [44],
3994 "actions" : ["act_11"],
3995 "base_default_next" : null,
3996 "next_tables" : {
3997 "act_11" : null
3998 },
3999 "default_entry" : {
4000 "action_id" : 44,
4001 "action_const" : true,
4002 "action_data" : [],
4003 "action_entry_const" : true
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004004 }
Yi Tseng3a5731e2018-01-22 11:38:58 -08004005 }
4006 ],
4007 "action_profiles" : [],
4008 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004009 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004010 "name" : "node_29",
4011 "id" : 10,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004012 "source_info" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004013 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004014 "line" : 39,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004015 "column" : 12,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004016 "source_fragment" : "fabric_metadata.is_controller_packet_out == true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004017 },
4018 "expression" : {
4019 "type" : "expression",
4020 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004021 "op" : "==",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004022 "left" : {
4023 "type" : "expression",
4024 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004025 "op" : "d2b",
4026 "left" : null,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004027 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004028 "type" : "field",
4029 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02004030 }
4031 }
4032 },
4033 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004034 "type" : "bool",
4035 "value" : true
Carmelo Casconea5400af2018-07-17 22:11:54 +02004036 }
4037 }
4038 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004039 "true_next" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004040 "false_next" : "node_30"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004041 },
4042 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004043 "name" : "node_30",
4044 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07004045 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004046 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004047 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07004048 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08004049 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07004050 },
4051 "expression" : {
4052 "type" : "expression",
4053 "value" : {
4054 "op" : "==",
4055 "left" : {
4056 "type" : "field",
4057 "value" : ["standard_metadata", "egress_port"]
4058 },
4059 "right" : {
4060 "type" : "hexstr",
4061 "value" : "0x00ff"
4062 }
4063 }
4064 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004065 "true_next" : "node_31",
4066 "false_next" : "node_34"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004067 },
4068 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004069 "name" : "node_31",
4070 "id" : 12,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004071 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004072 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004073 "line" : 44,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004074 "column" : 16,
4075 "source_fragment" : "fabric_metadata.is_multicast == true && ..."
4076 },
4077 "expression" : {
4078 "type" : "expression",
4079 "value" : {
4080 "op" : "and",
4081 "left" : {
4082 "type" : "expression",
4083 "value" : {
4084 "op" : "==",
4085 "left" : {
4086 "type" : "expression",
4087 "value" : {
4088 "op" : "d2b",
4089 "left" : null,
4090 "right" : {
4091 "type" : "field",
4092 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4093 }
4094 }
4095 },
4096 "right" : {
4097 "type" : "bool",
4098 "value" : true
4099 }
4100 }
4101 },
4102 "right" : {
4103 "type" : "expression",
4104 "value" : {
4105 "op" : "==",
4106 "left" : {
4107 "type" : "expression",
4108 "value" : {
4109 "op" : "d2b",
4110 "left" : null,
4111 "right" : {
4112 "type" : "field",
4113 "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
4114 }
4115 }
4116 },
4117 "right" : {
4118 "type" : "bool",
4119 "value" : false
4120 }
4121 }
4122 }
4123 }
4124 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004125 "true_next" : "tbl_act_4",
4126 "false_next" : "tbl_act_5"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004127 },
4128 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004129 "name" : "node_34",
4130 "id" : 13,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004131 "source_info" : {
4132 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004133 "line" : 306,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004134 "column" : 12,
4135 "source_fragment" : "fabric_metadata.is_multicast == true ..."
4136 },
4137 "expression" : {
4138 "type" : "expression",
4139 "value" : {
4140 "op" : "and",
4141 "left" : {
4142 "type" : "expression",
4143 "value" : {
4144 "op" : "==",
4145 "left" : {
4146 "type" : "expression",
4147 "value" : {
4148 "op" : "d2b",
4149 "left" : null,
4150 "right" : {
4151 "type" : "field",
4152 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4153 }
4154 }
4155 },
4156 "right" : {
4157 "type" : "bool",
4158 "value" : true
4159 }
4160 }
4161 },
4162 "right" : {
4163 "type" : "expression",
4164 "value" : {
4165 "op" : "==",
4166 "left" : {
4167 "type" : "field",
4168 "value" : ["standard_metadata", "ingress_port"]
4169 },
4170 "right" : {
4171 "type" : "field",
4172 "value" : ["standard_metadata", "egress_port"]
4173 }
4174 }
4175 }
4176 }
4177 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004178 "true_next" : "tbl_act_6",
4179 "false_next" : "node_36"
4180 },
4181 {
4182 "name" : "node_36",
4183 "id" : 14,
4184 "source_info" : {
4185 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004186 "line" : 311,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004187 "column" : 12,
4188 "source_fragment" : "fabric_metadata.mpls_label == 0"
4189 },
4190 "expression" : {
4191 "type" : "expression",
4192 "value" : {
4193 "op" : "==",
4194 "left" : {
4195 "type" : "field",
4196 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
4197 },
4198 "right" : {
4199 "type" : "hexstr",
4200 "value" : "0x000000"
4201 }
4202 }
4203 },
4204 "true_next" : "node_37",
4205 "false_next" : "tbl_egress_next_set_mpls"
4206 },
4207 {
4208 "name" : "node_37",
4209 "id" : 15,
4210 "source_info" : {
4211 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004212 "line" : 312,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004213 "column" : 16,
4214 "source_fragment" : "hdr.mpls.isValid()"
4215 },
4216 "expression" : {
4217 "type" : "expression",
4218 "value" : {
4219 "op" : "d2b",
4220 "left" : null,
4221 "right" : {
4222 "type" : "field",
4223 "value" : ["mpls", "$valid$"]
4224 }
4225 }
4226 },
4227 "true_next" : "tbl_egress_next_pop_mpls_if_present",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004228 "false_next" : "FabricEgress.egress_next.egress_vlan"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004229 },
4230 {
4231 "name" : "node_43",
4232 "id" : 16,
4233 "source_info" : {
4234 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004235 "line" : 317,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004236 "column" : 12,
4237 "source_fragment" : "!egress_vlan.apply().hit"
4238 },
4239 "expression" : {
4240 "type" : "expression",
4241 "value" : {
4242 "op" : "not",
4243 "left" : null,
4244 "right" : {
4245 "type" : "expression",
4246 "value" : {
4247 "op" : "d2b",
4248 "left" : null,
4249 "right" : {
4250 "type" : "field",
4251 "value" : ["scalars", "egress_next_tmp"]
4252 }
4253 }
4254 }
4255 }
4256 },
4257 "true_next" : "node_44",
4258 "false_next" : "node_46"
4259 },
4260 {
4261 "name" : "node_44",
4262 "id" : 17,
4263 "source_info" : {
4264 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004265 "line" : 319,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004266 "column" : 16,
4267 "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
4268 },
4269 "expression" : {
4270 "type" : "expression",
4271 "value" : {
4272 "op" : "!=",
4273 "left" : {
4274 "type" : "field",
4275 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
4276 },
4277 "right" : {
4278 "type" : "hexstr",
4279 "value" : "0x0ffe"
4280 }
4281 }
4282 },
4283 "true_next" : "tbl_egress_next_push_vlan",
4284 "false_next" : "node_46"
4285 },
4286 {
4287 "name" : "node_46",
4288 "id" : 18,
4289 "source_info" : {
4290 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004291 "line" : 325,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004292 "column" : 12,
4293 "source_fragment" : "hdr.mpls.isValid()"
4294 },
4295 "expression" : {
4296 "type" : "expression",
4297 "value" : {
4298 "op" : "d2b",
4299 "left" : null,
4300 "right" : {
4301 "type" : "field",
4302 "value" : ["mpls", "$valid$"]
4303 }
4304 }
4305 },
4306 "true_next" : "tbl_act_9",
4307 "false_next" : "node_50"
4308 },
4309 {
4310 "name" : "node_48",
4311 "id" : 19,
4312 "source_info" : {
4313 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004314 "line" : 327,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004315 "column" : 16,
4316 "source_fragment" : "hdr.mpls.ttl == 0"
4317 },
4318 "expression" : {
4319 "type" : "expression",
4320 "value" : {
4321 "op" : "==",
4322 "left" : {
4323 "type" : "field",
4324 "value" : ["mpls", "ttl"]
4325 },
4326 "right" : {
4327 "type" : "hexstr",
4328 "value" : "0x00"
4329 }
4330 }
4331 },
4332 "false_next" : null,
4333 "true_next" : "tbl_act_10"
4334 },
4335 {
4336 "name" : "node_50",
4337 "id" : 20,
4338 "source_info" : {
4339 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004340 "line" : 329,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004341 "column" : 15,
4342 "source_fragment" : "hdr.ipv4.isValid()"
4343 },
4344 "expression" : {
4345 "type" : "expression",
4346 "value" : {
4347 "op" : "d2b",
4348 "left" : null,
4349 "right" : {
4350 "type" : "field",
4351 "value" : ["ipv4", "$valid$"]
4352 }
4353 }
4354 },
4355 "false_next" : null,
4356 "true_next" : "tbl_act_11"
4357 },
4358 {
4359 "name" : "node_52",
4360 "id" : 21,
4361 "source_info" : {
4362 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004363 "line" : 331,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004364 "column" : 20,
4365 "source_fragment" : "hdr.ipv4.ttl == 0"
4366 },
4367 "expression" : {
4368 "type" : "expression",
4369 "value" : {
4370 "op" : "==",
4371 "left" : {
4372 "type" : "field",
4373 "value" : ["ipv4", "ttl"]
4374 },
4375 "right" : {
4376 "type" : "hexstr",
4377 "value" : "0x00"
4378 }
4379 }
4380 },
4381 "false_next" : null,
4382 "true_next" : "tbl_act_12"
Yi Tsengbe342052017-11-03 10:21:23 -07004383 }
4384 ]
4385 }
4386 ],
4387 "checksums" : [
4388 {
4389 "name" : "cksum",
4390 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004391 "source_info" : {
4392 "filename" : "include/checksum.p4",
4393 "line" : 28,
4394 "column" : 8,
4395 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
4396 },
Yi Tsengbe342052017-11-03 10:21:23 -07004397 "target" : ["ipv4", "hdr_checksum"],
4398 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004399 "calculation" : "calc",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004400 "verify" : false,
4401 "update" : true,
Yi Tsengbd46d052018-01-22 17:18:16 -08004402 "if_cond" : {
4403 "type" : "expression",
4404 "value" : {
4405 "op" : "d2b",
4406 "left" : null,
4407 "right" : {
4408 "type" : "field",
4409 "value" : ["ipv4", "$valid$"]
4410 }
4411 }
4412 }
Yi Tsengbe342052017-11-03 10:21:23 -07004413 },
4414 {
4415 "name" : "cksum_0",
4416 "id" : 1,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004417 "source_info" : {
4418 "filename" : "include/checksum.p4",
4419 "line" : 57,
4420 "column" : 8,
4421 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
4422 },
Yi Tsengbe342052017-11-03 10:21:23 -07004423 "target" : ["ipv4", "hdr_checksum"],
4424 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004425 "calculation" : "calc_0",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004426 "verify" : true,
4427 "update" : false,
Yi Tsengbd46d052018-01-22 17:18:16 -08004428 "if_cond" : {
4429 "type" : "expression",
4430 "value" : {
4431 "op" : "d2b",
4432 "left" : null,
4433 "right" : {
4434 "type" : "field",
4435 "value" : ["ipv4", "$valid$"]
4436 }
4437 }
4438 }
Yi Tsengbe342052017-11-03 10:21:23 -07004439 }
4440 ],
4441 "force_arith" : [],
4442 "extern_instances" : [],
4443 "field_aliases" : [
4444 [
4445 "queueing_metadata.enq_timestamp",
4446 ["standard_metadata", "enq_timestamp"]
4447 ],
4448 [
4449 "queueing_metadata.enq_qdepth",
4450 ["standard_metadata", "enq_qdepth"]
4451 ],
4452 [
4453 "queueing_metadata.deq_timedelta",
4454 ["standard_metadata", "deq_timedelta"]
4455 ],
4456 [
4457 "queueing_metadata.deq_qdepth",
4458 ["standard_metadata", "deq_qdepth"]
4459 ],
4460 [
4461 "intrinsic_metadata.ingress_global_timestamp",
4462 ["standard_metadata", "ingress_global_timestamp"]
4463 ],
4464 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08004465 "intrinsic_metadata.egress_global_timestamp",
4466 ["standard_metadata", "egress_global_timestamp"]
4467 ],
4468 [
Yi Tsengbe342052017-11-03 10:21:23 -07004469 "intrinsic_metadata.lf_field_list",
4470 ["standard_metadata", "lf_field_list"]
4471 ],
4472 [
4473 "intrinsic_metadata.mcast_grp",
4474 ["standard_metadata", "mcast_grp"]
4475 ],
4476 [
4477 "intrinsic_metadata.resubmit_flag",
4478 ["standard_metadata", "resubmit_flag"]
4479 ],
4480 [
4481 "intrinsic_metadata.egress_rid",
4482 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08004483 ],
4484 [
4485 "intrinsic_metadata.recirculate_flag",
4486 ["standard_metadata", "recirculate_flag"]
Yi Tsengbe342052017-11-03 10:21:23 -07004487 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02004488 ],
4489 "program" : "fabric.p4",
4490 "__meta__" : {
4491 "version" : [2, 18],
4492 "compiler" : "https://github.com/p4lang/p4c"
4493 }
Carmelo Cascone25243d62019-02-21 15:37:31 -08004494}