blob: 5c6e645c87ed23ca6ec59e0557d5d8bba90a2e1d [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tseng1d842672017-11-28 16:06:52 -08002 "program" : "p4c-out/bmv2/fabric.p4i",
Yi Tsengbe342052017-11-03 10:21:23 -07003 "__meta__" : {
4 "version" : [2, 7],
5 "compiler" : "https://github.com/p4lang/p4c"
6 },
7 "header_types" : [
8 {
9 "name" : "scalars_0",
10 "id" : 0,
11 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080012 ["tmp", 4, false],
13 ["tmp_0", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -070014 ["tmp_1", 32, false],
Yi Tseng1d842672017-11-28 16:06:52 -080015 ["next_tmp_0", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070016 ["fabric_metadata_t.fwd_type", 3, false],
17 ["fabric_metadata_t.next_id", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -070018 ["fabric_metadata_t.pop_vlan_at_egress", 1, false],
19 ["fabric_metadata_t.ip_proto", 8, false],
20 ["fabric_metadata_t.l4_src_port", 16, false],
Yi Tsengf55eaa82017-11-29 15:51:28 -080021 ["fabric_metadata_t.l4_dst_port", 16, false],
Yi Tseng1d842672017-11-28 16:06:52 -080022 ["fabric_metadata_t.original_ether_type", 16, false],
Yi Tsengc6844f52017-12-19 11:58:25 -080023 ["_padding_0", 7, false]
24 ]
25 },
26 {
27 "name" : "ethernet_t",
28 "id" : 1,
29 "fields" : [
30 ["dst_addr", 48, false],
31 ["src_addr", 48, false],
32 ["ether_type", 16, false]
33 ]
34 },
35 {
36 "name" : "vlan_tag_t",
37 "id" : 2,
38 "fields" : [
39 ["pri", 3, false],
40 ["cfi", 1, false],
41 ["vlan_id", 12, false],
42 ["ether_type", 16, false]
43 ]
44 },
45 {
46 "name" : "mpls_t",
47 "id" : 3,
48 "fields" : [
49 ["label", 20, false],
50 ["tc", 3, false],
51 ["bos", 1, false],
52 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070053 ]
54 },
55 {
56 "name" : "ipv4_t",
Yi Tsengc6844f52017-12-19 11:58:25 -080057 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -070058 "fields" : [
59 ["version", 4, false],
60 ["ihl", 4, false],
61 ["diffserv", 8, false],
62 ["total_len", 16, false],
63 ["identification", 16, false],
64 ["flags", 3, false],
65 ["frag_offset", 13, false],
66 ["ttl", 8, false],
67 ["protocol", 8, false],
68 ["hdr_checksum", 16, false],
69 ["src_addr", 32, false],
70 ["dst_addr", 32, false]
71 ]
72 },
73 {
Yi Tsengbe342052017-11-03 10:21:23 -070074 "name" : "ipv6_t",
75 "id" : 5,
76 "fields" : [
77 ["version", 4, false],
78 ["traffic_class", 8, false],
79 ["flow_label", 20, false],
80 ["payload_len", 16, false],
81 ["next_hdr", 8, false],
82 ["hop_limit", 8, false],
83 ["src_addr", 128, false],
84 ["dst_addr", 128, false]
85 ]
86 },
87 {
88 "name" : "arp_t",
89 "id" : 6,
90 "fields" : [
91 ["hw_type", 16, false],
92 ["proto_type", 16, false],
93 ["hw_addr_len", 8, false],
94 ["proto_addr_len", 8, false],
95 ["opcode", 16, false]
96 ]
97 },
98 {
99 "name" : "tcp_t",
100 "id" : 7,
101 "fields" : [
102 ["src_port", 16, false],
103 ["dst_port", 16, false],
104 ["seq_no", 32, false],
105 ["ack_no", 32, false],
106 ["data_offset", 4, false],
107 ["res", 3, false],
108 ["ecn", 3, false],
109 ["ctrl", 6, false],
110 ["window", 16, false],
111 ["checksum", 16, false],
112 ["urgent_ptr", 16, false]
113 ]
114 },
115 {
116 "name" : "udp_t",
117 "id" : 8,
118 "fields" : [
119 ["src_port", 16, false],
120 ["dst_port", 16, false],
121 ["len", 16, false],
122 ["checksum", 16, false]
123 ]
124 },
125 {
126 "name" : "icmp_t",
127 "id" : 9,
128 "fields" : [
129 ["icmp_type", 8, false],
130 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800131 ["checksum", 16, false],
132 ["identifier", 16, false],
133 ["sequence_number", 16, false],
134 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700135 ]
136 },
137 {
138 "name" : "packet_out_header_t",
139 "id" : 10,
140 "fields" : [
141 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800142 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700143 ]
144 },
145 {
146 "name" : "packet_in_header_t",
147 "id" : 11,
148 "fields" : [
149 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800150 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700151 ]
152 },
153 {
154 "name" : "standard_metadata",
155 "id" : 12,
156 "fields" : [
157 ["ingress_port", 9, false],
158 ["egress_spec", 9, false],
159 ["egress_port", 9, false],
160 ["clone_spec", 32, false],
161 ["instance_type", 32, false],
162 ["drop", 1, false],
163 ["recirculate_port", 16, false],
164 ["packet_length", 32, false],
165 ["enq_timestamp", 32, false],
166 ["enq_qdepth", 19, false],
167 ["deq_timedelta", 32, false],
168 ["deq_qdepth", 19, false],
169 ["ingress_global_timestamp", 48, false],
170 ["lf_field_list", 32, false],
171 ["mcast_grp", 16, false],
172 ["resubmit_flag", 1, false],
173 ["egress_rid", 16, false],
174 ["checksum_error", 1, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800175 ["_padding", 4, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700176 ]
177 }
178 ],
179 "headers" : [
180 {
Yi Tsengbe342052017-11-03 10:21:23 -0700181 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800182 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700183 "header_type" : "scalars_0",
184 "metadata" : true,
185 "pi_omit" : true
186 },
187 {
188 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800189 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700190 "header_type" : "standard_metadata",
191 "metadata" : true,
192 "pi_omit" : true
193 },
194 {
195 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800196 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700197 "header_type" : "ethernet_t",
198 "metadata" : false,
199 "pi_omit" : true
200 },
201 {
202 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800203 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700204 "header_type" : "vlan_tag_t",
205 "metadata" : false,
206 "pi_omit" : true
207 },
208 {
209 "name" : "inner_vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800210 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700211 "header_type" : "vlan_tag_t",
212 "metadata" : false,
213 "pi_omit" : true
214 },
215 {
216 "name" : "mpls",
Yi Tsengc6844f52017-12-19 11:58:25 -0800217 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700218 "header_type" : "mpls_t",
219 "metadata" : false,
220 "pi_omit" : true
221 },
222 {
223 "name" : "ipv4",
Yi Tsengc6844f52017-12-19 11:58:25 -0800224 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700225 "header_type" : "ipv4_t",
226 "metadata" : false,
227 "pi_omit" : true
228 },
229 {
230 "name" : "ipv6",
Yi Tsengc6844f52017-12-19 11:58:25 -0800231 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700232 "header_type" : "ipv6_t",
233 "metadata" : false,
234 "pi_omit" : true
235 },
236 {
237 "name" : "arp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800238 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700239 "header_type" : "arp_t",
240 "metadata" : false,
241 "pi_omit" : true
242 },
243 {
244 "name" : "tcp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800245 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700246 "header_type" : "tcp_t",
247 "metadata" : false,
248 "pi_omit" : true
249 },
250 {
251 "name" : "udp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800252 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700253 "header_type" : "udp_t",
254 "metadata" : false,
255 "pi_omit" : true
256 },
257 {
258 "name" : "icmp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800259 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700260 "header_type" : "icmp_t",
261 "metadata" : false,
262 "pi_omit" : true
263 },
264 {
265 "name" : "packet_out",
Yi Tsengc6844f52017-12-19 11:58:25 -0800266 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700267 "header_type" : "packet_out_header_t",
268 "metadata" : false,
269 "pi_omit" : true
270 },
271 {
272 "name" : "packet_in",
Yi Tsengc6844f52017-12-19 11:58:25 -0800273 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -0700274 "header_type" : "packet_in_header_t",
275 "metadata" : false,
276 "pi_omit" : true
277 }
278 ],
279 "header_stacks" : [],
280 "header_union_types" : [],
281 "header_unions" : [],
282 "header_union_stacks" : [],
283 "field_lists" : [],
284 "errors" : [
285 ["NoError", 0],
286 ["PacketTooShort", 1],
287 ["NoMatch", 2],
288 ["StackOutOfBounds", 3],
289 ["HeaderTooShort", 4],
290 ["ParserTimeout", 5]
291 ],
292 "enums" : [],
293 "parsers" : [
294 {
295 "name" : "parser",
296 "id" : 0,
297 "init_state" : "start",
298 "parse_states" : [
299 {
300 "name" : "start",
301 "id" : 0,
302 "parser_ops" : [],
303 "transitions" : [
304 {
305 "value" : "0x00ff",
306 "mask" : null,
307 "next_state" : "parse_packet_out"
308 },
309 {
310 "value" : "default",
311 "mask" : null,
312 "next_state" : "parse_ethernet"
313 }
314 ],
315 "transition_key" : [
316 {
317 "type" : "field",
318 "value" : ["standard_metadata", "ingress_port"]
319 }
320 ]
321 },
322 {
323 "name" : "parse_packet_out",
324 "id" : 1,
325 "parser_ops" : [
326 {
327 "parameters" : [
328 {
329 "type" : "regular",
330 "value" : "packet_out"
331 }
332 ],
333 "op" : "extract"
334 }
335 ],
336 "transitions" : [
337 {
338 "value" : "default",
339 "mask" : null,
340 "next_state" : "parse_ethernet"
341 }
342 ],
343 "transition_key" : []
344 },
345 {
346 "name" : "parse_ethernet",
347 "id" : 2,
348 "parser_ops" : [
349 {
350 "parameters" : [
351 {
352 "type" : "regular",
353 "value" : "ethernet"
354 }
355 ],
356 "op" : "extract"
Yi Tseng1d842672017-11-28 16:06:52 -0800357 },
358 {
359 "parameters" : [
360 {
361 "type" : "field",
362 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
363 },
364 {
365 "type" : "field",
366 "value" : ["ethernet", "ether_type"]
367 }
368 ],
369 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700370 }
371 ],
372 "transitions" : [
373 {
374 "value" : "0x9100",
375 "mask" : null,
376 "next_state" : "parse_vlan_tag"
377 },
378 {
379 "value" : "0x88a8",
380 "mask" : null,
381 "next_state" : "parse_vlan_tag"
382 },
383 {
384 "value" : "0x8100",
385 "mask" : null,
386 "next_state" : "parse_vlan_tag"
387 },
388 {
389 "value" : "0x8847",
390 "mask" : null,
391 "next_state" : "parse_mpls"
392 },
393 {
394 "value" : "0x0806",
395 "mask" : null,
396 "next_state" : "parse_arp"
397 },
398 {
399 "value" : "0x0800",
400 "mask" : null,
401 "next_state" : "parse_ipv4"
402 },
403 {
404 "value" : "0x86dd",
405 "mask" : null,
406 "next_state" : "parse_ipv6"
407 },
408 {
409 "value" : "default",
410 "mask" : null,
411 "next_state" : null
412 }
413 ],
414 "transition_key" : [
415 {
416 "type" : "field",
417 "value" : ["ethernet", "ether_type"]
418 }
419 ]
420 },
421 {
422 "name" : "parse_vlan_tag",
423 "id" : 3,
424 "parser_ops" : [
425 {
426 "parameters" : [
427 {
428 "type" : "regular",
429 "value" : "vlan_tag"
430 }
431 ],
432 "op" : "extract"
433 }
434 ],
435 "transitions" : [
436 {
437 "value" : "0x8100",
438 "mask" : null,
439 "next_state" : "parse_inner_vlan_tag"
440 },
441 {
442 "value" : "0x0806",
443 "mask" : null,
444 "next_state" : "parse_arp"
445 },
446 {
447 "value" : "0x0800",
448 "mask" : null,
449 "next_state" : "parse_ipv4"
450 },
451 {
452 "value" : "0x86dd",
453 "mask" : null,
454 "next_state" : "parse_ipv6"
455 },
456 {
457 "value" : "default",
458 "mask" : null,
459 "next_state" : null
460 }
461 ],
462 "transition_key" : [
463 {
464 "type" : "field",
465 "value" : ["vlan_tag", "ether_type"]
466 }
467 ]
468 },
469 {
470 "name" : "parse_inner_vlan_tag",
471 "id" : 4,
472 "parser_ops" : [
473 {
474 "parameters" : [
475 {
476 "type" : "regular",
477 "value" : "inner_vlan_tag"
478 }
479 ],
480 "op" : "extract"
481 }
482 ],
483 "transitions" : [
484 {
485 "value" : "0x0806",
486 "mask" : null,
487 "next_state" : "parse_arp"
488 },
489 {
490 "value" : "0x0800",
491 "mask" : null,
492 "next_state" : "parse_ipv4"
493 },
494 {
495 "value" : "0x86dd",
496 "mask" : null,
497 "next_state" : "parse_ipv6"
498 },
499 {
500 "value" : "default",
501 "mask" : null,
502 "next_state" : null
503 }
504 ],
505 "transition_key" : [
506 {
507 "type" : "field",
508 "value" : ["vlan_tag", "ether_type"]
509 }
510 ]
511 },
512 {
513 "name" : "parse_mpls",
514 "id" : 5,
515 "parser_ops" : [
516 {
517 "parameters" : [
518 {
519 "type" : "regular",
520 "value" : "mpls"
521 }
522 ],
523 "op" : "extract"
524 },
525 {
526 "parameters" : [
527 {
528 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800529 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700530 },
531 {
532 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800533 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700534 }
535 ],
536 "op" : "set"
537 }
538 ],
539 "transitions" : [
540 {
541 "value" : "0x04",
542 "mask" : null,
543 "next_state" : "parse_ipv4"
544 },
545 {
546 "value" : "0x06",
547 "mask" : null,
548 "next_state" : "parse_ipv6"
549 },
550 {
551 "value" : "default",
552 "mask" : null,
553 "next_state" : "parse_ethernet"
554 }
555 ],
556 "transition_key" : [
557 {
558 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800559 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700560 }
561 ]
562 },
563 {
564 "name" : "parse_ipv4",
565 "id" : 6,
566 "parser_ops" : [
567 {
568 "parameters" : [
569 {
570 "type" : "regular",
571 "value" : "ipv4"
572 }
573 ],
574 "op" : "extract"
575 },
576 {
577 "parameters" : [
578 {
579 "type" : "field",
580 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
581 },
582 {
583 "type" : "field",
584 "value" : ["ipv4", "protocol"]
585 }
586 ],
587 "op" : "set"
588 }
589 ],
590 "transitions" : [
591 {
592 "value" : "0x06",
593 "mask" : null,
594 "next_state" : "parse_tcp"
595 },
596 {
597 "value" : "0x11",
598 "mask" : null,
599 "next_state" : "parse_udp"
600 },
601 {
602 "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 {
620 "name" : "parse_ipv6",
621 "id" : 7,
622 "parser_ops" : [
623 {
624 "parameters" : [
625 {
626 "type" : "regular",
627 "value" : "ipv6"
628 }
629 ],
630 "op" : "extract"
631 },
632 {
633 "parameters" : [
634 {
635 "type" : "field",
636 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
637 },
638 {
639 "type" : "field",
640 "value" : ["ipv6", "next_hdr"]
641 }
642 ],
643 "op" : "set"
644 }
645 ],
646 "transitions" : [
647 {
648 "value" : "0x06",
649 "mask" : null,
650 "next_state" : "parse_tcp"
651 },
652 {
653 "value" : "0x11",
654 "mask" : null,
655 "next_state" : "parse_udp"
656 },
657 {
658 "value" : "0x3a",
659 "mask" : null,
660 "next_state" : "parse_icmp"
661 },
662 {
663 "value" : "default",
664 "mask" : null,
665 "next_state" : null
666 }
667 ],
668 "transition_key" : [
669 {
670 "type" : "field",
671 "value" : ["ipv6", "next_hdr"]
672 }
673 ]
674 },
675 {
676 "name" : "parse_arp",
677 "id" : 8,
678 "parser_ops" : [
679 {
680 "parameters" : [
681 {
682 "type" : "regular",
683 "value" : "arp"
684 }
685 ],
686 "op" : "extract"
687 }
688 ],
689 "transitions" : [
690 {
691 "value" : "default",
692 "mask" : null,
693 "next_state" : null
694 }
695 ],
696 "transition_key" : []
697 },
698 {
699 "name" : "parse_tcp",
700 "id" : 9,
701 "parser_ops" : [
702 {
703 "parameters" : [
704 {
705 "type" : "regular",
706 "value" : "tcp"
707 }
708 ],
709 "op" : "extract"
710 },
711 {
712 "parameters" : [
713 {
714 "type" : "field",
715 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
716 },
717 {
718 "type" : "field",
719 "value" : ["tcp", "src_port"]
720 }
721 ],
722 "op" : "set"
723 },
724 {
725 "parameters" : [
726 {
727 "type" : "field",
728 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
729 },
730 {
731 "type" : "field",
732 "value" : ["tcp", "dst_port"]
733 }
734 ],
735 "op" : "set"
736 }
737 ],
738 "transitions" : [
739 {
740 "value" : "default",
741 "mask" : null,
742 "next_state" : null
743 }
744 ],
745 "transition_key" : []
746 },
747 {
748 "name" : "parse_udp",
749 "id" : 10,
750 "parser_ops" : [
751 {
752 "parameters" : [
753 {
754 "type" : "regular",
755 "value" : "udp"
756 }
757 ],
758 "op" : "extract"
759 },
760 {
761 "parameters" : [
762 {
763 "type" : "field",
764 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
765 },
766 {
767 "type" : "field",
768 "value" : ["udp", "src_port"]
769 }
770 ],
771 "op" : "set"
772 },
773 {
774 "parameters" : [
775 {
776 "type" : "field",
777 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
778 },
779 {
780 "type" : "field",
781 "value" : ["udp", "dst_port"]
782 }
783 ],
784 "op" : "set"
785 }
786 ],
787 "transitions" : [
788 {
789 "value" : "default",
790 "mask" : null,
791 "next_state" : null
792 }
793 ],
794 "transition_key" : []
795 },
796 {
797 "name" : "parse_icmp",
798 "id" : 11,
799 "parser_ops" : [
800 {
801 "parameters" : [
802 {
803 "type" : "regular",
804 "value" : "icmp"
805 }
806 ],
807 "op" : "extract"
808 }
809 ],
810 "transitions" : [
811 {
812 "value" : "default",
813 "mask" : null,
814 "next_state" : null
815 }
816 ],
817 "transition_key" : []
818 }
819 ]
820 }
821 ],
822 "deparsers" : [
823 {
824 "name" : "deparser",
825 "id" : 0,
826 "source_info" : {
827 "filename" : "./include/parser.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -0800828 "line" : 137,
Yi Tsengbe342052017-11-03 10:21:23 -0700829 "column" : 8,
830 "source_fragment" : "FabricDeparser"
831 },
Yi Tsengf73a5532017-11-17 15:58:57 -0800832 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700833 }
834 ],
835 "meter_arrays" : [],
836 "counter_arrays" : [
837 {
Yi Tsengbe342052017-11-03 10:21:23 -0700838 "name" : "port_counters_control.egress_port_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800839 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700840 "source_info" : {
841 "filename" : "./include/control/port_counter.p4",
842 "line" : 23,
843 "column" : 38,
844 "source_fragment" : "egress_port_counter"
845 },
846 "size" : 511,
847 "is_direct" : false
848 },
849 {
850 "name" : "port_counters_control.ingress_port_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800851 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700852 "source_info" : {
853 "filename" : "./include/control/port_counter.p4",
854 "line" : 24,
855 "column" : 38,
856 "source_fragment" : "ingress_port_counter"
857 },
858 "size" : 511,
859 "is_direct" : false
860 }
861 ],
862 "register_arrays" : [],
863 "calculations" : [
864 {
865 "name" : "calc",
866 "id" : 0,
867 "source_info" : {
868 "filename" : "./include/checksum.p4",
Yi Tseng1d842672017-11-28 16:06:52 -0800869 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -0700870 "column" : 8,
871 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
872 },
873 "algo" : "csum16",
874 "input" : [
875 {
876 "type" : "field",
877 "value" : ["ipv4", "version"]
878 },
879 {
880 "type" : "field",
881 "value" : ["ipv4", "ihl"]
882 },
883 {
884 "type" : "field",
885 "value" : ["ipv4", "diffserv"]
886 },
887 {
888 "type" : "field",
889 "value" : ["ipv4", "total_len"]
890 },
891 {
892 "type" : "field",
893 "value" : ["ipv4", "identification"]
894 },
895 {
896 "type" : "field",
897 "value" : ["ipv4", "flags"]
898 },
899 {
900 "type" : "field",
901 "value" : ["ipv4", "frag_offset"]
902 },
903 {
904 "type" : "field",
905 "value" : ["ipv4", "ttl"]
906 },
907 {
908 "type" : "field",
909 "value" : ["ipv4", "protocol"]
910 },
911 {
912 "type" : "field",
913 "value" : ["ipv4", "src_addr"]
914 },
915 {
916 "type" : "field",
917 "value" : ["ipv4", "dst_addr"]
918 }
919 ]
920 },
921 {
922 "name" : "calc_0",
923 "id" : 1,
924 "source_info" : {
925 "filename" : "./include/checksum.p4",
Yi Tseng1d842672017-11-28 16:06:52 -0800926 "line" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -0700927 "column" : 8,
928 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
929 },
930 "algo" : "csum16",
931 "input" : [
932 {
933 "type" : "field",
934 "value" : ["ipv4", "version"]
935 },
936 {
937 "type" : "field",
938 "value" : ["ipv4", "ihl"]
939 },
940 {
941 "type" : "field",
942 "value" : ["ipv4", "diffserv"]
943 },
944 {
945 "type" : "field",
946 "value" : ["ipv4", "total_len"]
947 },
948 {
949 "type" : "field",
950 "value" : ["ipv4", "identification"]
951 },
952 {
953 "type" : "field",
954 "value" : ["ipv4", "flags"]
955 },
956 {
957 "type" : "field",
958 "value" : ["ipv4", "frag_offset"]
959 },
960 {
961 "type" : "field",
962 "value" : ["ipv4", "ttl"]
963 },
964 {
965 "type" : "field",
966 "value" : ["ipv4", "protocol"]
967 },
968 {
969 "type" : "field",
970 "value" : ["ipv4", "src_addr"]
971 },
972 {
973 "type" : "field",
974 "value" : ["ipv4", "dst_addr"]
975 }
976 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700977 }
978 ],
979 "learn_lists" : [],
980 "actions" : [
981 {
982 "name" : "nop",
983 "id" : 0,
984 "runtime_data" : [],
985 "primitives" : []
986 },
987 {
988 "name" : "nop",
989 "id" : 1,
990 "runtime_data" : [],
991 "primitives" : []
992 },
993 {
Yi Tseng1d842672017-11-28 16:06:52 -0800994 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700995 "id" : 2,
996 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800997 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700998 },
999 {
Yi Tseng1d842672017-11-28 16:06:52 -08001000 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001001 "id" : 3,
1002 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001003 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001004 },
1005 {
1006 "name" : "NoAction",
1007 "id" : 4,
1008 "runtime_data" : [],
1009 "primitives" : []
1010 },
1011 {
1012 "name" : "NoAction",
1013 "id" : 5,
1014 "runtime_data" : [],
1015 "primitives" : []
1016 },
1017 {
1018 "name" : "NoAction",
1019 "id" : 6,
1020 "runtime_data" : [],
1021 "primitives" : []
1022 },
1023 {
1024 "name" : "NoAction",
1025 "id" : 7,
1026 "runtime_data" : [],
1027 "primitives" : []
1028 },
1029 {
1030 "name" : "NoAction",
1031 "id" : 8,
1032 "runtime_data" : [],
1033 "primitives" : []
1034 },
1035 {
1036 "name" : "NoAction",
1037 "id" : 9,
1038 "runtime_data" : [],
1039 "primitives" : []
1040 },
1041 {
1042 "name" : "NoAction",
1043 "id" : 10,
1044 "runtime_data" : [],
1045 "primitives" : []
1046 },
1047 {
Yi Tseng1d842672017-11-28 16:06:52 -08001048 "name" : "filtering.drop",
Yi Tsengbe342052017-11-03 10:21:23 -07001049 "id" : 11,
1050 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001051 "primitives" : [
1052 {
1053 "op" : "drop",
1054 "parameters" : [],
1055 "source_info" : {
1056 "filename" : "./include/control/filtering.p4",
1057 "line" : 29,
1058 "column" : 8,
1059 "source_fragment" : "mark_to_drop()"
1060 }
1061 }
1062 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001063 },
1064 {
Yi Tsengbe342052017-11-03 10:21:23 -07001065 "name" : "filtering.set_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001066 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001067 "runtime_data" : [
1068 {
1069 "name" : "new_vlan_id",
1070 "bitwidth" : 12
1071 }
1072 ],
1073 "primitives" : [
1074 {
1075 "op" : "assign",
1076 "parameters" : [
1077 {
1078 "type" : "field",
1079 "value" : ["vlan_tag", "vlan_id"]
1080 },
1081 {
1082 "type" : "runtime_data",
1083 "value" : 0
1084 }
1085 ],
1086 "source_info" : {
1087 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001088 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001089 "column" : 8,
1090 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1091 }
1092 }
1093 ]
1094 },
1095 {
1096 "name" : "filtering.push_internal_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001097 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07001098 "runtime_data" : [
1099 {
1100 "name" : "new_vlan_id",
1101 "bitwidth" : 12
1102 }
1103 ],
1104 "primitives" : [
1105 {
1106 "op" : "add_header",
1107 "parameters" : [
1108 {
1109 "type" : "header",
1110 "value" : "vlan_tag"
1111 }
1112 ],
1113 "source_info" : {
1114 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001115 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07001116 "column" : 8,
1117 "source_fragment" : "hdr.vlan_tag.setValid()"
1118 }
1119 },
1120 {
1121 "op" : "assign",
1122 "parameters" : [
1123 {
1124 "type" : "field",
1125 "value" : ["vlan_tag", "cfi"]
1126 },
1127 {
1128 "type" : "hexstr",
1129 "value" : "0x00"
1130 }
1131 ],
1132 "source_info" : {
1133 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001134 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001135 "column" : 8,
1136 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1137 }
1138 },
1139 {
1140 "op" : "assign",
1141 "parameters" : [
1142 {
1143 "type" : "field",
1144 "value" : ["vlan_tag", "pri"]
1145 },
1146 {
1147 "type" : "hexstr",
1148 "value" : "0x00"
1149 }
1150 ],
1151 "source_info" : {
1152 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001153 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001154 "column" : 8,
1155 "source_fragment" : "hdr.vlan_tag.pri = 0"
1156 }
1157 },
1158 {
1159 "op" : "assign",
1160 "parameters" : [
1161 {
1162 "type" : "field",
1163 "value" : ["vlan_tag", "ether_type"]
1164 },
1165 {
Yi Tseng1d842672017-11-28 16:06:52 -08001166 "type" : "field",
1167 "value" : ["ethernet", "ether_type"]
1168 }
1169 ],
1170 "source_info" : {
1171 "filename" : "./include/control/filtering.p4",
1172 "line" : 42,
1173 "column" : 8,
1174 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1175 }
1176 },
1177 {
1178 "op" : "assign",
1179 "parameters" : [
1180 {
1181 "type" : "field",
1182 "value" : ["ethernet", "ether_type"]
1183 },
1184 {
Yi Tsengbe342052017-11-03 10:21:23 -07001185 "type" : "hexstr",
1186 "value" : "0x8100"
1187 }
1188 ],
1189 "source_info" : {
1190 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001191 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001192 "column" : 31,
1193 "source_fragment" : "0x8100; ..."
1194 }
1195 },
1196 {
1197 "op" : "assign",
1198 "parameters" : [
1199 {
1200 "type" : "field",
1201 "value" : ["vlan_tag", "vlan_id"]
1202 },
1203 {
1204 "type" : "runtime_data",
1205 "value" : 0
1206 }
1207 ],
1208 "source_info" : {
1209 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001210 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001211 "column" : 8,
1212 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1213 }
1214 },
1215 {
1216 "op" : "assign",
1217 "parameters" : [
1218 {
1219 "type" : "field",
1220 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1221 },
1222 {
1223 "type" : "expression",
1224 "value" : {
1225 "type" : "expression",
1226 "value" : {
1227 "op" : "b2d",
1228 "left" : null,
1229 "right" : {
1230 "type" : "bool",
1231 "value" : true
1232 }
1233 }
1234 }
1235 }
1236 ],
1237 "source_info" : {
1238 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001239 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07001240 "column" : 8,
1241 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1242 }
1243 }
1244 ]
1245 },
1246 {
1247 "name" : "filtering.set_forwarding_type",
Yi Tseng1d842672017-11-28 16:06:52 -08001248 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07001249 "runtime_data" : [
1250 {
1251 "name" : "fwd_type",
1252 "bitwidth" : 3
1253 }
1254 ],
1255 "primitives" : [
1256 {
1257 "op" : "assign",
1258 "parameters" : [
1259 {
1260 "type" : "field",
1261 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1262 },
1263 {
1264 "type" : "runtime_data",
1265 "value" : 0
1266 }
1267 ],
1268 "source_info" : {
1269 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001270 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07001271 "column" : 8,
1272 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1273 }
1274 }
1275 ]
1276 },
1277 {
Yi Tseng1d842672017-11-28 16:06:52 -08001278 "name" : "forwarding.drop",
1279 "id" : 15,
1280 "runtime_data" : [],
1281 "primitives" : [
1282 {
1283 "op" : "drop",
1284 "parameters" : [],
1285 "source_info" : {
1286 "filename" : "./include/control/forwarding.p4",
1287 "line" : 31,
1288 "column" : 8,
1289 "source_fragment" : "mark_to_drop()"
1290 }
1291 }
1292 ]
1293 },
1294 {
Yi Tsengbe342052017-11-03 10:21:23 -07001295 "name" : "forwarding.set_next_id",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001296 "id" : 16,
1297 "runtime_data" : [
1298 {
1299 "name" : "next_id",
1300 "bitwidth" : 32
1301 }
1302 ],
1303 "primitives" : [
1304 {
1305 "op" : "assign",
1306 "parameters" : [
1307 {
1308 "type" : "field",
1309 "value" : ["scalars", "fabric_metadata_t.next_id"]
1310 },
1311 {
1312 "type" : "runtime_data",
1313 "value" : 0
1314 }
1315 ],
1316 "source_info" : {
1317 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001318 "line" : 35,
Yi Tsengf55eaa82017-11-29 15:51:28 -08001319 "column" : 8,
1320 "source_fragment" : "fabric_metadata.next_id = next_id"
1321 }
1322 }
1323 ]
1324 },
1325 {
1326 "name" : "forwarding.set_next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07001327 "id" : 17,
1328 "runtime_data" : [
1329 {
1330 "name" : "next_id",
1331 "bitwidth" : 32
1332 }
1333 ],
1334 "primitives" : [
1335 {
1336 "op" : "assign",
1337 "parameters" : [
1338 {
1339 "type" : "field",
1340 "value" : ["scalars", "fabric_metadata_t.next_id"]
1341 },
1342 {
1343 "type" : "runtime_data",
1344 "value" : 0
1345 }
1346 ],
1347 "source_info" : {
1348 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001349 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001350 "column" : 8,
1351 "source_fragment" : "fabric_metadata.next_id = next_id"
1352 }
1353 }
1354 ]
1355 },
1356 {
1357 "name" : "forwarding.set_next_id",
1358 "id" : 18,
1359 "runtime_data" : [
1360 {
1361 "name" : "next_id",
1362 "bitwidth" : 32
1363 }
1364 ],
1365 "primitives" : [
1366 {
1367 "op" : "assign",
1368 "parameters" : [
1369 {
1370 "type" : "field",
1371 "value" : ["scalars", "fabric_metadata_t.next_id"]
1372 },
1373 {
1374 "type" : "runtime_data",
1375 "value" : 0
1376 }
1377 ],
1378 "source_info" : {
1379 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001380 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001381 "column" : 8,
1382 "source_fragment" : "fabric_metadata.next_id = next_id"
1383 }
1384 }
1385 ]
1386 },
1387 {
1388 "name" : "forwarding.set_next_id",
1389 "id" : 19,
1390 "runtime_data" : [
1391 {
1392 "name" : "next_id",
1393 "bitwidth" : 32
1394 }
1395 ],
1396 "primitives" : [
1397 {
1398 "op" : "assign",
1399 "parameters" : [
1400 {
1401 "type" : "field",
1402 "value" : ["scalars", "fabric_metadata_t.next_id"]
1403 },
1404 {
1405 "type" : "runtime_data",
1406 "value" : 0
1407 }
1408 ],
1409 "source_info" : {
1410 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001411 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001412 "column" : 8,
1413 "source_fragment" : "fabric_metadata.next_id = next_id"
1414 }
1415 }
1416 ]
1417 },
1418 {
1419 "name" : "forwarding.set_next_id",
1420 "id" : 20,
1421 "runtime_data" : [
1422 {
1423 "name" : "next_id",
1424 "bitwidth" : 32
1425 }
1426 ],
1427 "primitives" : [
1428 {
1429 "op" : "assign",
1430 "parameters" : [
1431 {
1432 "type" : "field",
1433 "value" : ["scalars", "fabric_metadata_t.next_id"]
1434 },
1435 {
1436 "type" : "runtime_data",
1437 "value" : 0
1438 }
1439 ],
1440 "source_info" : {
1441 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001442 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001443 "column" : 8,
1444 "source_fragment" : "fabric_metadata.next_id = next_id"
1445 }
1446 }
1447 ]
1448 },
1449 {
1450 "name" : "forwarding.set_next_id",
1451 "id" : 21,
1452 "runtime_data" : [
1453 {
1454 "name" : "next_id",
1455 "bitwidth" : 32
1456 }
1457 ],
1458 "primitives" : [
1459 {
1460 "op" : "assign",
1461 "parameters" : [
1462 {
1463 "type" : "field",
1464 "value" : ["scalars", "fabric_metadata_t.next_id"]
1465 },
1466 {
1467 "type" : "runtime_data",
1468 "value" : 0
1469 }
1470 ],
1471 "source_info" : {
1472 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001473 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001474 "column" : 8,
1475 "source_fragment" : "fabric_metadata.next_id = next_id"
1476 }
1477 }
1478 ]
1479 },
1480 {
Yi Tsengbe342052017-11-03 10:21:23 -07001481 "name" : "forwarding.pop_mpls_and_next",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001482 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07001483 "runtime_data" : [
1484 {
1485 "name" : "next_id",
1486 "bitwidth" : 32
1487 }
1488 ],
1489 "primitives" : [
1490 {
1491 "op" : "remove_header",
1492 "parameters" : [
1493 {
1494 "type" : "header",
1495 "value" : "mpls"
1496 }
1497 ],
1498 "source_info" : {
1499 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001500 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07001501 "column" : 8,
1502 "source_fragment" : "hdr.mpls.setInvalid()"
1503 }
1504 },
1505 {
1506 "op" : "assign",
1507 "parameters" : [
1508 {
1509 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001510 "value" : ["scalars", "fabric_metadata_t.next_id"]
1511 },
1512 {
1513 "type" : "runtime_data",
1514 "value" : 0
1515 }
1516 ],
1517 "source_info" : {
1518 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001519 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001520 "column" : 8,
1521 "source_fragment" : "fabric_metadata.next_id = next_id"
1522 }
1523 }
1524 ]
1525 },
1526 {
Yi Tsengbe342052017-11-03 10:21:23 -07001527 "name" : "forwarding.duplicate_to_controller",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001528 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07001529 "runtime_data" : [],
1530 "primitives" : [
1531 {
1532 "op" : "assign",
1533 "parameters" : [
1534 {
1535 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001536 "value" : ["standard_metadata", "egress_spec"]
1537 },
1538 {
1539 "type" : "hexstr",
1540 "value" : "0x00ff"
1541 }
1542 ],
1543 "source_info" : {
1544 "filename" : "./include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001545 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07001546 "column" : 28,
1547 "source_fragment" : "255; ..."
1548 }
1549 }
1550 ]
1551 },
1552 {
Yi Tsengbe342052017-11-03 10:21:23 -07001553 "name" : "next.output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001554 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07001555 "runtime_data" : [
1556 {
1557 "name" : "port_num",
1558 "bitwidth" : 9
1559 }
1560 ],
1561 "primitives" : [
1562 {
1563 "op" : "assign",
1564 "parameters" : [
1565 {
1566 "type" : "field",
1567 "value" : ["standard_metadata", "egress_spec"]
1568 },
1569 {
1570 "type" : "runtime_data",
1571 "value" : 0
1572 }
1573 ],
1574 "source_info" : {
1575 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001576 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07001577 "column" : 8,
1578 "source_fragment" : "standard_metadata.egress_spec = port_num"
1579 }
Yi Tsengbe342052017-11-03 10:21:23 -07001580 }
1581 ]
1582 },
1583 {
1584 "name" : "next.set_vlan_output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001585 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001586 "runtime_data" : [
1587 {
1588 "name" : "new_vlan_id",
1589 "bitwidth" : 12
1590 },
1591 {
1592 "name" : "port_num",
1593 "bitwidth" : 9
1594 }
1595 ],
1596 "primitives" : [
1597 {
1598 "op" : "assign",
1599 "parameters" : [
1600 {
1601 "type" : "field",
1602 "value" : ["vlan_tag", "vlan_id"]
1603 },
1604 {
1605 "type" : "runtime_data",
1606 "value" : 0
1607 }
1608 ],
1609 "source_info" : {
1610 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001611 "line" : 34,
Yi Tsengbe342052017-11-03 10:21:23 -07001612 "column" : 8,
1613 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1614 }
1615 },
1616 {
1617 "op" : "assign",
1618 "parameters" : [
1619 {
1620 "type" : "field",
1621 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1622 },
1623 {
1624 "type" : "expression",
1625 "value" : {
1626 "type" : "expression",
1627 "value" : {
1628 "op" : "b2d",
1629 "left" : null,
1630 "right" : {
1631 "type" : "bool",
1632 "value" : false
1633 }
1634 }
1635 }
1636 }
1637 ],
1638 "source_info" : {
1639 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001640 "line" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07001641 "column" : 8,
1642 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
1643 }
1644 },
1645 {
1646 "op" : "assign",
1647 "parameters" : [
1648 {
1649 "type" : "field",
1650 "value" : ["standard_metadata", "egress_spec"]
1651 },
1652 {
1653 "type" : "runtime_data",
1654 "value" : 1
1655 }
1656 ],
1657 "source_info" : {
1658 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001659 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07001660 "column" : 8,
1661 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1662 }
Yi Tsengbe342052017-11-03 10:21:23 -07001663 }
1664 ]
1665 },
1666 {
1667 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001668 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07001669 "runtime_data" : [
1670 {
1671 "name" : "port_num",
1672 "bitwidth" : 9
1673 },
1674 {
1675 "name" : "smac",
1676 "bitwidth" : 48
1677 },
1678 {
1679 "name" : "dmac",
1680 "bitwidth" : 48
1681 }
1682 ],
1683 "primitives" : [
1684 {
1685 "op" : "assign",
1686 "parameters" : [
1687 {
1688 "type" : "field",
1689 "value" : ["ethernet", "src_addr"]
1690 },
1691 {
1692 "type" : "runtime_data",
1693 "value" : 1
1694 }
1695 ],
1696 "source_info" : {
1697 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001698 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001699 "column" : 8,
1700 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1701 }
1702 },
1703 {
1704 "op" : "assign",
1705 "parameters" : [
1706 {
1707 "type" : "field",
1708 "value" : ["ethernet", "dst_addr"]
1709 },
1710 {
1711 "type" : "runtime_data",
1712 "value" : 2
1713 }
1714 ],
1715 "source_info" : {
1716 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001717 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07001718 "column" : 8,
1719 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1720 }
1721 },
1722 {
1723 "op" : "assign",
1724 "parameters" : [
1725 {
1726 "type" : "field",
1727 "value" : ["standard_metadata", "egress_spec"]
1728 },
1729 {
1730 "type" : "runtime_data",
1731 "value" : 0
1732 }
1733 ],
1734 "source_info" : {
1735 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001736 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07001737 "column" : 8,
1738 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1739 }
Yi Tsengbe342052017-11-03 10:21:23 -07001740 }
1741 ]
1742 },
1743 {
1744 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001745 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001746 "runtime_data" : [
1747 {
1748 "name" : "port_num",
1749 "bitwidth" : 9
1750 },
1751 {
1752 "name" : "smac",
1753 "bitwidth" : 48
1754 },
1755 {
1756 "name" : "dmac",
1757 "bitwidth" : 48
1758 }
1759 ],
1760 "primitives" : [
1761 {
1762 "op" : "assign",
1763 "parameters" : [
1764 {
1765 "type" : "field",
1766 "value" : ["ethernet", "src_addr"]
1767 },
1768 {
1769 "type" : "runtime_data",
1770 "value" : 1
1771 }
1772 ],
1773 "source_info" : {
1774 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001775 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001776 "column" : 8,
1777 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1778 }
1779 },
1780 {
1781 "op" : "assign",
1782 "parameters" : [
1783 {
1784 "type" : "field",
1785 "value" : ["ethernet", "dst_addr"]
1786 },
1787 {
1788 "type" : "runtime_data",
1789 "value" : 2
1790 }
1791 ],
1792 "source_info" : {
1793 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001794 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07001795 "column" : 8,
1796 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1797 }
1798 },
1799 {
1800 "op" : "assign",
1801 "parameters" : [
1802 {
1803 "type" : "field",
1804 "value" : ["standard_metadata", "egress_spec"]
1805 },
1806 {
1807 "type" : "runtime_data",
1808 "value" : 0
1809 }
1810 ],
1811 "source_info" : {
1812 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001813 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07001814 "column" : 8,
1815 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1816 }
Yi Tsengbe342052017-11-03 10:21:23 -07001817 }
1818 ]
1819 },
1820 {
1821 "name" : "next.set_mcast_group",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001822 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07001823 "runtime_data" : [
1824 {
1825 "name" : "gid",
1826 "bitwidth" : 16
1827 },
1828 {
1829 "name" : "smac",
1830 "bitwidth" : 48
1831 }
1832 ],
1833 "primitives" : [
1834 {
1835 "op" : "assign",
1836 "parameters" : [
1837 {
1838 "type" : "field",
1839 "value" : ["standard_metadata", "mcast_grp"]
1840 },
1841 {
1842 "type" : "runtime_data",
1843 "value" : 0
1844 }
1845 ],
1846 "source_info" : {
1847 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001848 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -07001849 "column" : 8,
1850 "source_fragment" : "standard_metadata.mcast_grp = gid"
1851 }
1852 },
1853 {
1854 "op" : "assign",
1855 "parameters" : [
1856 {
1857 "type" : "field",
1858 "value" : ["ethernet", "src_addr"]
1859 },
1860 {
1861 "type" : "runtime_data",
1862 "value" : 1
1863 }
1864 ],
1865 "source_info" : {
1866 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001867 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001868 "column" : 8,
1869 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1870 }
1871 }
1872 ]
1873 },
1874 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001875 "name" : "next.mpls_routing_v4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001876 "id" : 29,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001877 "runtime_data" : [
1878 {
1879 "name" : "port_num",
1880 "bitwidth" : 9
1881 },
1882 {
1883 "name" : "smac",
1884 "bitwidth" : 48
1885 },
1886 {
1887 "name" : "dmac",
1888 "bitwidth" : 48
1889 },
1890 {
1891 "name" : "label",
1892 "bitwidth" : 20
1893 }
1894 ],
1895 "primitives" : [
1896 {
1897 "op" : "assign",
1898 "parameters" : [
1899 {
1900 "type" : "field",
1901 "value" : ["ethernet", "src_addr"]
1902 },
1903 {
1904 "type" : "runtime_data",
1905 "value" : 1
1906 }
1907 ],
1908 "source_info" : {
1909 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001910 "line" : 42,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001911 "column" : 8,
1912 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1913 }
1914 },
1915 {
1916 "op" : "assign",
1917 "parameters" : [
1918 {
1919 "type" : "field",
1920 "value" : ["ethernet", "dst_addr"]
1921 },
1922 {
1923 "type" : "runtime_data",
1924 "value" : 2
1925 }
1926 ],
1927 "source_info" : {
1928 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001929 "line" : 46,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001930 "column" : 8,
1931 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1932 }
1933 },
1934 {
1935 "op" : "assign",
1936 "parameters" : [
1937 {
1938 "type" : "field",
1939 "value" : ["standard_metadata", "egress_spec"]
1940 },
1941 {
1942 "type" : "runtime_data",
1943 "value" : 0
1944 }
1945 ],
1946 "source_info" : {
1947 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001948 "line" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001949 "column" : 8,
1950 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1951 }
1952 },
1953 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001954 "op" : "add_header",
1955 "parameters" : [
1956 {
1957 "type" : "header",
1958 "value" : "mpls"
1959 }
1960 ],
1961 "source_info" : {
1962 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001963 "line" : 62,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001964 "column" : 8,
1965 "source_fragment" : "hdr.mpls.setValid()"
1966 }
1967 },
1968 {
1969 "op" : "assign",
1970 "parameters" : [
1971 {
1972 "type" : "field",
1973 "value" : ["ethernet", "ether_type"]
1974 },
1975 {
1976 "type" : "hexstr",
1977 "value" : "0x8847"
1978 }
1979 ],
1980 "source_info" : {
1981 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001982 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001983 "column" : 31,
1984 "source_fragment" : "0x8847; ..."
1985 }
1986 },
1987 {
1988 "op" : "assign",
1989 "parameters" : [
1990 {
1991 "type" : "field",
1992 "value" : ["mpls", "label"]
1993 },
1994 {
1995 "type" : "runtime_data",
1996 "value" : 3
1997 }
1998 ],
1999 "source_info" : {
2000 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002001 "line" : 64,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002002 "column" : 8,
2003 "source_fragment" : "hdr.mpls.label = label; ..."
2004 }
2005 },
2006 {
2007 "op" : "assign",
2008 "parameters" : [
2009 {
2010 "type" : "field",
2011 "value" : ["mpls", "tc"]
2012 },
2013 {
Yi Tseng1d842672017-11-28 16:06:52 -08002014 "type" : "hexstr",
2015 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002016 }
2017 ],
2018 "source_info" : {
2019 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002020 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002021 "column" : 8,
2022 "source_fragment" : "hdr.mpls.tc = tc; ..."
2023 }
2024 },
2025 {
2026 "op" : "assign",
2027 "parameters" : [
2028 {
2029 "type" : "field",
2030 "value" : ["mpls", "bos"]
2031 },
2032 {
2033 "type" : "hexstr",
2034 "value" : "0x01"
2035 }
2036 ],
2037 "source_info" : {
2038 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002039 "line" : 66,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002040 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002041 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002042 }
2043 },
2044 {
2045 "op" : "assign",
2046 "parameters" : [
2047 {
2048 "type" : "field",
2049 "value" : ["mpls", "ttl"]
2050 },
2051 {
2052 "type" : "hexstr",
2053 "value" : "0x40"
2054 }
2055 ],
2056 "source_info" : {
2057 "filename" : "./include/control/../header.p4",
2058 "line" : 19,
2059 "column" : 32,
2060 "source_fragment" : "64; ..."
2061 }
2062 }
2063 ]
2064 },
2065 {
2066 "name" : "next.mpls_routing_v6",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002067 "id" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002068 "runtime_data" : [
2069 {
2070 "name" : "port_num",
2071 "bitwidth" : 9
2072 },
2073 {
2074 "name" : "smac",
2075 "bitwidth" : 48
2076 },
2077 {
2078 "name" : "dmac",
2079 "bitwidth" : 48
2080 },
2081 {
2082 "name" : "label",
2083 "bitwidth" : 20
2084 }
2085 ],
2086 "primitives" : [
2087 {
2088 "op" : "assign",
2089 "parameters" : [
2090 {
2091 "type" : "field",
2092 "value" : ["ethernet", "src_addr"]
2093 },
2094 {
2095 "type" : "runtime_data",
2096 "value" : 1
2097 }
2098 ],
2099 "source_info" : {
2100 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002101 "line" : 42,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002102 "column" : 8,
2103 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2104 }
2105 },
2106 {
2107 "op" : "assign",
2108 "parameters" : [
2109 {
2110 "type" : "field",
2111 "value" : ["ethernet", "dst_addr"]
2112 },
2113 {
2114 "type" : "runtime_data",
2115 "value" : 2
2116 }
2117 ],
2118 "source_info" : {
2119 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002120 "line" : 46,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002121 "column" : 8,
2122 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2123 }
2124 },
2125 {
2126 "op" : "assign",
2127 "parameters" : [
2128 {
2129 "type" : "field",
2130 "value" : ["standard_metadata", "egress_spec"]
2131 },
2132 {
2133 "type" : "runtime_data",
2134 "value" : 0
2135 }
2136 ],
2137 "source_info" : {
2138 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002139 "line" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002140 "column" : 8,
2141 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2142 }
2143 },
2144 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002145 "op" : "add_header",
2146 "parameters" : [
2147 {
2148 "type" : "header",
2149 "value" : "mpls"
2150 }
2151 ],
2152 "source_info" : {
2153 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002154 "line" : 62,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002155 "column" : 8,
2156 "source_fragment" : "hdr.mpls.setValid()"
2157 }
2158 },
2159 {
2160 "op" : "assign",
2161 "parameters" : [
2162 {
2163 "type" : "field",
2164 "value" : ["ethernet", "ether_type"]
2165 },
2166 {
2167 "type" : "hexstr",
2168 "value" : "0x8847"
2169 }
2170 ],
2171 "source_info" : {
2172 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002173 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002174 "column" : 31,
2175 "source_fragment" : "0x8847; ..."
2176 }
2177 },
2178 {
2179 "op" : "assign",
2180 "parameters" : [
2181 {
2182 "type" : "field",
2183 "value" : ["mpls", "label"]
2184 },
2185 {
2186 "type" : "runtime_data",
2187 "value" : 3
2188 }
2189 ],
2190 "source_info" : {
2191 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002192 "line" : 64,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002193 "column" : 8,
2194 "source_fragment" : "hdr.mpls.label = label; ..."
2195 }
2196 },
2197 {
2198 "op" : "assign",
2199 "parameters" : [
2200 {
2201 "type" : "field",
2202 "value" : ["mpls", "tc"]
2203 },
2204 {
Yi Tseng1d842672017-11-28 16:06:52 -08002205 "type" : "hexstr",
2206 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002207 }
2208 ],
2209 "source_info" : {
2210 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002211 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002212 "column" : 8,
2213 "source_fragment" : "hdr.mpls.tc = tc; ..."
2214 }
2215 },
2216 {
2217 "op" : "assign",
2218 "parameters" : [
2219 {
2220 "type" : "field",
2221 "value" : ["mpls", "bos"]
2222 },
2223 {
2224 "type" : "hexstr",
2225 "value" : "0x01"
2226 }
2227 ],
2228 "source_info" : {
2229 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002230 "line" : 66,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002231 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002232 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002233 }
2234 },
2235 {
2236 "op" : "assign",
2237 "parameters" : [
2238 {
2239 "type" : "field",
2240 "value" : ["mpls", "ttl"]
2241 },
2242 {
2243 "type" : "hexstr",
2244 "value" : "0x40"
2245 }
2246 ],
2247 "source_info" : {
2248 "filename" : "./include/control/../header.p4",
2249 "line" : 19,
2250 "column" : 32,
2251 "source_fragment" : "64; ..."
2252 }
2253 }
2254 ]
2255 },
2256 {
Yi Tsengbe342052017-11-03 10:21:23 -07002257 "name" : "act",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002258 "id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07002259 "runtime_data" : [],
2260 "primitives" : [
2261 {
2262 "op" : "assign",
2263 "parameters" : [
2264 {
2265 "type" : "field",
2266 "value" : ["standard_metadata", "egress_spec"]
2267 },
2268 {
2269 "type" : "field",
2270 "value" : ["packet_out", "egress_port"]
2271 }
2272 ],
2273 "source_info" : {
2274 "filename" : "./include/control/packetio.p4",
2275 "line" : 26,
2276 "column" : 12,
2277 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2278 }
Yi Tseng1d842672017-11-28 16:06:52 -08002279 },
2280 {
2281 "op" : "remove_header",
2282 "parameters" : [
2283 {
2284 "type" : "header",
2285 "value" : "packet_out"
2286 }
2287 ],
2288 "source_info" : {
2289 "filename" : "./include/control/packetio.p4",
2290 "line" : 27,
2291 "column" : 12,
2292 "source_fragment" : "hdr.packet_out.setInvalid()"
2293 }
Yi Tsengbe342052017-11-03 10:21:23 -07002294 }
2295 ]
2296 },
2297 {
2298 "name" : "act_0",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002299 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002300 "runtime_data" : [],
2301 "primitives" : [
2302 {
2303 "op" : "assign",
2304 "parameters" : [
2305 {
2306 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002307 "value" : ["ethernet", "ether_type"]
2308 },
2309 {
2310 "type" : "hexstr",
2311 "value" : "0x0800"
2312 }
2313 ],
2314 "source_info" : {
2315 "filename" : "./include/control/../define.p4",
2316 "line" : 35,
2317 "column" : 31,
2318 "source_fragment" : "0x0800; ..."
2319 }
2320 },
2321 {
2322 "op" : "assign",
2323 "parameters" : [
2324 {
2325 "type" : "field",
2326 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2327 },
2328 {
2329 "type" : "hexstr",
2330 "value" : "0x0800"
2331 }
2332 ],
2333 "source_info" : {
2334 "filename" : "./include/control/../define.p4",
2335 "line" : 35,
2336 "column" : 31,
2337 "source_fragment" : "0x0800; ..."
2338 }
2339 }
2340 ]
2341 },
2342 {
2343 "name" : "act_1",
2344 "id" : 33,
2345 "runtime_data" : [],
2346 "primitives" : [
2347 {
2348 "op" : "assign",
2349 "parameters" : [
2350 {
2351 "type" : "field",
2352 "value" : ["ethernet", "ether_type"]
2353 },
2354 {
2355 "type" : "hexstr",
2356 "value" : "0x86dd"
2357 }
2358 ],
2359 "source_info" : {
2360 "filename" : "./include/control/../define.p4",
2361 "line" : 36,
2362 "column" : 31,
2363 "source_fragment" : "0x86dd; ..."
2364 }
2365 },
2366 {
2367 "op" : "assign",
2368 "parameters" : [
2369 {
2370 "type" : "field",
2371 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2372 },
2373 {
2374 "type" : "hexstr",
2375 "value" : "0x86dd"
2376 }
2377 ],
2378 "source_info" : {
2379 "filename" : "./include/control/../define.p4",
2380 "line" : 36,
2381 "column" : 31,
2382 "source_fragment" : "0x86dd; ..."
2383 }
2384 }
2385 ]
2386 },
2387 {
2388 "name" : "act_2",
2389 "id" : 34,
2390 "runtime_data" : [],
2391 "primitives" : [
2392 {
2393 "op" : "assign",
2394 "parameters" : [
2395 {
2396 "type" : "field",
2397 "value" : ["scalars", "next_tmp_0"]
2398 },
2399 {
2400 "type" : "expression",
2401 "value" : {
2402 "type" : "expression",
2403 "value" : {
2404 "op" : "b2d",
2405 "left" : null,
2406 "right" : {
2407 "type" : "bool",
2408 "value" : true
2409 }
2410 }
2411 }
2412 }
2413 ]
2414 }
2415 ]
2416 },
2417 {
2418 "name" : "act_3",
2419 "id" : 35,
2420 "runtime_data" : [],
2421 "primitives" : [
2422 {
2423 "op" : "assign",
2424 "parameters" : [
2425 {
2426 "type" : "field",
2427 "value" : ["scalars", "next_tmp_0"]
2428 },
2429 {
2430 "type" : "expression",
2431 "value" : {
2432 "type" : "expression",
2433 "value" : {
2434 "op" : "b2d",
2435 "left" : null,
2436 "right" : {
2437 "type" : "bool",
2438 "value" : false
2439 }
2440 }
2441 }
2442 }
2443 ]
2444 }
2445 ]
2446 },
2447 {
2448 "name" : "act_4",
2449 "id" : 36,
2450 "runtime_data" : [],
2451 "primitives" : [
2452 {
2453 "op" : "assign",
2454 "parameters" : [
2455 {
2456 "type" : "field",
2457 "value" : ["ipv4", "ttl"]
2458 },
2459 {
2460 "type" : "expression",
2461 "value" : {
2462 "type" : "expression",
2463 "value" : {
2464 "op" : "&",
2465 "left" : {
2466 "type" : "expression",
2467 "value" : {
2468 "op" : "+",
2469 "left" : {
2470 "type" : "field",
2471 "value" : ["ipv4", "ttl"]
2472 },
2473 "right" : {
2474 "type" : "hexstr",
2475 "value" : "0xff"
2476 }
2477 }
2478 },
2479 "right" : {
2480 "type" : "hexstr",
2481 "value" : "0xff"
2482 }
2483 }
2484 }
2485 }
2486 ],
2487 "source_info" : {
2488 "filename" : "./include/control/next.p4",
2489 "line" : 133,
2490 "column" : 20,
2491 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2492 }
2493 }
2494 ]
2495 },
2496 {
2497 "name" : "act_5",
2498 "id" : 37,
2499 "runtime_data" : [],
2500 "primitives" : [
2501 {
2502 "op" : "assign",
2503 "parameters" : [
2504 {
2505 "type" : "field",
2506 "value" : ["ipv6", "hop_limit"]
2507 },
2508 {
2509 "type" : "expression",
2510 "value" : {
2511 "type" : "expression",
2512 "value" : {
2513 "op" : "&",
2514 "left" : {
2515 "type" : "expression",
2516 "value" : {
2517 "op" : "+",
2518 "left" : {
2519 "type" : "field",
2520 "value" : ["ipv6", "hop_limit"]
2521 },
2522 "right" : {
2523 "type" : "hexstr",
2524 "value" : "0xff"
2525 }
2526 }
2527 },
2528 "right" : {
2529 "type" : "hexstr",
2530 "value" : "0xff"
2531 }
2532 }
2533 }
2534 }
2535 ],
2536 "source_info" : {
2537 "filename" : "./include/control/next.p4",
2538 "line" : 136,
2539 "column" : 20,
2540 "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
2541 }
2542 }
2543 ]
2544 },
2545 {
2546 "name" : "act_6",
2547 "id" : 38,
2548 "runtime_data" : [],
2549 "primitives" : [
2550 {
2551 "op" : "assign",
2552 "parameters" : [
2553 {
2554 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002555 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002556 },
2557 {
2558 "type" : "expression",
2559 "value" : {
2560 "type" : "expression",
2561 "value" : {
2562 "op" : "&",
2563 "left" : {
2564 "type" : "field",
2565 "value" : ["standard_metadata", "egress_spec"]
2566 },
2567 "right" : {
2568 "type" : "hexstr",
2569 "value" : "0xffffffff"
2570 }
2571 }
2572 }
2573 }
2574 ]
2575 },
2576 {
2577 "op" : "count",
2578 "parameters" : [
2579 {
2580 "type" : "counter_array",
2581 "value" : "port_counters_control.egress_port_counter"
2582 },
2583 {
2584 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002585 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002586 }
2587 ],
2588 "source_info" : {
2589 "filename" : "./include/control/port_counter.p4",
2590 "line" : 28,
2591 "column" : 12,
2592 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2593 }
2594 }
2595 ]
2596 },
2597 {
Yi Tseng1d842672017-11-28 16:06:52 -08002598 "name" : "act_7",
2599 "id" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07002600 "runtime_data" : [],
2601 "primitives" : [
2602 {
2603 "op" : "assign",
2604 "parameters" : [
2605 {
2606 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002607 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002608 },
2609 {
2610 "type" : "expression",
2611 "value" : {
2612 "type" : "expression",
2613 "value" : {
2614 "op" : "&",
2615 "left" : {
2616 "type" : "field",
2617 "value" : ["standard_metadata", "ingress_port"]
2618 },
2619 "right" : {
2620 "type" : "hexstr",
2621 "value" : "0xffffffff"
2622 }
2623 }
2624 }
2625 }
2626 ]
2627 },
2628 {
2629 "op" : "count",
2630 "parameters" : [
2631 {
2632 "type" : "counter_array",
2633 "value" : "port_counters_control.ingress_port_counter"
2634 },
2635 {
2636 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002637 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002638 }
2639 ],
2640 "source_info" : {
2641 "filename" : "./include/control/port_counter.p4",
2642 "line" : 31,
2643 "column" : 12,
2644 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2645 }
2646 }
2647 ]
2648 },
2649 {
Yi Tseng1d842672017-11-28 16:06:52 -08002650 "name" : "act_8",
2651 "id" : 40,
2652 "runtime_data" : [],
2653 "primitives" : [
2654 {
2655 "op" : "assign",
2656 "parameters" : [
2657 {
2658 "type" : "field",
2659 "value" : ["ethernet", "ether_type"]
2660 },
2661 {
2662 "type" : "hexstr",
2663 "value" : "0x8847"
2664 }
2665 ],
2666 "source_info" : {
2667 "filename" : "./include/control/../define.p4",
2668 "line" : 33,
2669 "column" : 31,
2670 "source_fragment" : "0x8847; ..."
2671 }
2672 }
2673 ]
2674 },
2675 {
2676 "name" : "act_9",
2677 "id" : 41,
2678 "runtime_data" : [],
2679 "primitives" : [
2680 {
2681 "op" : "assign",
2682 "parameters" : [
2683 {
2684 "type" : "field",
2685 "value" : ["ethernet", "ether_type"]
2686 },
2687 {
2688 "type" : "field",
2689 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2690 }
2691 ],
2692 "source_info" : {
2693 "filename" : "./include/control/next.p4",
2694 "line" : 156,
2695 "column" : 16,
2696 "source_fragment" : "hdr.ethernet.ether_type = fabric_metadata.original_ether_type"
2697 }
2698 }
2699 ]
2700 },
2701 {
2702 "name" : "act_10",
2703 "id" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07002704 "runtime_data" : [],
2705 "primitives" : [
2706 {
2707 "op" : "remove_header",
2708 "parameters" : [
2709 {
2710 "type" : "header",
2711 "value" : "vlan_tag"
2712 }
2713 ],
2714 "source_info" : {
2715 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002716 "line" : 158,
Yi Tsengbe342052017-11-03 10:21:23 -07002717 "column" : 12,
2718 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2719 }
2720 }
2721 ]
2722 },
2723 {
Yi Tseng1d842672017-11-28 16:06:52 -08002724 "name" : "act_11",
2725 "id" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07002726 "runtime_data" : [],
2727 "primitives" : [
2728 {
2729 "op" : "add_header",
2730 "parameters" : [
2731 {
2732 "type" : "header",
2733 "value" : "packet_in"
2734 }
2735 ],
2736 "source_info" : {
2737 "filename" : "./include/control/packetio.p4",
2738 "line" : 39,
2739 "column" : 12,
2740 "source_fragment" : "hdr.packet_in.setValid()"
2741 }
2742 },
2743 {
2744 "op" : "assign",
2745 "parameters" : [
2746 {
2747 "type" : "field",
2748 "value" : ["packet_in", "ingress_port"]
2749 },
2750 {
2751 "type" : "field",
2752 "value" : ["standard_metadata", "ingress_port"]
2753 }
2754 ],
2755 "source_info" : {
2756 "filename" : "./include/control/packetio.p4",
2757 "line" : 40,
2758 "column" : 12,
2759 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2760 }
2761 }
2762 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002763 }
2764 ],
2765 "pipelines" : [
2766 {
2767 "name" : "ingress",
2768 "id" : 0,
2769 "source_info" : {
2770 "filename" : "fabric.p4",
2771 "line" : 29,
2772 "column" : 8,
2773 "source_fragment" : "FabricIngress"
2774 },
2775 "init_table" : "node_2",
2776 "tables" : [
2777 {
2778 "name" : "tbl_act",
2779 "id" : 0,
2780 "key" : [],
2781 "match_type" : "exact",
2782 "type" : "simple",
2783 "max_size" : 1024,
2784 "with_counters" : false,
2785 "support_timeout" : false,
2786 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08002787 "action_ids" : [31],
Yi Tsengbe342052017-11-03 10:21:23 -07002788 "actions" : ["act"],
2789 "base_default_next" : null,
2790 "next_tables" : {
2791 "act" : null
2792 },
2793 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08002794 "action_id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07002795 "action_const" : true,
2796 "action_data" : [],
2797 "action_entry_const" : true
2798 }
2799 },
2800 {
2801 "name" : "filtering.ingress_port_vlan",
2802 "id" : 1,
2803 "source_info" : {
2804 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002805 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07002806 "column" : 10,
2807 "source_fragment" : "ingress_port_vlan"
2808 },
2809 "key" : [
2810 {
2811 "match_type" : "exact",
2812 "target" : ["standard_metadata", "ingress_port"],
2813 "mask" : null
2814 },
2815 {
2816 "match_type" : "exact",
2817 "target" : ["vlan_tag", "$valid$"],
2818 "mask" : null
2819 },
2820 {
2821 "match_type" : "ternary",
2822 "target" : ["vlan_tag", "vlan_id"],
2823 "mask" : null
2824 }
2825 ],
2826 "match_type" : "ternary",
2827 "type" : "simple",
2828 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08002829 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07002830 "support_timeout" : false,
2831 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08002832 "action_ids" : [13, 12, 0, 11],
2833 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "filtering.drop"],
Yi Tsengbe342052017-11-03 10:21:23 -07002834 "base_default_next" : "filtering.fwd_classifier",
2835 "next_tables" : {
2836 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
2837 "filtering.set_vlan" : "filtering.fwd_classifier",
2838 "nop" : "filtering.fwd_classifier",
Yi Tseng1d842672017-11-28 16:06:52 -08002839 "filtering.drop" : "filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002840 },
2841 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08002842 "action_id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07002843 "action_const" : true,
2844 "action_data" : [],
2845 "action_entry_const" : true
2846 }
2847 },
2848 {
2849 "name" : "filtering.fwd_classifier",
2850 "id" : 2,
2851 "source_info" : {
2852 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002853 "line" : 72,
Yi Tsengbe342052017-11-03 10:21:23 -07002854 "column" : 10,
2855 "source_fragment" : "fwd_classifier"
2856 },
2857 "key" : [
2858 {
2859 "match_type" : "exact",
2860 "target" : ["standard_metadata", "ingress_port"],
2861 "mask" : null
2862 },
2863 {
2864 "match_type" : "exact",
2865 "target" : ["ethernet", "dst_addr"],
2866 "mask" : null
2867 },
2868 {
2869 "match_type" : "exact",
Yi Tseng1d842672017-11-28 16:06:52 -08002870 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002871 "mask" : null
2872 }
2873 ],
2874 "match_type" : "exact",
2875 "type" : "simple",
2876 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08002877 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07002878 "support_timeout" : false,
2879 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08002880 "action_ids" : [14],
Yi Tsengbe342052017-11-03 10:21:23 -07002881 "actions" : ["filtering.set_forwarding_type"],
2882 "base_default_next" : "node_6",
2883 "next_tables" : {
2884 "filtering.set_forwarding_type" : "node_6"
2885 },
2886 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08002887 "action_id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07002888 "action_const" : true,
2889 "action_data" : ["0x0"],
2890 "action_entry_const" : true
2891 }
2892 },
2893 {
2894 "name" : "forwarding.bridging",
2895 "id" : 3,
2896 "source_info" : {
2897 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002898 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07002899 "column" : 10,
2900 "source_fragment" : "bridging"
2901 },
2902 "key" : [
2903 {
2904 "match_type" : "exact",
2905 "target" : ["vlan_tag", "vlan_id"],
2906 "mask" : null
2907 },
2908 {
2909 "match_type" : "ternary",
2910 "target" : ["ethernet", "dst_addr"],
2911 "mask" : null
2912 }
2913 ],
2914 "match_type" : "ternary",
2915 "type" : "simple",
2916 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08002917 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07002918 "support_timeout" : false,
2919 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08002920 "action_ids" : [16, 2],
2921 "actions" : ["forwarding.set_next_id", "NoAction"],
2922 "base_default_next" : "forwarding.acl",
2923 "next_tables" : {
2924 "forwarding.set_next_id" : "forwarding.acl",
2925 "NoAction" : "forwarding.acl"
2926 },
2927 "default_entry" : {
2928 "action_id" : 2,
2929 "action_const" : false,
2930 "action_data" : [],
2931 "action_entry_const" : false
2932 }
2933 },
2934 {
2935 "name" : "forwarding.mpls",
2936 "id" : 4,
2937 "source_info" : {
2938 "filename" : "./include/control/forwarding.p4",
2939 "line" : 58,
2940 "column" : 10,
2941 "source_fragment" : "mpls"
2942 },
2943 "key" : [
2944 {
2945 "match_type" : "exact",
2946 "target" : ["mpls", "label"],
2947 "mask" : null
2948 }
2949 ],
2950 "match_type" : "exact",
2951 "type" : "simple",
2952 "max_size" : 1024,
2953 "with_counters" : false,
2954 "support_timeout" : false,
2955 "direct_meters" : null,
2956 "action_ids" : [22, 3],
2957 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
2958 "base_default_next" : "node_10",
2959 "next_tables" : {
2960 "forwarding.pop_mpls_and_next" : "node_10",
2961 "NoAction" : "node_10"
2962 },
2963 "default_entry" : {
2964 "action_id" : 3,
2965 "action_const" : false,
2966 "action_data" : [],
2967 "action_entry_const" : false
2968 }
2969 },
2970 {
2971 "name" : "tbl_act_0",
2972 "id" : 5,
2973 "key" : [],
2974 "match_type" : "exact",
2975 "type" : "simple",
2976 "max_size" : 1024,
2977 "with_counters" : false,
2978 "support_timeout" : false,
2979 "direct_meters" : null,
2980 "action_ids" : [32],
2981 "actions" : ["act_0"],
2982 "base_default_next" : "forwarding.acl",
2983 "next_tables" : {
2984 "act_0" : "forwarding.acl"
2985 },
2986 "default_entry" : {
2987 "action_id" : 32,
2988 "action_const" : true,
2989 "action_data" : [],
2990 "action_entry_const" : true
2991 }
2992 },
2993 {
2994 "name" : "tbl_act_1",
2995 "id" : 6,
2996 "key" : [],
2997 "match_type" : "exact",
2998 "type" : "simple",
2999 "max_size" : 1024,
3000 "with_counters" : false,
3001 "support_timeout" : false,
3002 "direct_meters" : null,
3003 "action_ids" : [33],
3004 "actions" : ["act_1"],
3005 "base_default_next" : "forwarding.acl",
3006 "next_tables" : {
3007 "act_1" : "forwarding.acl"
3008 },
3009 "default_entry" : {
3010 "action_id" : 33,
3011 "action_const" : true,
3012 "action_data" : [],
3013 "action_entry_const" : true
3014 }
3015 },
3016 {
3017 "name" : "forwarding.unicast_v4",
3018 "id" : 7,
3019 "source_info" : {
3020 "filename" : "./include/control/forwarding.p4",
3021 "line" : 68,
3022 "column" : 10,
3023 "source_fragment" : "unicast_v4"
3024 },
3025 "key" : [
3026 {
3027 "match_type" : "lpm",
3028 "target" : ["ipv4", "dst_addr"],
3029 "mask" : null
3030 }
3031 ],
3032 "match_type" : "lpm",
3033 "type" : "simple",
3034 "max_size" : 1024,
3035 "with_counters" : false,
3036 "support_timeout" : false,
3037 "direct_meters" : null,
3038 "action_ids" : [17, 4],
Yi Tsengbe342052017-11-03 10:21:23 -07003039 "actions" : ["forwarding.set_next_id", "NoAction"],
3040 "base_default_next" : "forwarding.acl",
3041 "next_tables" : {
3042 "forwarding.set_next_id" : "forwarding.acl",
3043 "NoAction" : "forwarding.acl"
3044 },
3045 "default_entry" : {
3046 "action_id" : 4,
3047 "action_const" : false,
3048 "action_data" : [],
3049 "action_entry_const" : false
3050 }
3051 },
3052 {
Yi Tsengbe342052017-11-03 10:21:23 -07003053 "name" : "forwarding.multicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08003054 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003055 "source_info" : {
3056 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003057 "line" : 78,
Yi Tsengbe342052017-11-03 10:21:23 -07003058 "column" : 10,
3059 "source_fragment" : "multicast_v4"
3060 },
3061 "key" : [
3062 {
3063 "match_type" : "exact",
3064 "target" : ["vlan_tag", "vlan_id"],
3065 "mask" : null
3066 },
3067 {
3068 "match_type" : "lpm",
3069 "target" : ["ipv4", "dst_addr"],
3070 "mask" : null
3071 }
3072 ],
3073 "match_type" : "lpm",
3074 "type" : "simple",
3075 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003076 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003077 "support_timeout" : false,
3078 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003079 "action_ids" : [18, 5],
Yi Tsengbe342052017-11-03 10:21:23 -07003080 "actions" : ["forwarding.set_next_id", "NoAction"],
3081 "base_default_next" : "forwarding.acl",
3082 "next_tables" : {
3083 "forwarding.set_next_id" : "forwarding.acl",
3084 "NoAction" : "forwarding.acl"
3085 },
3086 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003087 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003088 "action_const" : false,
3089 "action_data" : [],
3090 "action_entry_const" : false
3091 }
3092 },
3093 {
3094 "name" : "forwarding.unicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08003095 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003096 "source_info" : {
3097 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003098 "line" : 89,
Yi Tsengbe342052017-11-03 10:21:23 -07003099 "column" : 10,
3100 "source_fragment" : "unicast_v6"
3101 },
3102 "key" : [
3103 {
3104 "match_type" : "lpm",
3105 "target" : ["ipv6", "dst_addr"],
3106 "mask" : null
3107 }
3108 ],
3109 "match_type" : "lpm",
3110 "type" : "simple",
3111 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003112 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003113 "support_timeout" : false,
3114 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003115 "action_ids" : [19, 6],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003116 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07003117 "base_default_next" : "forwarding.acl",
3118 "next_tables" : {
3119 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003120 "NoAction" : "forwarding.acl"
3121 },
3122 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003123 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003124 "action_const" : false,
3125 "action_data" : [],
3126 "action_entry_const" : false
3127 }
3128 },
3129 {
3130 "name" : "forwarding.multicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08003131 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003132 "source_info" : {
3133 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003134 "line" : 99,
Yi Tsengbe342052017-11-03 10:21:23 -07003135 "column" : 10,
3136 "source_fragment" : "multicast_v6"
3137 },
3138 "key" : [
3139 {
3140 "match_type" : "exact",
3141 "target" : ["vlan_tag", "vlan_id"],
3142 "mask" : null
3143 },
3144 {
3145 "match_type" : "lpm",
3146 "target" : ["ipv6", "dst_addr"],
3147 "mask" : null
3148 }
3149 ],
3150 "match_type" : "lpm",
3151 "type" : "simple",
3152 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003153 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003154 "support_timeout" : false,
3155 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003156 "action_ids" : [20, 7],
Yi Tsengbe342052017-11-03 10:21:23 -07003157 "actions" : ["forwarding.set_next_id", "NoAction"],
3158 "base_default_next" : "forwarding.acl",
3159 "next_tables" : {
3160 "forwarding.set_next_id" : "forwarding.acl",
3161 "NoAction" : "forwarding.acl"
3162 },
3163 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003164 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003165 "action_const" : false,
3166 "action_data" : [],
3167 "action_entry_const" : false
3168 }
3169 },
3170 {
3171 "name" : "forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003172 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003173 "source_info" : {
3174 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003175 "line" : 110,
Yi Tsengbe342052017-11-03 10:21:23 -07003176 "column" : 10,
3177 "source_fragment" : "acl"
3178 },
3179 "key" : [
3180 {
3181 "match_type" : "ternary",
3182 "target" : ["standard_metadata", "ingress_port"],
3183 "mask" : null
3184 },
3185 {
3186 "match_type" : "ternary",
3187 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3188 "mask" : null
3189 },
3190 {
3191 "match_type" : "ternary",
Yi Tseng1d842672017-11-28 16:06:52 -08003192 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3193 "mask" : null
3194 },
3195 {
3196 "match_type" : "ternary",
3197 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3198 "mask" : null
3199 },
3200 {
3201 "match_type" : "ternary",
Yi Tsengc6844f52017-12-19 11:58:25 -08003202 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
3203 "mask" : null
3204 },
3205 {
3206 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003207 "target" : ["ethernet", "dst_addr"],
3208 "mask" : null
3209 },
3210 {
3211 "match_type" : "ternary",
3212 "target" : ["ethernet", "src_addr"],
3213 "mask" : null
3214 },
3215 {
3216 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003217 "target" : ["vlan_tag", "vlan_id"],
3218 "mask" : null
3219 },
3220 {
3221 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003222 "target" : ["ipv4", "src_addr"],
3223 "mask" : null
3224 },
3225 {
3226 "match_type" : "ternary",
3227 "target" : ["ipv4", "dst_addr"],
3228 "mask" : null
3229 },
3230 {
3231 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003232 "target" : ["icmp", "icmp_type"],
3233 "mask" : null
3234 },
3235 {
3236 "match_type" : "ternary",
3237 "target" : ["icmp", "icmp_code"],
3238 "mask" : null
3239 }
3240 ],
3241 "match_type" : "ternary",
3242 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003243 "max_size" : 256,
3244 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003245 "support_timeout" : false,
3246 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003247 "action_ids" : [21, 23, 15, 1],
3248 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "forwarding.drop", "nop"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003249 "base_default_next" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07003250 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003251 "forwarding.set_next_id" : "next.simple",
3252 "forwarding.duplicate_to_controller" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003253 "forwarding.drop" : "next.simple",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003254 "nop" : "next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07003255 },
3256 "default_entry" : {
3257 "action_id" : 1,
3258 "action_const" : true,
3259 "action_data" : [],
3260 "action_entry_const" : true
3261 }
3262 },
3263 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003264 "name" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003265 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003266 "source_info" : {
3267 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003268 "line" : 86,
Yi Tsengbe342052017-11-03 10:21:23 -07003269 "column" : 10,
3270 "source_fragment" : "simple"
3271 },
3272 "key" : [
3273 {
3274 "match_type" : "exact",
3275 "target" : ["scalars", "fabric_metadata_t.next_id"],
3276 "mask" : null
3277 }
3278 ],
3279 "match_type" : "exact",
3280 "type" : "simple",
3281 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003282 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003283 "support_timeout" : false,
3284 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003285 "action_ids" : [24, 25, 26, 8],
Yi Tsengbe342052017-11-03 10:21:23 -07003286 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003287 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003288 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003289 "__HIT__" : "tbl_act_2",
3290 "__MISS__" : "tbl_act_3"
Yi Tsengbe342052017-11-03 10:21:23 -07003291 },
3292 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003293 "action_id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003294 "action_const" : false,
3295 "action_data" : [],
3296 "action_entry_const" : false
3297 }
3298 },
3299 {
Yi Tseng1d842672017-11-28 16:06:52 -08003300 "name" : "tbl_act_2",
3301 "id" : 13,
3302 "key" : [],
3303 "match_type" : "exact",
3304 "type" : "simple",
3305 "max_size" : 1024,
3306 "with_counters" : false,
3307 "support_timeout" : false,
3308 "direct_meters" : null,
3309 "action_ids" : [34],
3310 "actions" : ["act_2"],
3311 "base_default_next" : "node_25",
3312 "next_tables" : {
3313 "act_2" : "node_25"
3314 },
3315 "default_entry" : {
3316 "action_id" : 34,
3317 "action_const" : true,
3318 "action_data" : [],
3319 "action_entry_const" : true
3320 }
3321 },
3322 {
3323 "name" : "tbl_act_3",
3324 "id" : 14,
3325 "key" : [],
3326 "match_type" : "exact",
3327 "type" : "simple",
3328 "max_size" : 1024,
3329 "with_counters" : false,
3330 "support_timeout" : false,
3331 "direct_meters" : null,
3332 "action_ids" : [35],
3333 "actions" : ["act_3"],
3334 "base_default_next" : "node_25",
3335 "next_tables" : {
3336 "act_3" : "node_25"
3337 },
3338 "default_entry" : {
3339 "action_id" : 35,
3340 "action_const" : true,
3341 "action_data" : [],
3342 "action_entry_const" : true
3343 }
3344 },
3345 {
3346 "name" : "tbl_act_4",
3347 "id" : 15,
3348 "key" : [],
3349 "match_type" : "exact",
3350 "type" : "simple",
3351 "max_size" : 1024,
3352 "with_counters" : false,
3353 "support_timeout" : false,
3354 "direct_meters" : null,
3355 "action_ids" : [36],
3356 "actions" : ["act_4"],
3357 "base_default_next" : "next.hashed",
3358 "next_tables" : {
3359 "act_4" : "next.hashed"
3360 },
3361 "default_entry" : {
3362 "action_id" : 36,
3363 "action_const" : true,
3364 "action_data" : [],
3365 "action_entry_const" : true
3366 }
3367 },
3368 {
3369 "name" : "tbl_act_5",
3370 "id" : 16,
3371 "key" : [],
3372 "match_type" : "exact",
3373 "type" : "simple",
3374 "max_size" : 1024,
3375 "with_counters" : false,
3376 "support_timeout" : false,
3377 "direct_meters" : null,
3378 "action_ids" : [37],
3379 "actions" : ["act_5"],
3380 "base_default_next" : "next.hashed",
3381 "next_tables" : {
3382 "act_5" : "next.hashed"
3383 },
3384 "default_entry" : {
3385 "action_id" : 37,
3386 "action_const" : true,
3387 "action_data" : [],
3388 "action_entry_const" : true
3389 }
3390 },
3391 {
Yi Tsengbe342052017-11-03 10:21:23 -07003392 "name" : "next.hashed",
Yi Tseng1d842672017-11-28 16:06:52 -08003393 "id" : 17,
Yi Tsengbe342052017-11-03 10:21:23 -07003394 "source_info" : {
3395 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003396 "line" : 98,
Yi Tsengbe342052017-11-03 10:21:23 -07003397 "column" : 10,
3398 "source_fragment" : "hashed"
3399 },
3400 "key" : [
3401 {
3402 "match_type" : "exact",
3403 "target" : ["scalars", "fabric_metadata_t.next_id"],
3404 "mask" : null
3405 }
3406 ],
3407 "match_type" : "exact",
3408 "type" : "indirect_ws",
3409 "action_profile" : "next.ecmp_selector",
3410 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003411 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003412 "support_timeout" : false,
3413 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003414 "action_ids" : [27, 29, 30, 9],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003415 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003416 "base_default_next" : "next.broadcast",
Yi Tsengbe342052017-11-03 10:21:23 -07003417 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003418 "next.l3_routing" : "next.broadcast",
3419 "next.mpls_routing_v4" : "next.broadcast",
3420 "next.mpls_routing_v6" : "next.broadcast",
3421 "NoAction" : "next.broadcast"
Yi Tsengbe342052017-11-03 10:21:23 -07003422 }
3423 },
3424 {
3425 "name" : "next.broadcast",
Yi Tseng1d842672017-11-28 16:06:52 -08003426 "id" : 18,
Yi Tsengbe342052017-11-03 10:21:23 -07003427 "source_info" : {
3428 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003429 "line" : 120,
Yi Tsengbe342052017-11-03 10:21:23 -07003430 "column" : 10,
3431 "source_fragment" : "broadcast"
3432 },
3433 "key" : [
3434 {
3435 "match_type" : "exact",
3436 "target" : ["scalars", "fabric_metadata_t.next_id"],
3437 "mask" : null
3438 }
3439 ],
3440 "match_type" : "exact",
3441 "type" : "simple",
3442 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003443 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003444 "support_timeout" : false,
3445 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003446 "action_ids" : [28, 10],
Yi Tsengbe342052017-11-03 10:21:23 -07003447 "actions" : ["next.set_mcast_group", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003448 "base_default_next" : "node_33",
Yi Tsengbe342052017-11-03 10:21:23 -07003449 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003450 "next.set_mcast_group" : "node_33",
3451 "NoAction" : "node_33"
Yi Tsengbe342052017-11-03 10:21:23 -07003452 },
3453 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003454 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003455 "action_const" : false,
3456 "action_data" : [],
3457 "action_entry_const" : false
3458 }
3459 },
3460 {
Yi Tseng1d842672017-11-28 16:06:52 -08003461 "name" : "tbl_act_6",
3462 "id" : 19,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003463 "key" : [],
3464 "match_type" : "exact",
3465 "type" : "simple",
3466 "max_size" : 1024,
3467 "with_counters" : false,
3468 "support_timeout" : false,
3469 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003470 "action_ids" : [38],
3471 "actions" : ["act_6"],
3472 "base_default_next" : "node_35",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003473 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003474 "act_6" : "node_35"
Yi Tsengf55eaa82017-11-29 15:51:28 -08003475 },
3476 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003477 "action_id" : 38,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003478 "action_const" : true,
3479 "action_data" : [],
3480 "action_entry_const" : true
3481 }
3482 },
3483 {
Yi Tseng1d842672017-11-28 16:06:52 -08003484 "name" : "tbl_act_7",
3485 "id" : 20,
Yi Tsengbe342052017-11-03 10:21:23 -07003486 "key" : [],
3487 "match_type" : "exact",
3488 "type" : "simple",
3489 "max_size" : 1024,
3490 "with_counters" : false,
3491 "support_timeout" : false,
3492 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003493 "action_ids" : [39],
3494 "actions" : ["act_7"],
Yi Tsengbe342052017-11-03 10:21:23 -07003495 "base_default_next" : null,
3496 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003497 "act_7" : null
Yi Tsengbe342052017-11-03 10:21:23 -07003498 },
3499 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003500 "action_id" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07003501 "action_const" : true,
3502 "action_data" : [],
3503 "action_entry_const" : true
3504 }
3505 }
3506 ],
3507 "action_profiles" : [
3508 {
3509 "name" : "next.ecmp_selector",
3510 "id" : 0,
3511 "max_size" : 64,
3512 "selector" : {
3513 "algo" : "crc16",
3514 "input" : [
3515 {
3516 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003517 "value" : ["ethernet", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003518 },
3519 {
3520 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003521 "value" : ["ethernet", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003522 },
3523 {
3524 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003525 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003526 },
3527 {
3528 "type" : "field",
3529 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3530 },
3531 {
3532 "type" : "field",
3533 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3534 }
3535 ]
3536 }
3537 }
3538 ],
3539 "conditionals" : [
3540 {
3541 "name" : "node_2",
3542 "id" : 0,
3543 "source_info" : {
3544 "filename" : "./include/control/packetio.p4",
3545 "line" : 25,
3546 "column" : 12,
3547 "source_fragment" : "hdr.packet_out.isValid()"
3548 },
3549 "expression" : {
3550 "type" : "expression",
3551 "value" : {
3552 "op" : "==",
3553 "left" : {
3554 "type" : "field",
3555 "value" : ["packet_out", "$valid$"]
3556 },
3557 "right" : {
3558 "type" : "hexstr",
3559 "value" : "0x01"
3560 }
3561 }
3562 },
3563 "true_next" : "tbl_act",
3564 "false_next" : "filtering.ingress_port_vlan"
3565 },
3566 {
3567 "name" : "node_6",
3568 "id" : 1,
3569 "source_info" : {
3570 "filename" : "./include/control/forwarding.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -08003571 "line" : 139,
Yi Tsengbe342052017-11-03 10:21:23 -07003572 "column" : 11,
3573 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3574 },
3575 "expression" : {
3576 "type" : "expression",
3577 "value" : {
3578 "op" : "==",
3579 "left" : {
3580 "type" : "field",
3581 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3582 },
3583 "right" : {
3584 "type" : "hexstr",
3585 "value" : "0x00"
3586 }
3587 }
3588 },
3589 "true_next" : "forwarding.bridging",
3590 "false_next" : "node_8"
3591 },
3592 {
3593 "name" : "node_8",
3594 "id" : 2,
3595 "source_info" : {
3596 "filename" : "./include/control/forwarding.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -08003597 "line" : 140,
Yi Tsengbe342052017-11-03 10:21:23 -07003598 "column" : 17,
3599 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3600 },
3601 "expression" : {
3602 "type" : "expression",
3603 "value" : {
3604 "op" : "==",
3605 "left" : {
3606 "type" : "field",
3607 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3608 },
3609 "right" : {
3610 "type" : "hexstr",
3611 "value" : "0x01"
3612 }
3613 }
3614 },
3615 "true_next" : "forwarding.mpls",
Yi Tseng1d842672017-11-28 16:06:52 -08003616 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003617 },
3618 {
3619 "name" : "node_10",
3620 "id" : 3,
3621 "source_info" : {
3622 "filename" : "./include/control/forwarding.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -08003623 "line" : 142,
Yi Tseng1d842672017-11-28 16:06:52 -08003624 "column" : 16,
3625 "source_fragment" : "hdr.ipv4.isValid()"
3626 },
3627 "expression" : {
3628 "type" : "expression",
3629 "value" : {
3630 "op" : "==",
3631 "left" : {
3632 "type" : "field",
3633 "value" : ["ipv4", "$valid$"]
3634 },
3635 "right" : {
3636 "type" : "hexstr",
3637 "value" : "0x01"
3638 }
3639 }
3640 },
3641 "true_next" : "tbl_act_0",
3642 "false_next" : "tbl_act_1"
3643 },
3644 {
3645 "name" : "node_13",
3646 "id" : 4,
3647 "source_info" : {
3648 "filename" : "./include/control/forwarding.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -08003649 "line" : 150,
Yi Tsengbe342052017-11-03 10:21:23 -07003650 "column" : 17,
3651 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3652 },
3653 "expression" : {
3654 "type" : "expression",
3655 "value" : {
3656 "op" : "==",
3657 "left" : {
3658 "type" : "field",
3659 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3660 },
3661 "right" : {
3662 "type" : "hexstr",
3663 "value" : "0x02"
3664 }
3665 }
3666 },
3667 "true_next" : "forwarding.unicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08003668 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07003669 },
3670 {
Yi Tseng1d842672017-11-28 16:06:52 -08003671 "name" : "node_15",
3672 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003673 "source_info" : {
3674 "filename" : "./include/control/forwarding.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -08003675 "line" : 151,
Yi Tsengbe342052017-11-03 10:21:23 -07003676 "column" : 17,
3677 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
3678 },
3679 "expression" : {
3680 "type" : "expression",
3681 "value" : {
3682 "op" : "==",
3683 "left" : {
3684 "type" : "field",
3685 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3686 },
3687 "right" : {
3688 "type" : "hexstr",
3689 "value" : "0x03"
3690 }
3691 }
3692 },
3693 "true_next" : "forwarding.multicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08003694 "false_next" : "node_17"
Yi Tsengbe342052017-11-03 10:21:23 -07003695 },
3696 {
Yi Tseng1d842672017-11-28 16:06:52 -08003697 "name" : "node_17",
3698 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003699 "source_info" : {
3700 "filename" : "./include/control/forwarding.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -08003701 "line" : 152,
Yi Tsengbe342052017-11-03 10:21:23 -07003702 "column" : 17,
3703 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
3704 },
3705 "expression" : {
3706 "type" : "expression",
3707 "value" : {
3708 "op" : "==",
3709 "left" : {
3710 "type" : "field",
3711 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3712 },
3713 "right" : {
3714 "type" : "hexstr",
3715 "value" : "0x04"
3716 }
3717 }
3718 },
3719 "true_next" : "forwarding.unicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08003720 "false_next" : "node_19"
Yi Tsengbe342052017-11-03 10:21:23 -07003721 },
3722 {
Yi Tseng1d842672017-11-28 16:06:52 -08003723 "name" : "node_19",
3724 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003725 "source_info" : {
3726 "filename" : "./include/control/forwarding.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -08003727 "line" : 153,
Yi Tsengbe342052017-11-03 10:21:23 -07003728 "column" : 17,
3729 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
3730 },
3731 "expression" : {
3732 "type" : "expression",
3733 "value" : {
3734 "op" : "==",
3735 "left" : {
3736 "type" : "field",
3737 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3738 },
3739 "right" : {
3740 "type" : "hexstr",
3741 "value" : "0x05"
3742 }
3743 }
3744 },
3745 "true_next" : "forwarding.multicast_v6",
3746 "false_next" : "forwarding.acl"
3747 },
3748 {
Yi Tseng1d842672017-11-28 16:06:52 -08003749 "name" : "node_25",
3750 "id" : 8,
3751 "expression" : {
3752 "type" : "expression",
3753 "value" : {
3754 "op" : "d2b",
3755 "left" : null,
3756 "right" : {
3757 "type" : "field",
3758 "value" : ["scalars", "next_tmp_0"]
3759 }
3760 }
3761 },
3762 "true_next" : "node_26",
3763 "false_next" : "next.hashed"
3764 },
3765 {
3766 "name" : "node_26",
3767 "id" : 9,
3768 "source_info" : {
3769 "filename" : "./include/control/next.p4",
3770 "line" : 131,
3771 "column" : 17,
3772 "source_fragment" : "hdr.mpls.isValid()"
3773 },
3774 "expression" : {
3775 "type" : "expression",
3776 "value" : {
3777 "op" : "!=",
3778 "left" : {
3779 "type" : "field",
3780 "value" : ["mpls", "$valid$"]
3781 },
3782 "right" : {
3783 "type" : "hexstr",
3784 "value" : "0x01"
3785 }
3786 }
3787 },
3788 "true_next" : "node_27",
3789 "false_next" : "next.hashed"
3790 },
3791 {
3792 "name" : "node_27",
3793 "id" : 10,
3794 "source_info" : {
3795 "filename" : "./include/control/next.p4",
3796 "line" : 132,
3797 "column" : 19,
3798 "source_fragment" : "hdr.ipv4.isValid()"
3799 },
3800 "expression" : {
3801 "type" : "expression",
3802 "value" : {
3803 "op" : "==",
3804 "left" : {
3805 "type" : "field",
3806 "value" : ["ipv4", "$valid$"]
3807 },
3808 "right" : {
3809 "type" : "hexstr",
3810 "value" : "0x01"
3811 }
3812 }
3813 },
3814 "true_next" : "tbl_act_4",
3815 "false_next" : "node_29"
3816 },
3817 {
3818 "name" : "node_29",
3819 "id" : 11,
3820 "source_info" : {
3821 "filename" : "./include/control/next.p4",
3822 "line" : 135,
3823 "column" : 25,
3824 "source_fragment" : "hdr.ipv6.isValid()"
3825 },
3826 "expression" : {
3827 "type" : "expression",
3828 "value" : {
3829 "op" : "==",
3830 "left" : {
3831 "type" : "field",
3832 "value" : ["ipv6", "$valid$"]
3833 },
3834 "right" : {
3835 "type" : "hexstr",
3836 "value" : "0x01"
3837 }
3838 }
3839 },
3840 "true_next" : "tbl_act_5",
3841 "false_next" : "next.hashed"
3842 },
3843 {
3844 "name" : "node_33",
3845 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003846 "source_info" : {
3847 "filename" : "./include/control/port_counter.p4",
3848 "line" : 27,
3849 "column" : 12,
3850 "source_fragment" : "standard_metadata.egress_spec < 511"
3851 },
3852 "expression" : {
3853 "type" : "expression",
3854 "value" : {
3855 "op" : "<",
3856 "left" : {
3857 "type" : "field",
3858 "value" : ["standard_metadata", "egress_spec"]
3859 },
3860 "right" : {
3861 "type" : "hexstr",
3862 "value" : "0x01ff"
3863 }
3864 }
3865 },
Yi Tseng1d842672017-11-28 16:06:52 -08003866 "true_next" : "tbl_act_6",
3867 "false_next" : "node_35"
Yi Tsengbe342052017-11-03 10:21:23 -07003868 },
3869 {
Yi Tseng1d842672017-11-28 16:06:52 -08003870 "name" : "node_35",
3871 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07003872 "source_info" : {
3873 "filename" : "./include/control/port_counter.p4",
3874 "line" : 30,
3875 "column" : 12,
3876 "source_fragment" : "standard_metadata.ingress_port < 511"
3877 },
3878 "expression" : {
3879 "type" : "expression",
3880 "value" : {
3881 "op" : "<",
3882 "left" : {
3883 "type" : "field",
3884 "value" : ["standard_metadata", "ingress_port"]
3885 },
3886 "right" : {
3887 "type" : "hexstr",
3888 "value" : "0x01ff"
3889 }
3890 }
3891 },
3892 "false_next" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003893 "true_next" : "tbl_act_7"
Yi Tsengbe342052017-11-03 10:21:23 -07003894 }
3895 ]
3896 },
3897 {
3898 "name" : "egress",
3899 "id" : 1,
3900 "source_info" : {
3901 "filename" : "fabric.p4",
3902 "line" : 48,
3903 "column" : 8,
3904 "source_fragment" : "FabricEgress"
3905 },
Yi Tseng1d842672017-11-28 16:06:52 -08003906 "init_table" : "node_39",
Yi Tsengbe342052017-11-03 10:21:23 -07003907 "tables" : [
3908 {
Yi Tseng1d842672017-11-28 16:06:52 -08003909 "name" : "tbl_act_8",
3910 "id" : 21,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003911 "key" : [],
3912 "match_type" : "exact",
3913 "type" : "simple",
3914 "max_size" : 1024,
3915 "with_counters" : false,
3916 "support_timeout" : false,
3917 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003918 "action_ids" : [40],
3919 "actions" : ["act_8"],
3920 "base_default_next" : "tbl_act_10",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003921 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003922 "act_8" : "tbl_act_10"
Yi Tsengf55eaa82017-11-29 15:51:28 -08003923 },
3924 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003925 "action_id" : 40,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003926 "action_const" : true,
3927 "action_data" : [],
3928 "action_entry_const" : true
3929 }
3930 },
3931 {
Yi Tseng1d842672017-11-28 16:06:52 -08003932 "name" : "tbl_act_9",
3933 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07003934 "key" : [],
3935 "match_type" : "exact",
3936 "type" : "simple",
3937 "max_size" : 1024,
3938 "with_counters" : false,
3939 "support_timeout" : false,
3940 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003941 "action_ids" : [41],
3942 "actions" : ["act_9"],
3943 "base_default_next" : "tbl_act_10",
Yi Tsengbe342052017-11-03 10:21:23 -07003944 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003945 "act_9" : "tbl_act_10"
Yi Tsengbe342052017-11-03 10:21:23 -07003946 },
3947 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003948 "action_id" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07003949 "action_const" : true,
3950 "action_data" : [],
3951 "action_entry_const" : true
3952 }
3953 },
3954 {
Yi Tseng1d842672017-11-28 16:06:52 -08003955 "name" : "tbl_act_10",
3956 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07003957 "key" : [],
3958 "match_type" : "exact",
3959 "type" : "simple",
3960 "max_size" : 1024,
3961 "with_counters" : false,
3962 "support_timeout" : false,
3963 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003964 "action_ids" : [42],
3965 "actions" : ["act_10"],
3966 "base_default_next" : "node_44",
3967 "next_tables" : {
3968 "act_10" : "node_44"
3969 },
3970 "default_entry" : {
3971 "action_id" : 42,
3972 "action_const" : true,
3973 "action_data" : [],
3974 "action_entry_const" : true
3975 }
3976 },
3977 {
3978 "name" : "tbl_act_11",
3979 "id" : 24,
3980 "key" : [],
3981 "match_type" : "exact",
3982 "type" : "simple",
3983 "max_size" : 1024,
3984 "with_counters" : false,
3985 "support_timeout" : false,
3986 "direct_meters" : null,
3987 "action_ids" : [43],
3988 "actions" : ["act_11"],
Yi Tsengbe342052017-11-03 10:21:23 -07003989 "base_default_next" : null,
3990 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003991 "act_11" : null
Yi Tsengbe342052017-11-03 10:21:23 -07003992 },
3993 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003994 "action_id" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07003995 "action_const" : true,
3996 "action_data" : [],
3997 "action_entry_const" : true
3998 }
3999 }
4000 ],
4001 "action_profiles" : [],
4002 "conditionals" : [
4003 {
Yi Tseng1d842672017-11-28 16:06:52 -08004004 "name" : "node_39",
4005 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07004006 "source_info" : {
4007 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004008 "line" : 152,
Yi Tsengbe342052017-11-03 10:21:23 -07004009 "column" : 12,
4010 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
4011 },
4012 "expression" : {
4013 "type" : "expression",
4014 "value" : {
4015 "op" : "d2b",
4016 "left" : null,
4017 "right" : {
4018 "type" : "field",
4019 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
4020 }
4021 }
4022 },
Yi Tseng1d842672017-11-28 16:06:52 -08004023 "true_next" : "node_40",
4024 "false_next" : "node_44"
Yi Tsengbe342052017-11-03 10:21:23 -07004025 },
4026 {
Yi Tseng1d842672017-11-28 16:06:52 -08004027 "name" : "node_40",
4028 "id" : 15,
4029 "source_info" : {
4030 "filename" : "./include/control/next.p4",
4031 "line" : 153,
4032 "column" : 16,
4033 "source_fragment" : "hdr.mpls.isValid()"
4034 },
4035 "expression" : {
4036 "type" : "expression",
4037 "value" : {
4038 "op" : "==",
4039 "left" : {
4040 "type" : "field",
4041 "value" : ["mpls", "$valid$"]
4042 },
4043 "right" : {
4044 "type" : "hexstr",
4045 "value" : "0x01"
4046 }
4047 }
4048 },
4049 "true_next" : "tbl_act_8",
4050 "false_next" : "tbl_act_9"
4051 },
4052 {
4053 "name" : "node_44",
4054 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07004055 "source_info" : {
4056 "filename" : "./include/control/packetio.p4",
4057 "line" : 38,
4058 "column" : 12,
4059 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
4060 },
4061 "expression" : {
4062 "type" : "expression",
4063 "value" : {
4064 "op" : "==",
4065 "left" : {
4066 "type" : "field",
4067 "value" : ["standard_metadata", "egress_port"]
4068 },
4069 "right" : {
4070 "type" : "hexstr",
4071 "value" : "0x00ff"
4072 }
4073 }
4074 },
4075 "false_next" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004076 "true_next" : "tbl_act_11"
Yi Tsengbe342052017-11-03 10:21:23 -07004077 }
4078 ]
4079 }
4080 ],
4081 "checksums" : [
4082 {
4083 "name" : "cksum",
4084 "id" : 0,
4085 "target" : ["ipv4", "hdr_checksum"],
4086 "type" : "generic",
4087 "calculation" : "calc"
4088 },
4089 {
4090 "name" : "cksum_0",
4091 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07004092 "target" : ["ipv4", "hdr_checksum"],
4093 "type" : "generic",
Yi Tsengf73a5532017-11-17 15:58:57 -08004094 "calculation" : "calc_0"
Yi Tsengbe342052017-11-03 10:21:23 -07004095 }
4096 ],
4097 "force_arith" : [],
4098 "extern_instances" : [],
4099 "field_aliases" : [
4100 [
4101 "queueing_metadata.enq_timestamp",
4102 ["standard_metadata", "enq_timestamp"]
4103 ],
4104 [
4105 "queueing_metadata.enq_qdepth",
4106 ["standard_metadata", "enq_qdepth"]
4107 ],
4108 [
4109 "queueing_metadata.deq_timedelta",
4110 ["standard_metadata", "deq_timedelta"]
4111 ],
4112 [
4113 "queueing_metadata.deq_qdepth",
4114 ["standard_metadata", "deq_qdepth"]
4115 ],
4116 [
4117 "intrinsic_metadata.ingress_global_timestamp",
4118 ["standard_metadata", "ingress_global_timestamp"]
4119 ],
4120 [
4121 "intrinsic_metadata.lf_field_list",
4122 ["standard_metadata", "lf_field_list"]
4123 ],
4124 [
4125 "intrinsic_metadata.mcast_grp",
4126 ["standard_metadata", "mcast_grp"]
4127 ],
4128 [
4129 "intrinsic_metadata.resubmit_flag",
4130 ["standard_metadata", "resubmit_flag"]
4131 ],
4132 [
4133 "intrinsic_metadata.egress_rid",
4134 ["standard_metadata", "egress_rid"]
4135 ]
4136 ]
4137}