blob: 79089dc7da46443b956eff687ba8dc3095ae536b [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
2 "program" : "fabric.p4",
3 "__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" : [
12 ["tmp", 161, false],
13 ["tmp_1", 32, false],
14 ["tmp_2", 32, false],
15 ["fabric_metadata_t.fwd_type", 3, false],
16 ["fabric_metadata_t.next_id", 32, false],
17 ["fabric_metadata_t.next_type", 3, false],
18 ["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],
21 ["fabric_metadata_t.l4_dst_port", 16, false]
22 ]
23 },
24 {
25 "name" : "ipv4_t",
26 "id" : 1,
27 "fields" : [
28 ["version", 4, false],
29 ["ihl", 4, false],
30 ["diffserv", 8, false],
31 ["total_len", 16, false],
32 ["identification", 16, false],
33 ["flags", 3, false],
34 ["frag_offset", 13, false],
35 ["ttl", 8, false],
36 ["protocol", 8, false],
37 ["hdr_checksum", 16, false],
38 ["src_addr", 32, false],
39 ["dst_addr", 32, false]
40 ]
41 },
42 {
43 "name" : "ethernet_t",
44 "id" : 2,
45 "fields" : [
46 ["dst_addr", 48, false],
47 ["src_addr", 48, false],
48 ["ether_type", 16, false]
49 ]
50 },
51 {
52 "name" : "vlan_tag_t",
53 "id" : 3,
54 "fields" : [
55 ["pri", 3, false],
56 ["cfi", 1, false],
57 ["vlan_id", 12, false],
58 ["ether_type", 16, false]
59 ]
60 },
61 {
62 "name" : "mpls_t",
63 "id" : 4,
64 "fields" : [
65 ["label", 20, false],
66 ["tc", 3, false],
67 ["bos", 1, false],
68 ["ttl", 8, false]
69 ]
70 },
71 {
72 "name" : "ipv6_t",
73 "id" : 5,
74 "fields" : [
75 ["version", 4, false],
76 ["traffic_class", 8, false],
77 ["flow_label", 20, false],
78 ["payload_len", 16, false],
79 ["next_hdr", 8, false],
80 ["hop_limit", 8, false],
81 ["src_addr", 128, false],
82 ["dst_addr", 128, false]
83 ]
84 },
85 {
86 "name" : "arp_t",
87 "id" : 6,
88 "fields" : [
89 ["hw_type", 16, false],
90 ["proto_type", 16, false],
91 ["hw_addr_len", 8, false],
92 ["proto_addr_len", 8, false],
93 ["opcode", 16, false]
94 ]
95 },
96 {
97 "name" : "tcp_t",
98 "id" : 7,
99 "fields" : [
100 ["src_port", 16, false],
101 ["dst_port", 16, false],
102 ["seq_no", 32, false],
103 ["ack_no", 32, false],
104 ["data_offset", 4, false],
105 ["res", 3, false],
106 ["ecn", 3, false],
107 ["ctrl", 6, false],
108 ["window", 16, false],
109 ["checksum", 16, false],
110 ["urgent_ptr", 16, false]
111 ]
112 },
113 {
114 "name" : "udp_t",
115 "id" : 8,
116 "fields" : [
117 ["src_port", 16, false],
118 ["dst_port", 16, false],
119 ["len", 16, false],
120 ["checksum", 16, false]
121 ]
122 },
123 {
124 "name" : "icmp_t",
125 "id" : 9,
126 "fields" : [
127 ["icmp_type", 8, false],
128 ["icmp_code", 8, false],
129 ["checksum", 16, false]
130 ]
131 },
132 {
133 "name" : "packet_out_header_t",
134 "id" : 10,
135 "fields" : [
136 ["egress_port", 9, false],
137 ["_padding", 7, false]
138 ]
139 },
140 {
141 "name" : "packet_in_header_t",
142 "id" : 11,
143 "fields" : [
144 ["ingress_port", 9, false],
145 ["_padding_0", 7, false]
146 ]
147 },
148 {
149 "name" : "standard_metadata",
150 "id" : 12,
151 "fields" : [
152 ["ingress_port", 9, false],
153 ["egress_spec", 9, false],
154 ["egress_port", 9, false],
155 ["clone_spec", 32, false],
156 ["instance_type", 32, false],
157 ["drop", 1, false],
158 ["recirculate_port", 16, false],
159 ["packet_length", 32, false],
160 ["enq_timestamp", 32, false],
161 ["enq_qdepth", 19, false],
162 ["deq_timedelta", 32, false],
163 ["deq_qdepth", 19, false],
164 ["ingress_global_timestamp", 48, false],
165 ["lf_field_list", 32, false],
166 ["mcast_grp", 16, false],
167 ["resubmit_flag", 1, false],
168 ["egress_rid", 16, false],
169 ["checksum_error", 1, false],
170 ["_padding_1", 4, false]
171 ]
172 }
173 ],
174 "headers" : [
175 {
176 "name" : "tmp_0",
177 "id" : 0,
178 "header_type" : "ipv4_t",
179 "metadata" : false,
180 "pi_omit" : true
181 },
182 {
183 "name" : "scalars",
184 "id" : 1,
185 "header_type" : "scalars_0",
186 "metadata" : true,
187 "pi_omit" : true
188 },
189 {
190 "name" : "standard_metadata",
191 "id" : 2,
192 "header_type" : "standard_metadata",
193 "metadata" : true,
194 "pi_omit" : true
195 },
196 {
197 "name" : "ethernet",
198 "id" : 3,
199 "header_type" : "ethernet_t",
200 "metadata" : false,
201 "pi_omit" : true
202 },
203 {
204 "name" : "vlan_tag",
205 "id" : 4,
206 "header_type" : "vlan_tag_t",
207 "metadata" : false,
208 "pi_omit" : true
209 },
210 {
211 "name" : "inner_vlan_tag",
212 "id" : 5,
213 "header_type" : "vlan_tag_t",
214 "metadata" : false,
215 "pi_omit" : true
216 },
217 {
218 "name" : "mpls",
219 "id" : 6,
220 "header_type" : "mpls_t",
221 "metadata" : false,
222 "pi_omit" : true
223 },
224 {
225 "name" : "ipv4",
226 "id" : 7,
227 "header_type" : "ipv4_t",
228 "metadata" : false,
229 "pi_omit" : true
230 },
231 {
232 "name" : "ipv6",
233 "id" : 8,
234 "header_type" : "ipv6_t",
235 "metadata" : false,
236 "pi_omit" : true
237 },
238 {
239 "name" : "arp",
240 "id" : 9,
241 "header_type" : "arp_t",
242 "metadata" : false,
243 "pi_omit" : true
244 },
245 {
246 "name" : "tcp",
247 "id" : 10,
248 "header_type" : "tcp_t",
249 "metadata" : false,
250 "pi_omit" : true
251 },
252 {
253 "name" : "udp",
254 "id" : 11,
255 "header_type" : "udp_t",
256 "metadata" : false,
257 "pi_omit" : true
258 },
259 {
260 "name" : "icmp",
261 "id" : 12,
262 "header_type" : "icmp_t",
263 "metadata" : false,
264 "pi_omit" : true
265 },
266 {
267 "name" : "packet_out",
268 "id" : 13,
269 "header_type" : "packet_out_header_t",
270 "metadata" : false,
271 "pi_omit" : true
272 },
273 {
274 "name" : "packet_in",
275 "id" : 14,
276 "header_type" : "packet_in_header_t",
277 "metadata" : false,
278 "pi_omit" : true
279 }
280 ],
281 "header_stacks" : [],
282 "header_union_types" : [],
283 "header_unions" : [],
284 "header_union_stacks" : [],
285 "field_lists" : [],
286 "errors" : [
287 ["NoError", 0],
288 ["PacketTooShort", 1],
289 ["NoMatch", 2],
290 ["StackOutOfBounds", 3],
291 ["HeaderTooShort", 4],
292 ["ParserTimeout", 5]
293 ],
294 "enums" : [],
295 "parsers" : [
296 {
297 "name" : "parser",
298 "id" : 0,
299 "init_state" : "start",
300 "parse_states" : [
301 {
302 "name" : "start",
303 "id" : 0,
304 "parser_ops" : [],
305 "transitions" : [
306 {
307 "value" : "0x00ff",
308 "mask" : null,
309 "next_state" : "parse_packet_out"
310 },
311 {
312 "value" : "default",
313 "mask" : null,
314 "next_state" : "parse_ethernet"
315 }
316 ],
317 "transition_key" : [
318 {
319 "type" : "field",
320 "value" : ["standard_metadata", "ingress_port"]
321 }
322 ]
323 },
324 {
325 "name" : "parse_packet_out",
326 "id" : 1,
327 "parser_ops" : [
328 {
329 "parameters" : [
330 {
331 "type" : "regular",
332 "value" : "packet_out"
333 }
334 ],
335 "op" : "extract"
336 }
337 ],
338 "transitions" : [
339 {
340 "value" : "default",
341 "mask" : null,
342 "next_state" : "parse_ethernet"
343 }
344 ],
345 "transition_key" : []
346 },
347 {
348 "name" : "parse_ethernet",
349 "id" : 2,
350 "parser_ops" : [
351 {
352 "parameters" : [
353 {
354 "type" : "regular",
355 "value" : "ethernet"
356 }
357 ],
358 "op" : "extract"
359 }
360 ],
361 "transitions" : [
362 {
363 "value" : "0x9100",
364 "mask" : null,
365 "next_state" : "parse_vlan_tag"
366 },
367 {
368 "value" : "0x88a8",
369 "mask" : null,
370 "next_state" : "parse_vlan_tag"
371 },
372 {
373 "value" : "0x8100",
374 "mask" : null,
375 "next_state" : "parse_vlan_tag"
376 },
377 {
378 "value" : "0x8847",
379 "mask" : null,
380 "next_state" : "parse_mpls"
381 },
382 {
383 "value" : "0x0806",
384 "mask" : null,
385 "next_state" : "parse_arp"
386 },
387 {
388 "value" : "0x0800",
389 "mask" : null,
390 "next_state" : "parse_ipv4"
391 },
392 {
393 "value" : "0x86dd",
394 "mask" : null,
395 "next_state" : "parse_ipv6"
396 },
397 {
398 "value" : "default",
399 "mask" : null,
400 "next_state" : null
401 }
402 ],
403 "transition_key" : [
404 {
405 "type" : "field",
406 "value" : ["ethernet", "ether_type"]
407 }
408 ]
409 },
410 {
411 "name" : "parse_vlan_tag",
412 "id" : 3,
413 "parser_ops" : [
414 {
415 "parameters" : [
416 {
417 "type" : "regular",
418 "value" : "vlan_tag"
419 }
420 ],
421 "op" : "extract"
422 }
423 ],
424 "transitions" : [
425 {
426 "value" : "0x8100",
427 "mask" : null,
428 "next_state" : "parse_inner_vlan_tag"
429 },
430 {
431 "value" : "0x0806",
432 "mask" : null,
433 "next_state" : "parse_arp"
434 },
435 {
436 "value" : "0x0800",
437 "mask" : null,
438 "next_state" : "parse_ipv4"
439 },
440 {
441 "value" : "0x86dd",
442 "mask" : null,
443 "next_state" : "parse_ipv6"
444 },
445 {
446 "value" : "default",
447 "mask" : null,
448 "next_state" : null
449 }
450 ],
451 "transition_key" : [
452 {
453 "type" : "field",
454 "value" : ["vlan_tag", "ether_type"]
455 }
456 ]
457 },
458 {
459 "name" : "parse_inner_vlan_tag",
460 "id" : 4,
461 "parser_ops" : [
462 {
463 "parameters" : [
464 {
465 "type" : "regular",
466 "value" : "inner_vlan_tag"
467 }
468 ],
469 "op" : "extract"
470 }
471 ],
472 "transitions" : [
473 {
474 "value" : "0x0806",
475 "mask" : null,
476 "next_state" : "parse_arp"
477 },
478 {
479 "value" : "0x0800",
480 "mask" : null,
481 "next_state" : "parse_ipv4"
482 },
483 {
484 "value" : "0x86dd",
485 "mask" : null,
486 "next_state" : "parse_ipv6"
487 },
488 {
489 "value" : "default",
490 "mask" : null,
491 "next_state" : null
492 }
493 ],
494 "transition_key" : [
495 {
496 "type" : "field",
497 "value" : ["vlan_tag", "ether_type"]
498 }
499 ]
500 },
501 {
502 "name" : "parse_mpls",
503 "id" : 5,
504 "parser_ops" : [
505 {
506 "parameters" : [
507 {
508 "type" : "regular",
509 "value" : "mpls"
510 }
511 ],
512 "op" : "extract"
513 },
514 {
515 "parameters" : [
516 {
517 "type" : "field",
518 "value" : ["scalars", "tmp"]
519 },
520 {
521 "type" : "lookahead",
522 "value" : [0, 161]
523 }
524 ],
525 "op" : "set"
526 },
527 {
528 "parameters" : [
529 {
530 "parameters" : [
531 {
532 "type" : "header",
533 "value" : "tmp_0"
534 }
535 ],
536 "op" : "add_header"
537 }
538 ],
539 "op" : "primitive"
540 },
541 {
542 "parameters" : [
543 {
544 "type" : "field",
545 "value" : ["tmp_0", "version"]
546 },
547 {
548 "type" : "expression",
549 "value" : {
550 "type" : "expression",
551 "value" : {
552 "op" : "&",
553 "left" : {
554 "type" : "expression",
555 "value" : {
556 "op" : "&",
557 "left" : {
558 "type" : "expression",
559 "value" : {
560 "op" : ">>",
561 "left" : {
562 "type" : "field",
563 "value" : ["scalars", "tmp"]
564 },
565 "right" : {
566 "type" : "hexstr",
567 "value" : "0x9d"
568 }
569 }
570 },
571 "right" : {
572 "type" : "hexstr",
573 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
574 }
575 }
576 },
577 "right" : {
578 "type" : "hexstr",
579 "value" : "0x0f"
580 }
581 }
582 }
583 }
584 ],
585 "op" : "set"
586 },
587 {
588 "parameters" : [
589 {
590 "type" : "field",
591 "value" : ["tmp_0", "ihl"]
592 },
593 {
594 "type" : "expression",
595 "value" : {
596 "type" : "expression",
597 "value" : {
598 "op" : "&",
599 "left" : {
600 "type" : "expression",
601 "value" : {
602 "op" : "&",
603 "left" : {
604 "type" : "expression",
605 "value" : {
606 "op" : ">>",
607 "left" : {
608 "type" : "field",
609 "value" : ["scalars", "tmp"]
610 },
611 "right" : {
612 "type" : "hexstr",
613 "value" : "0x99"
614 }
615 }
616 },
617 "right" : {
618 "type" : "hexstr",
619 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
620 }
621 }
622 },
623 "right" : {
624 "type" : "hexstr",
625 "value" : "0x0f"
626 }
627 }
628 }
629 }
630 ],
631 "op" : "set"
632 },
633 {
634 "parameters" : [
635 {
636 "type" : "field",
637 "value" : ["tmp_0", "diffserv"]
638 },
639 {
640 "type" : "expression",
641 "value" : {
642 "type" : "expression",
643 "value" : {
644 "op" : "&",
645 "left" : {
646 "type" : "expression",
647 "value" : {
648 "op" : "&",
649 "left" : {
650 "type" : "expression",
651 "value" : {
652 "op" : ">>",
653 "left" : {
654 "type" : "field",
655 "value" : ["scalars", "tmp"]
656 },
657 "right" : {
658 "type" : "hexstr",
659 "value" : "0x91"
660 }
661 }
662 },
663 "right" : {
664 "type" : "hexstr",
665 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
666 }
667 }
668 },
669 "right" : {
670 "type" : "hexstr",
671 "value" : "0xff"
672 }
673 }
674 }
675 }
676 ],
677 "op" : "set"
678 },
679 {
680 "parameters" : [
681 {
682 "type" : "field",
683 "value" : ["tmp_0", "total_len"]
684 },
685 {
686 "type" : "expression",
687 "value" : {
688 "type" : "expression",
689 "value" : {
690 "op" : "&",
691 "left" : {
692 "type" : "expression",
693 "value" : {
694 "op" : "&",
695 "left" : {
696 "type" : "expression",
697 "value" : {
698 "op" : ">>",
699 "left" : {
700 "type" : "field",
701 "value" : ["scalars", "tmp"]
702 },
703 "right" : {
704 "type" : "hexstr",
705 "value" : "0x81"
706 }
707 }
708 },
709 "right" : {
710 "type" : "hexstr",
711 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
712 }
713 }
714 },
715 "right" : {
716 "type" : "hexstr",
717 "value" : "0xffff"
718 }
719 }
720 }
721 }
722 ],
723 "op" : "set"
724 },
725 {
726 "parameters" : [
727 {
728 "type" : "field",
729 "value" : ["tmp_0", "identification"]
730 },
731 {
732 "type" : "expression",
733 "value" : {
734 "type" : "expression",
735 "value" : {
736 "op" : "&",
737 "left" : {
738 "type" : "expression",
739 "value" : {
740 "op" : "&",
741 "left" : {
742 "type" : "expression",
743 "value" : {
744 "op" : ">>",
745 "left" : {
746 "type" : "field",
747 "value" : ["scalars", "tmp"]
748 },
749 "right" : {
750 "type" : "hexstr",
751 "value" : "0x71"
752 }
753 }
754 },
755 "right" : {
756 "type" : "hexstr",
757 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
758 }
759 }
760 },
761 "right" : {
762 "type" : "hexstr",
763 "value" : "0xffff"
764 }
765 }
766 }
767 }
768 ],
769 "op" : "set"
770 },
771 {
772 "parameters" : [
773 {
774 "type" : "field",
775 "value" : ["tmp_0", "flags"]
776 },
777 {
778 "type" : "expression",
779 "value" : {
780 "type" : "expression",
781 "value" : {
782 "op" : "&",
783 "left" : {
784 "type" : "expression",
785 "value" : {
786 "op" : "&",
787 "left" : {
788 "type" : "expression",
789 "value" : {
790 "op" : ">>",
791 "left" : {
792 "type" : "field",
793 "value" : ["scalars", "tmp"]
794 },
795 "right" : {
796 "type" : "hexstr",
797 "value" : "0x6e"
798 }
799 }
800 },
801 "right" : {
802 "type" : "hexstr",
803 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
804 }
805 }
806 },
807 "right" : {
808 "type" : "hexstr",
809 "value" : "0x07"
810 }
811 }
812 }
813 }
814 ],
815 "op" : "set"
816 },
817 {
818 "parameters" : [
819 {
820 "type" : "field",
821 "value" : ["tmp_0", "frag_offset"]
822 },
823 {
824 "type" : "expression",
825 "value" : {
826 "type" : "expression",
827 "value" : {
828 "op" : "&",
829 "left" : {
830 "type" : "expression",
831 "value" : {
832 "op" : "&",
833 "left" : {
834 "type" : "expression",
835 "value" : {
836 "op" : ">>",
837 "left" : {
838 "type" : "field",
839 "value" : ["scalars", "tmp"]
840 },
841 "right" : {
842 "type" : "hexstr",
843 "value" : "0x61"
844 }
845 }
846 },
847 "right" : {
848 "type" : "hexstr",
849 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
850 }
851 }
852 },
853 "right" : {
854 "type" : "hexstr",
855 "value" : "0x1fff"
856 }
857 }
858 }
859 }
860 ],
861 "op" : "set"
862 },
863 {
864 "parameters" : [
865 {
866 "type" : "field",
867 "value" : ["tmp_0", "ttl"]
868 },
869 {
870 "type" : "expression",
871 "value" : {
872 "type" : "expression",
873 "value" : {
874 "op" : "&",
875 "left" : {
876 "type" : "expression",
877 "value" : {
878 "op" : "&",
879 "left" : {
880 "type" : "expression",
881 "value" : {
882 "op" : ">>",
883 "left" : {
884 "type" : "field",
885 "value" : ["scalars", "tmp"]
886 },
887 "right" : {
888 "type" : "hexstr",
889 "value" : "0x59"
890 }
891 }
892 },
893 "right" : {
894 "type" : "hexstr",
895 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
896 }
897 }
898 },
899 "right" : {
900 "type" : "hexstr",
901 "value" : "0xff"
902 }
903 }
904 }
905 }
906 ],
907 "op" : "set"
908 },
909 {
910 "parameters" : [
911 {
912 "type" : "field",
913 "value" : ["tmp_0", "protocol"]
914 },
915 {
916 "type" : "expression",
917 "value" : {
918 "type" : "expression",
919 "value" : {
920 "op" : "&",
921 "left" : {
922 "type" : "expression",
923 "value" : {
924 "op" : "&",
925 "left" : {
926 "type" : "expression",
927 "value" : {
928 "op" : ">>",
929 "left" : {
930 "type" : "field",
931 "value" : ["scalars", "tmp"]
932 },
933 "right" : {
934 "type" : "hexstr",
935 "value" : "0x51"
936 }
937 }
938 },
939 "right" : {
940 "type" : "hexstr",
941 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
942 }
943 }
944 },
945 "right" : {
946 "type" : "hexstr",
947 "value" : "0xff"
948 }
949 }
950 }
951 }
952 ],
953 "op" : "set"
954 },
955 {
956 "parameters" : [
957 {
958 "type" : "field",
959 "value" : ["tmp_0", "hdr_checksum"]
960 },
961 {
962 "type" : "expression",
963 "value" : {
964 "type" : "expression",
965 "value" : {
966 "op" : "&",
967 "left" : {
968 "type" : "expression",
969 "value" : {
970 "op" : "&",
971 "left" : {
972 "type" : "expression",
973 "value" : {
974 "op" : ">>",
975 "left" : {
976 "type" : "field",
977 "value" : ["scalars", "tmp"]
978 },
979 "right" : {
980 "type" : "hexstr",
981 "value" : "0x41"
982 }
983 }
984 },
985 "right" : {
986 "type" : "hexstr",
987 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
988 }
989 }
990 },
991 "right" : {
992 "type" : "hexstr",
993 "value" : "0xffff"
994 }
995 }
996 }
997 }
998 ],
999 "op" : "set"
1000 },
1001 {
1002 "parameters" : [
1003 {
1004 "type" : "field",
1005 "value" : ["tmp_0", "src_addr"]
1006 },
1007 {
1008 "type" : "expression",
1009 "value" : {
1010 "type" : "expression",
1011 "value" : {
1012 "op" : "&",
1013 "left" : {
1014 "type" : "expression",
1015 "value" : {
1016 "op" : "&",
1017 "left" : {
1018 "type" : "expression",
1019 "value" : {
1020 "op" : ">>",
1021 "left" : {
1022 "type" : "field",
1023 "value" : ["scalars", "tmp"]
1024 },
1025 "right" : {
1026 "type" : "hexstr",
1027 "value" : "0x21"
1028 }
1029 }
1030 },
1031 "right" : {
1032 "type" : "hexstr",
1033 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
1034 }
1035 }
1036 },
1037 "right" : {
1038 "type" : "hexstr",
1039 "value" : "0xffffffff"
1040 }
1041 }
1042 }
1043 }
1044 ],
1045 "op" : "set"
1046 },
1047 {
1048 "parameters" : [
1049 {
1050 "type" : "field",
1051 "value" : ["tmp_0", "dst_addr"]
1052 },
1053 {
1054 "type" : "expression",
1055 "value" : {
1056 "type" : "expression",
1057 "value" : {
1058 "op" : "&",
1059 "left" : {
1060 "type" : "expression",
1061 "value" : {
1062 "op" : "&",
1063 "left" : {
1064 "type" : "expression",
1065 "value" : {
1066 "op" : ">>",
1067 "left" : {
1068 "type" : "field",
1069 "value" : ["scalars", "tmp"]
1070 },
1071 "right" : {
1072 "type" : "hexstr",
1073 "value" : "0x1"
1074 }
1075 }
1076 },
1077 "right" : {
1078 "type" : "hexstr",
1079 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
1080 }
1081 }
1082 },
1083 "right" : {
1084 "type" : "hexstr",
1085 "value" : "0xffffffff"
1086 }
1087 }
1088 }
1089 }
1090 ],
1091 "op" : "set"
1092 },
1093 {
1094 "parameters" : [
1095 {
1096 "type" : "field",
1097 "value" : ["tmp_0", "$valid$"]
1098 },
1099 {
1100 "type" : "expression",
1101 "value" : {
1102 "type" : "expression",
1103 "value" : {
1104 "op" : "&",
1105 "left" : {
1106 "type" : "field",
1107 "value" : ["scalars", "tmp"]
1108 },
1109 "right" : {
1110 "type" : "hexstr",
1111 "value" : "0x01"
1112 }
1113 }
1114 }
1115 }
1116 ],
1117 "op" : "set"
1118 }
1119 ],
1120 "transitions" : [
1121 {
1122 "value" : "0x04",
1123 "mask" : null,
1124 "next_state" : "parse_ipv4"
1125 },
1126 {
1127 "value" : "0x06",
1128 "mask" : null,
1129 "next_state" : "parse_ipv6"
1130 },
1131 {
1132 "value" : "default",
1133 "mask" : null,
1134 "next_state" : "parse_ethernet"
1135 }
1136 ],
1137 "transition_key" : [
1138 {
1139 "type" : "field",
1140 "value" : ["tmp_0", "version"]
1141 }
1142 ]
1143 },
1144 {
1145 "name" : "parse_ipv4",
1146 "id" : 6,
1147 "parser_ops" : [
1148 {
1149 "parameters" : [
1150 {
1151 "type" : "regular",
1152 "value" : "ipv4"
1153 }
1154 ],
1155 "op" : "extract"
1156 },
1157 {
1158 "parameters" : [
1159 {
1160 "type" : "field",
1161 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
1162 },
1163 {
1164 "type" : "field",
1165 "value" : ["ipv4", "protocol"]
1166 }
1167 ],
1168 "op" : "set"
1169 }
1170 ],
1171 "transitions" : [
1172 {
1173 "value" : "0x06",
1174 "mask" : null,
1175 "next_state" : "parse_tcp"
1176 },
1177 {
1178 "value" : "0x11",
1179 "mask" : null,
1180 "next_state" : "parse_udp"
1181 },
1182 {
1183 "value" : "0x01",
1184 "mask" : null,
1185 "next_state" : "parse_icmp"
1186 },
1187 {
1188 "value" : "default",
1189 "mask" : null,
1190 "next_state" : null
1191 }
1192 ],
1193 "transition_key" : [
1194 {
1195 "type" : "field",
1196 "value" : ["ipv4", "protocol"]
1197 }
1198 ]
1199 },
1200 {
1201 "name" : "parse_ipv6",
1202 "id" : 7,
1203 "parser_ops" : [
1204 {
1205 "parameters" : [
1206 {
1207 "type" : "regular",
1208 "value" : "ipv6"
1209 }
1210 ],
1211 "op" : "extract"
1212 },
1213 {
1214 "parameters" : [
1215 {
1216 "type" : "field",
1217 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
1218 },
1219 {
1220 "type" : "field",
1221 "value" : ["ipv6", "next_hdr"]
1222 }
1223 ],
1224 "op" : "set"
1225 }
1226 ],
1227 "transitions" : [
1228 {
1229 "value" : "0x06",
1230 "mask" : null,
1231 "next_state" : "parse_tcp"
1232 },
1233 {
1234 "value" : "0x11",
1235 "mask" : null,
1236 "next_state" : "parse_udp"
1237 },
1238 {
1239 "value" : "0x3a",
1240 "mask" : null,
1241 "next_state" : "parse_icmp"
1242 },
1243 {
1244 "value" : "default",
1245 "mask" : null,
1246 "next_state" : null
1247 }
1248 ],
1249 "transition_key" : [
1250 {
1251 "type" : "field",
1252 "value" : ["ipv6", "next_hdr"]
1253 }
1254 ]
1255 },
1256 {
1257 "name" : "parse_arp",
1258 "id" : 8,
1259 "parser_ops" : [
1260 {
1261 "parameters" : [
1262 {
1263 "type" : "regular",
1264 "value" : "arp"
1265 }
1266 ],
1267 "op" : "extract"
1268 }
1269 ],
1270 "transitions" : [
1271 {
1272 "value" : "default",
1273 "mask" : null,
1274 "next_state" : null
1275 }
1276 ],
1277 "transition_key" : []
1278 },
1279 {
1280 "name" : "parse_tcp",
1281 "id" : 9,
1282 "parser_ops" : [
1283 {
1284 "parameters" : [
1285 {
1286 "type" : "regular",
1287 "value" : "tcp"
1288 }
1289 ],
1290 "op" : "extract"
1291 },
1292 {
1293 "parameters" : [
1294 {
1295 "type" : "field",
1296 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
1297 },
1298 {
1299 "type" : "field",
1300 "value" : ["tcp", "src_port"]
1301 }
1302 ],
1303 "op" : "set"
1304 },
1305 {
1306 "parameters" : [
1307 {
1308 "type" : "field",
1309 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
1310 },
1311 {
1312 "type" : "field",
1313 "value" : ["tcp", "dst_port"]
1314 }
1315 ],
1316 "op" : "set"
1317 }
1318 ],
1319 "transitions" : [
1320 {
1321 "value" : "default",
1322 "mask" : null,
1323 "next_state" : null
1324 }
1325 ],
1326 "transition_key" : []
1327 },
1328 {
1329 "name" : "parse_udp",
1330 "id" : 10,
1331 "parser_ops" : [
1332 {
1333 "parameters" : [
1334 {
1335 "type" : "regular",
1336 "value" : "udp"
1337 }
1338 ],
1339 "op" : "extract"
1340 },
1341 {
1342 "parameters" : [
1343 {
1344 "type" : "field",
1345 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
1346 },
1347 {
1348 "type" : "field",
1349 "value" : ["udp", "src_port"]
1350 }
1351 ],
1352 "op" : "set"
1353 },
1354 {
1355 "parameters" : [
1356 {
1357 "type" : "field",
1358 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
1359 },
1360 {
1361 "type" : "field",
1362 "value" : ["udp", "dst_port"]
1363 }
1364 ],
1365 "op" : "set"
1366 }
1367 ],
1368 "transitions" : [
1369 {
1370 "value" : "default",
1371 "mask" : null,
1372 "next_state" : null
1373 }
1374 ],
1375 "transition_key" : []
1376 },
1377 {
1378 "name" : "parse_icmp",
1379 "id" : 11,
1380 "parser_ops" : [
1381 {
1382 "parameters" : [
1383 {
1384 "type" : "regular",
1385 "value" : "icmp"
1386 }
1387 ],
1388 "op" : "extract"
1389 }
1390 ],
1391 "transitions" : [
1392 {
1393 "value" : "default",
1394 "mask" : null,
1395 "next_state" : null
1396 }
1397 ],
1398 "transition_key" : []
1399 }
1400 ]
1401 }
1402 ],
1403 "deparsers" : [
1404 {
1405 "name" : "deparser",
1406 "id" : 0,
1407 "source_info" : {
1408 "filename" : "./include/parser.p4",
1409 "line" : 134,
1410 "column" : 8,
1411 "source_fragment" : "FabricDeparser"
1412 },
1413 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp"]
1414 }
1415 ],
1416 "meter_arrays" : [],
1417 "counter_arrays" : [
1418 {
1419 "name" : "filtering.ingress_port_vlan_counter",
1420 "id" : 0,
1421 "is_direct" : true,
1422 "binding" : "filtering.ingress_port_vlan"
1423 },
1424 {
1425 "name" : "filtering.fwd_classifier_counter",
1426 "id" : 1,
1427 "is_direct" : true,
1428 "binding" : "filtering.fwd_classifier"
1429 },
1430 {
1431 "name" : "forwarding.bridging_counter",
1432 "id" : 2,
1433 "is_direct" : true,
1434 "binding" : "forwarding.bridging"
1435 },
1436 {
1437 "name" : "forwarding.mpls_counter",
1438 "id" : 3,
1439 "is_direct" : true,
1440 "binding" : "forwarding.mpls"
1441 },
1442 {
1443 "name" : "forwarding.unicast_v4_counter",
1444 "id" : 4,
1445 "is_direct" : true,
1446 "binding" : "forwarding.unicast_v4"
1447 },
1448 {
1449 "name" : "forwarding.multicast_v4_counter",
1450 "id" : 5,
1451 "is_direct" : true,
1452 "binding" : "forwarding.multicast_v4"
1453 },
1454 {
1455 "name" : "forwarding.unicast_v6_counter",
1456 "id" : 6,
1457 "is_direct" : true,
1458 "binding" : "forwarding.unicast_v6"
1459 },
1460 {
1461 "name" : "forwarding.multicast_v6_counter",
1462 "id" : 7,
1463 "is_direct" : true,
1464 "binding" : "forwarding.multicast_v6"
1465 },
1466 {
1467 "name" : "forwarding.acl_counter",
1468 "id" : 8,
1469 "is_direct" : true,
1470 "binding" : "forwarding.acl"
1471 },
1472 {
1473 "name" : "next.next_id_mapping_counter",
1474 "id" : 9,
1475 "is_direct" : true,
1476 "binding" : "next.next_id_mapping"
1477 },
1478 {
1479 "name" : "next.simple_counter",
1480 "id" : 10,
1481 "is_direct" : true,
1482 "binding" : "next.simple"
1483 },
1484 {
1485 "name" : "next.hashed_counter",
1486 "id" : 11,
1487 "is_direct" : true,
1488 "binding" : "next.hashed"
1489 },
1490 {
1491 "name" : "next.broadcast_counter",
1492 "id" : 12,
1493 "is_direct" : true,
1494 "binding" : "next.broadcast"
1495 },
1496 {
1497 "name" : "port_counters_control.egress_port_counter",
1498 "id" : 13,
1499 "source_info" : {
1500 "filename" : "./include/control/port_counter.p4",
1501 "line" : 23,
1502 "column" : 38,
1503 "source_fragment" : "egress_port_counter"
1504 },
1505 "size" : 511,
1506 "is_direct" : false
1507 },
1508 {
1509 "name" : "port_counters_control.ingress_port_counter",
1510 "id" : 14,
1511 "source_info" : {
1512 "filename" : "./include/control/port_counter.p4",
1513 "line" : 24,
1514 "column" : 38,
1515 "source_fragment" : "ingress_port_counter"
1516 },
1517 "size" : 511,
1518 "is_direct" : false
1519 }
1520 ],
1521 "register_arrays" : [],
1522 "calculations" : [
1523 {
1524 "name" : "calc",
1525 "id" : 0,
1526 "source_info" : {
1527 "filename" : "./include/checksum.p4",
1528 "line" : 56,
1529 "column" : 8,
1530 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
1531 },
1532 "algo" : "csum16",
1533 "input" : [
1534 {
1535 "type" : "field",
1536 "value" : ["ipv4", "version"]
1537 },
1538 {
1539 "type" : "field",
1540 "value" : ["ipv4", "ihl"]
1541 },
1542 {
1543 "type" : "field",
1544 "value" : ["ipv4", "diffserv"]
1545 },
1546 {
1547 "type" : "field",
1548 "value" : ["ipv4", "total_len"]
1549 },
1550 {
1551 "type" : "field",
1552 "value" : ["ipv4", "identification"]
1553 },
1554 {
1555 "type" : "field",
1556 "value" : ["ipv4", "flags"]
1557 },
1558 {
1559 "type" : "field",
1560 "value" : ["ipv4", "frag_offset"]
1561 },
1562 {
1563 "type" : "field",
1564 "value" : ["ipv4", "ttl"]
1565 },
1566 {
1567 "type" : "field",
1568 "value" : ["ipv4", "protocol"]
1569 },
1570 {
1571 "type" : "field",
1572 "value" : ["ipv4", "src_addr"]
1573 },
1574 {
1575 "type" : "field",
1576 "value" : ["ipv4", "dst_addr"]
1577 }
1578 ]
1579 },
1580 {
1581 "name" : "calc_0",
1582 "id" : 1,
1583 "source_info" : {
1584 "filename" : "./include/checksum.p4",
1585 "line" : 73,
1586 "column" : 8,
1587 "source_fragment" : "verify_checksum(hdr.icmp.isValid(), ..."
1588 },
1589 "algo" : "csum16",
1590 "input" : [
1591 {
1592 "type" : "field",
1593 "value" : ["icmp", "icmp_type"]
1594 },
1595 {
1596 "type" : "field",
1597 "value" : ["icmp", "icmp_code"]
1598 }
1599 ]
1600 },
1601 {
1602 "name" : "calc_1",
1603 "id" : 2,
1604 "source_info" : {
1605 "filename" : "./include/checksum.p4",
1606 "line" : 24,
1607 "column" : 8,
1608 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
1609 },
1610 "algo" : "csum16",
1611 "input" : [
1612 {
1613 "type" : "field",
1614 "value" : ["ipv4", "version"]
1615 },
1616 {
1617 "type" : "field",
1618 "value" : ["ipv4", "ihl"]
1619 },
1620 {
1621 "type" : "field",
1622 "value" : ["ipv4", "diffserv"]
1623 },
1624 {
1625 "type" : "field",
1626 "value" : ["ipv4", "total_len"]
1627 },
1628 {
1629 "type" : "field",
1630 "value" : ["ipv4", "identification"]
1631 },
1632 {
1633 "type" : "field",
1634 "value" : ["ipv4", "flags"]
1635 },
1636 {
1637 "type" : "field",
1638 "value" : ["ipv4", "frag_offset"]
1639 },
1640 {
1641 "type" : "field",
1642 "value" : ["ipv4", "ttl"]
1643 },
1644 {
1645 "type" : "field",
1646 "value" : ["ipv4", "protocol"]
1647 },
1648 {
1649 "type" : "field",
1650 "value" : ["ipv4", "src_addr"]
1651 },
1652 {
1653 "type" : "field",
1654 "value" : ["ipv4", "dst_addr"]
1655 }
1656 ]
1657 },
1658 {
1659 "name" : "calc_2",
1660 "id" : 3,
1661 "source_info" : {
1662 "filename" : "./include/checksum.p4",
1663 "line" : 41,
1664 "column" : 8,
1665 "source_fragment" : "update_checksum(hdr.icmp.isValid(), ..."
1666 },
1667 "algo" : "csum16",
1668 "input" : [
1669 {
1670 "type" : "field",
1671 "value" : ["icmp", "icmp_type"]
1672 },
1673 {
1674 "type" : "field",
1675 "value" : ["icmp", "icmp_code"]
1676 }
1677 ]
1678 }
1679 ],
1680 "learn_lists" : [],
1681 "actions" : [
1682 {
1683 "name" : "nop",
1684 "id" : 0,
1685 "runtime_data" : [],
1686 "primitives" : []
1687 },
1688 {
1689 "name" : "nop",
1690 "id" : 1,
1691 "runtime_data" : [],
1692 "primitives" : []
1693 },
1694 {
1695 "name" : "drop",
1696 "id" : 2,
1697 "runtime_data" : [],
1698 "primitives" : [
1699 {
1700 "op" : "drop",
1701 "parameters" : [],
1702 "source_info" : {
1703 "filename" : "./include/control/../action.p4",
1704 "line" : 25,
1705 "column" : 4,
1706 "source_fragment" : "mark_to_drop()"
1707 }
1708 }
1709 ]
1710 },
1711 {
1712 "name" : "drop",
1713 "id" : 3,
1714 "runtime_data" : [],
1715 "primitives" : [
1716 {
1717 "op" : "drop",
1718 "parameters" : [],
1719 "source_info" : {
1720 "filename" : "./include/control/../action.p4",
1721 "line" : 25,
1722 "column" : 4,
1723 "source_fragment" : "mark_to_drop()"
1724 }
1725 }
1726 ]
1727 },
1728 {
1729 "name" : "NoAction",
1730 "id" : 4,
1731 "runtime_data" : [],
1732 "primitives" : []
1733 },
1734 {
1735 "name" : "NoAction",
1736 "id" : 5,
1737 "runtime_data" : [],
1738 "primitives" : []
1739 },
1740 {
1741 "name" : "NoAction",
1742 "id" : 6,
1743 "runtime_data" : [],
1744 "primitives" : []
1745 },
1746 {
1747 "name" : "NoAction",
1748 "id" : 7,
1749 "runtime_data" : [],
1750 "primitives" : []
1751 },
1752 {
1753 "name" : "NoAction",
1754 "id" : 8,
1755 "runtime_data" : [],
1756 "primitives" : []
1757 },
1758 {
1759 "name" : "NoAction",
1760 "id" : 9,
1761 "runtime_data" : [],
1762 "primitives" : []
1763 },
1764 {
1765 "name" : "NoAction",
1766 "id" : 10,
1767 "runtime_data" : [],
1768 "primitives" : []
1769 },
1770 {
1771 "name" : "NoAction",
1772 "id" : 11,
1773 "runtime_data" : [],
1774 "primitives" : []
1775 },
1776 {
1777 "name" : "NoAction",
1778 "id" : 12,
1779 "runtime_data" : [],
1780 "primitives" : []
1781 },
1782 {
1783 "name" : "NoAction",
1784 "id" : 13,
1785 "runtime_data" : [],
1786 "primitives" : []
1787 },
1788 {
1789 "name" : "filtering.set_vlan",
1790 "id" : 14,
1791 "runtime_data" : [
1792 {
1793 "name" : "new_vlan_id",
1794 "bitwidth" : 12
1795 }
1796 ],
1797 "primitives" : [
1798 {
1799 "op" : "assign",
1800 "parameters" : [
1801 {
1802 "type" : "field",
1803 "value" : ["vlan_tag", "vlan_id"]
1804 },
1805 {
1806 "type" : "runtime_data",
1807 "value" : 0
1808 }
1809 ],
1810 "source_info" : {
1811 "filename" : "./include/control/filtering.p4",
1812 "line" : 32,
1813 "column" : 8,
1814 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1815 }
1816 }
1817 ]
1818 },
1819 {
1820 "name" : "filtering.push_internal_vlan",
1821 "id" : 15,
1822 "runtime_data" : [
1823 {
1824 "name" : "new_vlan_id",
1825 "bitwidth" : 12
1826 }
1827 ],
1828 "primitives" : [
1829 {
1830 "op" : "add_header",
1831 "parameters" : [
1832 {
1833 "type" : "header",
1834 "value" : "vlan_tag"
1835 }
1836 ],
1837 "source_info" : {
1838 "filename" : "./include/control/filtering.p4",
1839 "line" : 38,
1840 "column" : 8,
1841 "source_fragment" : "hdr.vlan_tag.setValid()"
1842 }
1843 },
1844 {
1845 "op" : "assign",
1846 "parameters" : [
1847 {
1848 "type" : "field",
1849 "value" : ["vlan_tag", "cfi"]
1850 },
1851 {
1852 "type" : "hexstr",
1853 "value" : "0x00"
1854 }
1855 ],
1856 "source_info" : {
1857 "filename" : "./include/control/filtering.p4",
1858 "line" : 39,
1859 "column" : 8,
1860 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1861 }
1862 },
1863 {
1864 "op" : "assign",
1865 "parameters" : [
1866 {
1867 "type" : "field",
1868 "value" : ["vlan_tag", "pri"]
1869 },
1870 {
1871 "type" : "hexstr",
1872 "value" : "0x00"
1873 }
1874 ],
1875 "source_info" : {
1876 "filename" : "./include/control/filtering.p4",
1877 "line" : 40,
1878 "column" : 8,
1879 "source_fragment" : "hdr.vlan_tag.pri = 0"
1880 }
1881 },
1882 {
1883 "op" : "assign",
1884 "parameters" : [
1885 {
1886 "type" : "field",
1887 "value" : ["vlan_tag", "ether_type"]
1888 },
1889 {
1890 "type" : "hexstr",
1891 "value" : "0x8100"
1892 }
1893 ],
1894 "source_info" : {
1895 "filename" : "./include/control/../define.p4",
1896 "line" : 33,
1897 "column" : 31,
1898 "source_fragment" : "0x8100; ..."
1899 }
1900 },
1901 {
1902 "op" : "assign",
1903 "parameters" : [
1904 {
1905 "type" : "field",
1906 "value" : ["vlan_tag", "vlan_id"]
1907 },
1908 {
1909 "type" : "runtime_data",
1910 "value" : 0
1911 }
1912 ],
1913 "source_info" : {
1914 "filename" : "./include/control/filtering.p4",
1915 "line" : 32,
1916 "column" : 8,
1917 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1918 }
1919 },
1920 {
1921 "op" : "assign",
1922 "parameters" : [
1923 {
1924 "type" : "field",
1925 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1926 },
1927 {
1928 "type" : "expression",
1929 "value" : {
1930 "type" : "expression",
1931 "value" : {
1932 "op" : "b2d",
1933 "left" : null,
1934 "right" : {
1935 "type" : "bool",
1936 "value" : true
1937 }
1938 }
1939 }
1940 }
1941 ],
1942 "source_info" : {
1943 "filename" : "./include/control/filtering.p4",
1944 "line" : 45,
1945 "column" : 8,
1946 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1947 }
1948 }
1949 ]
1950 },
1951 {
1952 "name" : "filtering.set_forwarding_type",
1953 "id" : 16,
1954 "runtime_data" : [
1955 {
1956 "name" : "fwd_type",
1957 "bitwidth" : 3
1958 }
1959 ],
1960 "primitives" : [
1961 {
1962 "op" : "assign",
1963 "parameters" : [
1964 {
1965 "type" : "field",
1966 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1967 },
1968 {
1969 "type" : "runtime_data",
1970 "value" : 0
1971 }
1972 ],
1973 "source_info" : {
1974 "filename" : "./include/control/filtering.p4",
1975 "line" : 49,
1976 "column" : 8,
1977 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1978 }
1979 }
1980 ]
1981 },
1982 {
1983 "name" : "forwarding.set_next_id",
1984 "id" : 17,
1985 "runtime_data" : [
1986 {
1987 "name" : "next_id",
1988 "bitwidth" : 32
1989 }
1990 ],
1991 "primitives" : [
1992 {
1993 "op" : "assign",
1994 "parameters" : [
1995 {
1996 "type" : "field",
1997 "value" : ["scalars", "fabric_metadata_t.next_id"]
1998 },
1999 {
2000 "type" : "runtime_data",
2001 "value" : 0
2002 }
2003 ],
2004 "source_info" : {
2005 "filename" : "./include/control/forwarding.p4",
2006 "line" : 39,
2007 "column" : 8,
2008 "source_fragment" : "fabric_metadata.next_id = next_id"
2009 }
2010 }
2011 ]
2012 },
2013 {
2014 "name" : "forwarding.set_next_id",
2015 "id" : 18,
2016 "runtime_data" : [
2017 {
2018 "name" : "next_id",
2019 "bitwidth" : 32
2020 }
2021 ],
2022 "primitives" : [
2023 {
2024 "op" : "assign",
2025 "parameters" : [
2026 {
2027 "type" : "field",
2028 "value" : ["scalars", "fabric_metadata_t.next_id"]
2029 },
2030 {
2031 "type" : "runtime_data",
2032 "value" : 0
2033 }
2034 ],
2035 "source_info" : {
2036 "filename" : "./include/control/forwarding.p4",
2037 "line" : 39,
2038 "column" : 8,
2039 "source_fragment" : "fabric_metadata.next_id = next_id"
2040 }
2041 }
2042 ]
2043 },
2044 {
2045 "name" : "forwarding.set_next_id",
2046 "id" : 19,
2047 "runtime_data" : [
2048 {
2049 "name" : "next_id",
2050 "bitwidth" : 32
2051 }
2052 ],
2053 "primitives" : [
2054 {
2055 "op" : "assign",
2056 "parameters" : [
2057 {
2058 "type" : "field",
2059 "value" : ["scalars", "fabric_metadata_t.next_id"]
2060 },
2061 {
2062 "type" : "runtime_data",
2063 "value" : 0
2064 }
2065 ],
2066 "source_info" : {
2067 "filename" : "./include/control/forwarding.p4",
2068 "line" : 39,
2069 "column" : 8,
2070 "source_fragment" : "fabric_metadata.next_id = next_id"
2071 }
2072 }
2073 ]
2074 },
2075 {
2076 "name" : "forwarding.set_next_id",
2077 "id" : 20,
2078 "runtime_data" : [
2079 {
2080 "name" : "next_id",
2081 "bitwidth" : 32
2082 }
2083 ],
2084 "primitives" : [
2085 {
2086 "op" : "assign",
2087 "parameters" : [
2088 {
2089 "type" : "field",
2090 "value" : ["scalars", "fabric_metadata_t.next_id"]
2091 },
2092 {
2093 "type" : "runtime_data",
2094 "value" : 0
2095 }
2096 ],
2097 "source_info" : {
2098 "filename" : "./include/control/forwarding.p4",
2099 "line" : 39,
2100 "column" : 8,
2101 "source_fragment" : "fabric_metadata.next_id = next_id"
2102 }
2103 }
2104 ]
2105 },
2106 {
2107 "name" : "forwarding.set_next_id",
2108 "id" : 21,
2109 "runtime_data" : [
2110 {
2111 "name" : "next_id",
2112 "bitwidth" : 32
2113 }
2114 ],
2115 "primitives" : [
2116 {
2117 "op" : "assign",
2118 "parameters" : [
2119 {
2120 "type" : "field",
2121 "value" : ["scalars", "fabric_metadata_t.next_id"]
2122 },
2123 {
2124 "type" : "runtime_data",
2125 "value" : 0
2126 }
2127 ],
2128 "source_info" : {
2129 "filename" : "./include/control/forwarding.p4",
2130 "line" : 39,
2131 "column" : 8,
2132 "source_fragment" : "fabric_metadata.next_id = next_id"
2133 }
2134 }
2135 ]
2136 },
2137 {
2138 "name" : "forwarding.set_next_id",
2139 "id" : 22,
2140 "runtime_data" : [
2141 {
2142 "name" : "next_id",
2143 "bitwidth" : 32
2144 }
2145 ],
2146 "primitives" : [
2147 {
2148 "op" : "assign",
2149 "parameters" : [
2150 {
2151 "type" : "field",
2152 "value" : ["scalars", "fabric_metadata_t.next_id"]
2153 },
2154 {
2155 "type" : "runtime_data",
2156 "value" : 0
2157 }
2158 ],
2159 "source_info" : {
2160 "filename" : "./include/control/forwarding.p4",
2161 "line" : 39,
2162 "column" : 8,
2163 "source_fragment" : "fabric_metadata.next_id = next_id"
2164 }
2165 }
2166 ]
2167 },
2168 {
2169 "name" : "forwarding.pop_mpls_and_next",
2170 "id" : 23,
2171 "runtime_data" : [
2172 {
2173 "name" : "next_id",
2174 "bitwidth" : 32
2175 }
2176 ],
2177 "primitives" : [
2178 {
2179 "op" : "remove_header",
2180 "parameters" : [
2181 {
2182 "type" : "header",
2183 "value" : "mpls"
2184 }
2185 ],
2186 "source_info" : {
2187 "filename" : "./include/control/forwarding.p4",
2188 "line" : 43,
2189 "column" : 8,
2190 "source_fragment" : "hdr.mpls.setInvalid()"
2191 }
2192 },
2193 {
2194 "op" : "assign",
2195 "parameters" : [
2196 {
2197 "type" : "field",
2198 "value" : ["ethernet", "ether_type"]
2199 },
2200 {
2201 "type" : "expression",
2202 "value" : {
2203 "type" : "expression",
2204 "value" : {
2205 "op" : "?",
2206 "left" : {
2207 "type" : "hexstr",
2208 "value" : "0x0800"
2209 },
2210 "right" : {
2211 "type" : "field",
2212 "value" : ["ethernet", "ether_type"]
2213 },
2214 "cond" : {
2215 "type" : "expression",
2216 "value" : {
2217 "op" : "==",
2218 "left" : {
2219 "type" : "field",
2220 "value" : ["ipv4", "$valid$"]
2221 },
2222 "right" : {
2223 "type" : "hexstr",
2224 "value" : "0x01"
2225 }
2226 }
2227 }
2228 }
2229 }
2230 }
2231 ],
2232 "source_info" : {
2233 "filename" : "./include/control/forwarding.p4",
2234 "line" : 45,
2235 "column" : 12,
2236 "source_fragment" : "hdr.ethernet.ether_type ="
2237 }
2238 },
2239 {
2240 "op" : "assign",
2241 "parameters" : [
2242 {
2243 "type" : "field",
2244 "value" : ["ethernet", "ether_type"]
2245 },
2246 {
2247 "type" : "expression",
2248 "value" : {
2249 "type" : "expression",
2250 "value" : {
2251 "op" : "?",
2252 "left" : {
2253 "type" : "hexstr",
2254 "value" : "0x86dd"
2255 },
2256 "right" : {
2257 "type" : "field",
2258 "value" : ["ethernet", "ether_type"]
2259 },
2260 "cond" : {
2261 "type" : "expression",
2262 "value" : {
2263 "op" : "not",
2264 "left" : null,
2265 "right" : {
2266 "type" : "expression",
2267 "value" : {
2268 "op" : "==",
2269 "left" : {
2270 "type" : "field",
2271 "value" : ["ipv4", "$valid$"]
2272 },
2273 "right" : {
2274 "type" : "hexstr",
2275 "value" : "0x01"
2276 }
2277 }
2278 }
2279 }
2280 }
2281 }
2282 }
2283 }
2284 ],
2285 "source_info" : {
2286 "filename" : "./include/control/forwarding.p4",
2287 "line" : 47,
2288 "column" : 12,
2289 "source_fragment" : "hdr.ethernet.ether_type ="
2290 }
2291 },
2292 {
2293 "op" : "assign",
2294 "parameters" : [
2295 {
2296 "type" : "field",
2297 "value" : ["scalars", "fabric_metadata_t.next_id"]
2298 },
2299 {
2300 "type" : "runtime_data",
2301 "value" : 0
2302 }
2303 ],
2304 "source_info" : {
2305 "filename" : "./include/control/forwarding.p4",
2306 "line" : 49,
2307 "column" : 8,
2308 "source_fragment" : "fabric_metadata.next_id = next_id"
2309 }
2310 }
2311 ]
2312 },
2313 {
2314 "name" : "forwarding.push_mpls_and_next_v4",
2315 "id" : 24,
2316 "runtime_data" : [
2317 {
2318 "name" : "label",
2319 "bitwidth" : 20
2320 },
2321 {
2322 "name" : "next_id",
2323 "bitwidth" : 32
2324 }
2325 ],
2326 "primitives" : [
2327 {
2328 "op" : "assign",
2329 "parameters" : [
2330 {
2331 "type" : "field",
2332 "value" : ["scalars", "fabric_metadata_t.next_id"]
2333 },
2334 {
2335 "type" : "runtime_data",
2336 "value" : 1
2337 }
2338 ],
2339 "source_info" : {
2340 "filename" : "./include/control/forwarding.p4",
2341 "line" : 39,
2342 "column" : 8,
2343 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
2344 }
2345 },
2346 {
2347 "op" : "add_header",
2348 "parameters" : [
2349 {
2350 "type" : "header",
2351 "value" : "mpls"
2352 }
2353 ],
2354 "source_info" : {
2355 "filename" : "./include/control/forwarding.p4",
2356 "line" : 54,
2357 "column" : 8,
2358 "source_fragment" : "hdr.mpls.setValid()"
2359 }
2360 },
2361 {
2362 "op" : "assign",
2363 "parameters" : [
2364 {
2365 "type" : "field",
2366 "value" : ["ethernet", "ether_type"]
2367 },
2368 {
2369 "type" : "hexstr",
2370 "value" : "0x8847"
2371 }
2372 ],
2373 "source_info" : {
2374 "filename" : "./include/control/../define.p4",
2375 "line" : 34,
2376 "column" : 31,
2377 "source_fragment" : "0x8847; ..."
2378 }
2379 },
2380 {
2381 "op" : "assign",
2382 "parameters" : [
2383 {
2384 "type" : "field",
2385 "value" : ["mpls", "label"]
2386 },
2387 {
2388 "type" : "runtime_data",
2389 "value" : 0
2390 }
2391 ],
2392 "source_info" : {
2393 "filename" : "./include/control/forwarding.p4",
2394 "line" : 56,
2395 "column" : 8,
2396 "source_fragment" : "hdr.mpls.label = label; ..."
2397 }
2398 },
2399 {
2400 "op" : "assign",
2401 "parameters" : [
2402 {
2403 "type" : "field",
2404 "value" : ["mpls", "tc"]
2405 },
2406 {
2407 "type" : "expression",
2408 "value" : {
2409 "type" : "expression",
2410 "value" : {
2411 "op" : "&",
2412 "left" : {
2413 "type" : "expression",
2414 "value" : {
2415 "op" : "&",
2416 "left" : {
2417 "type" : "expression",
2418 "value" : {
2419 "op" : ">>",
2420 "left" : {
2421 "type" : "field",
2422 "value" : ["ipv4", "diffserv"]
2423 },
2424 "right" : {
2425 "type" : "hexstr",
2426 "value" : "0x5"
2427 }
2428 }
2429 },
2430 "right" : {
2431 "type" : "hexstr",
2432 "value" : "0xff"
2433 }
2434 }
2435 },
2436 "right" : {
2437 "type" : "hexstr",
2438 "value" : "0x07"
2439 }
2440 }
2441 }
2442 }
2443 ],
2444 "source_info" : {
2445 "filename" : "./include/control/forwarding.p4",
2446 "line" : 57,
2447 "column" : 8,
2448 "source_fragment" : "hdr.mpls.tc = tc; ..."
2449 }
2450 },
2451 {
2452 "op" : "assign",
2453 "parameters" : [
2454 {
2455 "type" : "field",
2456 "value" : ["mpls", "bos"]
2457 },
2458 {
2459 "type" : "hexstr",
2460 "value" : "0x01"
2461 }
2462 ],
2463 "source_info" : {
2464 "filename" : "./include/control/forwarding.p4",
2465 "line" : 58,
2466 "column" : 8,
2467 "source_fragment" : "hdr.mpls.bos = 1"
2468 }
2469 },
2470 {
2471 "op" : "assign",
2472 "parameters" : [
2473 {
2474 "type" : "field",
2475 "value" : ["mpls", "ttl"]
2476 },
2477 {
2478 "type" : "hexstr",
2479 "value" : "0x40"
2480 }
2481 ],
2482 "source_info" : {
2483 "filename" : "./include/control/forwarding.p4",
2484 "line" : 59,
2485 "column" : 8,
2486 "source_fragment" : "hdr.mpls.ttl = 64"
2487 }
2488 }
2489 ]
2490 },
2491 {
2492 "name" : "forwarding.push_mpls_and_next_v6",
2493 "id" : 25,
2494 "runtime_data" : [
2495 {
2496 "name" : "label",
2497 "bitwidth" : 20
2498 },
2499 {
2500 "name" : "next_id",
2501 "bitwidth" : 32
2502 }
2503 ],
2504 "primitives" : [
2505 {
2506 "op" : "assign",
2507 "parameters" : [
2508 {
2509 "type" : "field",
2510 "value" : ["scalars", "fabric_metadata_t.next_id"]
2511 },
2512 {
2513 "type" : "runtime_data",
2514 "value" : 1
2515 }
2516 ],
2517 "source_info" : {
2518 "filename" : "./include/control/forwarding.p4",
2519 "line" : 39,
2520 "column" : 8,
2521 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
2522 }
2523 },
2524 {
2525 "op" : "add_header",
2526 "parameters" : [
2527 {
2528 "type" : "header",
2529 "value" : "mpls"
2530 }
2531 ],
2532 "source_info" : {
2533 "filename" : "./include/control/forwarding.p4",
2534 "line" : 54,
2535 "column" : 8,
2536 "source_fragment" : "hdr.mpls.setValid()"
2537 }
2538 },
2539 {
2540 "op" : "assign",
2541 "parameters" : [
2542 {
2543 "type" : "field",
2544 "value" : ["ethernet", "ether_type"]
2545 },
2546 {
2547 "type" : "hexstr",
2548 "value" : "0x8847"
2549 }
2550 ],
2551 "source_info" : {
2552 "filename" : "./include/control/../define.p4",
2553 "line" : 34,
2554 "column" : 31,
2555 "source_fragment" : "0x8847; ..."
2556 }
2557 },
2558 {
2559 "op" : "assign",
2560 "parameters" : [
2561 {
2562 "type" : "field",
2563 "value" : ["mpls", "label"]
2564 },
2565 {
2566 "type" : "runtime_data",
2567 "value" : 0
2568 }
2569 ],
2570 "source_info" : {
2571 "filename" : "./include/control/forwarding.p4",
2572 "line" : 56,
2573 "column" : 8,
2574 "source_fragment" : "hdr.mpls.label = label; ..."
2575 }
2576 },
2577 {
2578 "op" : "assign",
2579 "parameters" : [
2580 {
2581 "type" : "field",
2582 "value" : ["mpls", "tc"]
2583 },
2584 {
2585 "type" : "expression",
2586 "value" : {
2587 "type" : "expression",
2588 "value" : {
2589 "op" : "&",
2590 "left" : {
2591 "type" : "expression",
2592 "value" : {
2593 "op" : "&",
2594 "left" : {
2595 "type" : "expression",
2596 "value" : {
2597 "op" : ">>",
2598 "left" : {
2599 "type" : "field",
2600 "value" : ["ipv6", "traffic_class"]
2601 },
2602 "right" : {
2603 "type" : "hexstr",
2604 "value" : "0x5"
2605 }
2606 }
2607 },
2608 "right" : {
2609 "type" : "hexstr",
2610 "value" : "0xff"
2611 }
2612 }
2613 },
2614 "right" : {
2615 "type" : "hexstr",
2616 "value" : "0x07"
2617 }
2618 }
2619 }
2620 }
2621 ],
2622 "source_info" : {
2623 "filename" : "./include/control/forwarding.p4",
2624 "line" : 57,
2625 "column" : 8,
2626 "source_fragment" : "hdr.mpls.tc = tc; ..."
2627 }
2628 },
2629 {
2630 "op" : "assign",
2631 "parameters" : [
2632 {
2633 "type" : "field",
2634 "value" : ["mpls", "bos"]
2635 },
2636 {
2637 "type" : "hexstr",
2638 "value" : "0x01"
2639 }
2640 ],
2641 "source_info" : {
2642 "filename" : "./include/control/forwarding.p4",
2643 "line" : 58,
2644 "column" : 8,
2645 "source_fragment" : "hdr.mpls.bos = 1"
2646 }
2647 },
2648 {
2649 "op" : "assign",
2650 "parameters" : [
2651 {
2652 "type" : "field",
2653 "value" : ["mpls", "ttl"]
2654 },
2655 {
2656 "type" : "hexstr",
2657 "value" : "0x40"
2658 }
2659 ],
2660 "source_info" : {
2661 "filename" : "./include/control/forwarding.p4",
2662 "line" : 59,
2663 "column" : 8,
2664 "source_fragment" : "hdr.mpls.ttl = 64"
2665 }
2666 }
2667 ]
2668 },
2669 {
2670 "name" : "forwarding.duplicate_to_controller",
2671 "id" : 26,
2672 "runtime_data" : [],
2673 "primitives" : [
2674 {
2675 "op" : "assign",
2676 "parameters" : [
2677 {
2678 "type" : "field",
2679 "value" : ["scalars", "fabric_metadata_t.next_type"]
2680 },
2681 {
2682 "type" : "hexstr",
2683 "value" : "0x03"
2684 }
2685 ],
2686 "source_info" : {
2687 "filename" : "./include/control/../header.p4",
2688 "line" : 19,
2689 "column" : 35,
2690 "source_fragment" : "3; ..."
2691 }
2692 },
2693 {
2694 "op" : "assign",
2695 "parameters" : [
2696 {
2697 "type" : "field",
2698 "value" : ["standard_metadata", "egress_spec"]
2699 },
2700 {
2701 "type" : "hexstr",
2702 "value" : "0x00ff"
2703 }
2704 ],
2705 "source_info" : {
2706 "filename" : "./include/control/../define.p4",
2707 "line" : 48,
2708 "column" : 28,
2709 "source_fragment" : "255; ..."
2710 }
2711 }
2712 ]
2713 },
2714 {
2715 "name" : "next.set_next_type",
2716 "id" : 27,
2717 "runtime_data" : [
2718 {
2719 "name" : "next_type",
2720 "bitwidth" : 3
2721 }
2722 ],
2723 "primitives" : [
2724 {
2725 "op" : "assign",
2726 "parameters" : [
2727 {
2728 "type" : "field",
2729 "value" : ["scalars", "fabric_metadata_t.next_type"]
2730 },
2731 {
2732 "type" : "runtime_data",
2733 "value" : 0
2734 }
2735 ],
2736 "source_info" : {
2737 "filename" : "./include/control/next.p4",
2738 "line" : 34,
2739 "column" : 8,
2740 "source_fragment" : "fabric_metadata.next_type = next_type"
2741 }
2742 }
2743 ]
2744 },
2745 {
2746 "name" : "next.output",
2747 "id" : 28,
2748 "runtime_data" : [
2749 {
2750 "name" : "port_num",
2751 "bitwidth" : 9
2752 }
2753 ],
2754 "primitives" : [
2755 {
2756 "op" : "assign",
2757 "parameters" : [
2758 {
2759 "type" : "field",
2760 "value" : ["standard_metadata", "egress_spec"]
2761 },
2762 {
2763 "type" : "runtime_data",
2764 "value" : 0
2765 }
2766 ],
2767 "source_info" : {
2768 "filename" : "./include/control/next.p4",
2769 "line" : 38,
2770 "column" : 8,
2771 "source_fragment" : "standard_metadata.egress_spec = port_num"
2772 }
2773 },
2774 {
2775 "op" : "assign",
2776 "parameters" : [
2777 {
2778 "type" : "field",
2779 "value" : ["ipv4", "ttl"]
2780 },
2781 {
2782 "type" : "expression",
2783 "value" : {
2784 "type" : "expression",
2785 "value" : {
2786 "op" : "?",
2787 "left" : {
2788 "type" : "expression",
2789 "value" : {
2790 "op" : "&",
2791 "left" : {
2792 "type" : "expression",
2793 "value" : {
2794 "op" : "+",
2795 "left" : {
2796 "type" : "field",
2797 "value" : ["ipv4", "ttl"]
2798 },
2799 "right" : {
2800 "type" : "hexstr",
2801 "value" : "0xff"
2802 }
2803 }
2804 },
2805 "right" : {
2806 "type" : "hexstr",
2807 "value" : "0xff"
2808 }
2809 }
2810 },
2811 "right" : {
2812 "type" : "field",
2813 "value" : ["ipv4", "ttl"]
2814 },
2815 "cond" : {
2816 "type" : "expression",
2817 "value" : {
2818 "op" : "and",
2819 "left" : {
2820 "type" : "expression",
2821 "value" : {
2822 "op" : "!=",
2823 "left" : {
2824 "type" : "field",
2825 "value" : ["mpls", "$valid$"]
2826 },
2827 "right" : {
2828 "type" : "hexstr",
2829 "value" : "0x01"
2830 }
2831 }
2832 },
2833 "right" : {
2834 "type" : "expression",
2835 "value" : {
2836 "op" : "==",
2837 "left" : {
2838 "type" : "field",
2839 "value" : ["ipv4", "$valid$"]
2840 },
2841 "right" : {
2842 "type" : "hexstr",
2843 "value" : "0x01"
2844 }
2845 }
2846 }
2847 }
2848 }
2849 }
2850 }
2851 }
2852 ],
2853 "source_info" : {
2854 "filename" : "./include/control/next.p4",
2855 "line" : 41,
2856 "column" : 16,
2857 "source_fragment" : "hdr.ipv4.ttl ="
2858 }
2859 },
2860 {
2861 "op" : "assign",
2862 "parameters" : [
2863 {
2864 "type" : "field",
2865 "value" : ["ipv6", "hop_limit"]
2866 },
2867 {
2868 "type" : "expression",
2869 "value" : {
2870 "type" : "expression",
2871 "value" : {
2872 "op" : "?",
2873 "left" : {
2874 "type" : "expression",
2875 "value" : {
2876 "op" : "&",
2877 "left" : {
2878 "type" : "expression",
2879 "value" : {
2880 "op" : "+",
2881 "left" : {
2882 "type" : "field",
2883 "value" : ["ipv6", "hop_limit"]
2884 },
2885 "right" : {
2886 "type" : "hexstr",
2887 "value" : "0xff"
2888 }
2889 }
2890 },
2891 "right" : {
2892 "type" : "hexstr",
2893 "value" : "0xff"
2894 }
2895 }
2896 },
2897 "right" : {
2898 "type" : "field",
2899 "value" : ["ipv6", "hop_limit"]
2900 },
2901 "cond" : {
2902 "type" : "expression",
2903 "value" : {
2904 "op" : "and",
2905 "left" : {
2906 "type" : "expression",
2907 "value" : {
2908 "op" : "and",
2909 "left" : {
2910 "type" : "expression",
2911 "value" : {
2912 "op" : "!=",
2913 "left" : {
2914 "type" : "field",
2915 "value" : ["mpls", "$valid$"]
2916 },
2917 "right" : {
2918 "type" : "hexstr",
2919 "value" : "0x01"
2920 }
2921 }
2922 },
2923 "right" : {
2924 "type" : "expression",
2925 "value" : {
2926 "op" : "not",
2927 "left" : null,
2928 "right" : {
2929 "type" : "expression",
2930 "value" : {
2931 "op" : "==",
2932 "left" : {
2933 "type" : "field",
2934 "value" : ["ipv4", "$valid$"]
2935 },
2936 "right" : {
2937 "type" : "hexstr",
2938 "value" : "0x01"
2939 }
2940 }
2941 }
2942 }
2943 }
2944 }
2945 },
2946 "right" : {
2947 "type" : "expression",
2948 "value" : {
2949 "op" : "==",
2950 "left" : {
2951 "type" : "field",
2952 "value" : ["ipv6", "$valid$"]
2953 },
2954 "right" : {
2955 "type" : "hexstr",
2956 "value" : "0x01"
2957 }
2958 }
2959 }
2960 }
2961 }
2962 }
2963 }
2964 }
2965 ],
2966 "source_info" : {
2967 "filename" : "./include/control/next.p4",
2968 "line" : 44,
2969 "column" : 16,
2970 "source_fragment" : "hdr.ipv6.hop_limit ="
2971 }
2972 }
2973 ]
2974 },
2975 {
2976 "name" : "next.set_vlan_output",
2977 "id" : 29,
2978 "runtime_data" : [
2979 {
2980 "name" : "new_vlan_id",
2981 "bitwidth" : 12
2982 },
2983 {
2984 "name" : "port_num",
2985 "bitwidth" : 9
2986 }
2987 ],
2988 "primitives" : [
2989 {
2990 "op" : "assign",
2991 "parameters" : [
2992 {
2993 "type" : "field",
2994 "value" : ["vlan_tag", "vlan_id"]
2995 },
2996 {
2997 "type" : "runtime_data",
2998 "value" : 0
2999 }
3000 ],
3001 "source_info" : {
3002 "filename" : "./include/control/next.p4",
3003 "line" : 50,
3004 "column" : 8,
3005 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
3006 }
3007 },
3008 {
3009 "op" : "assign",
3010 "parameters" : [
3011 {
3012 "type" : "field",
3013 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
3014 },
3015 {
3016 "type" : "expression",
3017 "value" : {
3018 "type" : "expression",
3019 "value" : {
3020 "op" : "b2d",
3021 "left" : null,
3022 "right" : {
3023 "type" : "bool",
3024 "value" : false
3025 }
3026 }
3027 }
3028 }
3029 ],
3030 "source_info" : {
3031 "filename" : "./include/control/next.p4",
3032 "line" : 53,
3033 "column" : 8,
3034 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
3035 }
3036 },
3037 {
3038 "op" : "assign",
3039 "parameters" : [
3040 {
3041 "type" : "field",
3042 "value" : ["standard_metadata", "egress_spec"]
3043 },
3044 {
3045 "type" : "runtime_data",
3046 "value" : 1
3047 }
3048 ],
3049 "source_info" : {
3050 "filename" : "./include/control/next.p4",
3051 "line" : 38,
3052 "column" : 8,
3053 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3054 }
3055 },
3056 {
3057 "op" : "assign",
3058 "parameters" : [
3059 {
3060 "type" : "field",
3061 "value" : ["ipv4", "ttl"]
3062 },
3063 {
3064 "type" : "expression",
3065 "value" : {
3066 "type" : "expression",
3067 "value" : {
3068 "op" : "?",
3069 "left" : {
3070 "type" : "expression",
3071 "value" : {
3072 "op" : "&",
3073 "left" : {
3074 "type" : "expression",
3075 "value" : {
3076 "op" : "+",
3077 "left" : {
3078 "type" : "field",
3079 "value" : ["ipv4", "ttl"]
3080 },
3081 "right" : {
3082 "type" : "hexstr",
3083 "value" : "0xff"
3084 }
3085 }
3086 },
3087 "right" : {
3088 "type" : "hexstr",
3089 "value" : "0xff"
3090 }
3091 }
3092 },
3093 "right" : {
3094 "type" : "field",
3095 "value" : ["ipv4", "ttl"]
3096 },
3097 "cond" : {
3098 "type" : "expression",
3099 "value" : {
3100 "op" : "and",
3101 "left" : {
3102 "type" : "expression",
3103 "value" : {
3104 "op" : "!=",
3105 "left" : {
3106 "type" : "field",
3107 "value" : ["mpls", "$valid$"]
3108 },
3109 "right" : {
3110 "type" : "hexstr",
3111 "value" : "0x01"
3112 }
3113 }
3114 },
3115 "right" : {
3116 "type" : "expression",
3117 "value" : {
3118 "op" : "==",
3119 "left" : {
3120 "type" : "field",
3121 "value" : ["ipv4", "$valid$"]
3122 },
3123 "right" : {
3124 "type" : "hexstr",
3125 "value" : "0x01"
3126 }
3127 }
3128 }
3129 }
3130 }
3131 }
3132 }
3133 }
3134 ],
3135 "source_info" : {
3136 "filename" : "./include/control/next.p4",
3137 "line" : 41,
3138 "column" : 16,
3139 "source_fragment" : "hdr.ipv4.ttl ="
3140 }
3141 },
3142 {
3143 "op" : "assign",
3144 "parameters" : [
3145 {
3146 "type" : "field",
3147 "value" : ["ipv6", "hop_limit"]
3148 },
3149 {
3150 "type" : "expression",
3151 "value" : {
3152 "type" : "expression",
3153 "value" : {
3154 "op" : "?",
3155 "left" : {
3156 "type" : "expression",
3157 "value" : {
3158 "op" : "&",
3159 "left" : {
3160 "type" : "expression",
3161 "value" : {
3162 "op" : "+",
3163 "left" : {
3164 "type" : "field",
3165 "value" : ["ipv6", "hop_limit"]
3166 },
3167 "right" : {
3168 "type" : "hexstr",
3169 "value" : "0xff"
3170 }
3171 }
3172 },
3173 "right" : {
3174 "type" : "hexstr",
3175 "value" : "0xff"
3176 }
3177 }
3178 },
3179 "right" : {
3180 "type" : "field",
3181 "value" : ["ipv6", "hop_limit"]
3182 },
3183 "cond" : {
3184 "type" : "expression",
3185 "value" : {
3186 "op" : "and",
3187 "left" : {
3188 "type" : "expression",
3189 "value" : {
3190 "op" : "and",
3191 "left" : {
3192 "type" : "expression",
3193 "value" : {
3194 "op" : "!=",
3195 "left" : {
3196 "type" : "field",
3197 "value" : ["mpls", "$valid$"]
3198 },
3199 "right" : {
3200 "type" : "hexstr",
3201 "value" : "0x01"
3202 }
3203 }
3204 },
3205 "right" : {
3206 "type" : "expression",
3207 "value" : {
3208 "op" : "not",
3209 "left" : null,
3210 "right" : {
3211 "type" : "expression",
3212 "value" : {
3213 "op" : "==",
3214 "left" : {
3215 "type" : "field",
3216 "value" : ["ipv4", "$valid$"]
3217 },
3218 "right" : {
3219 "type" : "hexstr",
3220 "value" : "0x01"
3221 }
3222 }
3223 }
3224 }
3225 }
3226 }
3227 },
3228 "right" : {
3229 "type" : "expression",
3230 "value" : {
3231 "op" : "==",
3232 "left" : {
3233 "type" : "field",
3234 "value" : ["ipv6", "$valid$"]
3235 },
3236 "right" : {
3237 "type" : "hexstr",
3238 "value" : "0x01"
3239 }
3240 }
3241 }
3242 }
3243 }
3244 }
3245 }
3246 }
3247 ],
3248 "source_info" : {
3249 "filename" : "./include/control/next.p4",
3250 "line" : 44,
3251 "column" : 16,
3252 "source_fragment" : "hdr.ipv6.hop_limit ="
3253 }
3254 }
3255 ]
3256 },
3257 {
3258 "name" : "next.l3_routing",
3259 "id" : 30,
3260 "runtime_data" : [
3261 {
3262 "name" : "port_num",
3263 "bitwidth" : 9
3264 },
3265 {
3266 "name" : "smac",
3267 "bitwidth" : 48
3268 },
3269 {
3270 "name" : "dmac",
3271 "bitwidth" : 48
3272 }
3273 ],
3274 "primitives" : [
3275 {
3276 "op" : "assign",
3277 "parameters" : [
3278 {
3279 "type" : "field",
3280 "value" : ["ethernet", "src_addr"]
3281 },
3282 {
3283 "type" : "runtime_data",
3284 "value" : 1
3285 }
3286 ],
3287 "source_info" : {
3288 "filename" : "./include/control/next.p4",
3289 "line" : 58,
3290 "column" : 8,
3291 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3292 }
3293 },
3294 {
3295 "op" : "assign",
3296 "parameters" : [
3297 {
3298 "type" : "field",
3299 "value" : ["ethernet", "dst_addr"]
3300 },
3301 {
3302 "type" : "runtime_data",
3303 "value" : 2
3304 }
3305 ],
3306 "source_info" : {
3307 "filename" : "./include/control/next.p4",
3308 "line" : 62,
3309 "column" : 8,
3310 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3311 }
3312 },
3313 {
3314 "op" : "assign",
3315 "parameters" : [
3316 {
3317 "type" : "field",
3318 "value" : ["standard_metadata", "egress_spec"]
3319 },
3320 {
3321 "type" : "runtime_data",
3322 "value" : 0
3323 }
3324 ],
3325 "source_info" : {
3326 "filename" : "./include/control/next.p4",
3327 "line" : 38,
3328 "column" : 8,
3329 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3330 }
3331 },
3332 {
3333 "op" : "assign",
3334 "parameters" : [
3335 {
3336 "type" : "field",
3337 "value" : ["ipv4", "ttl"]
3338 },
3339 {
3340 "type" : "expression",
3341 "value" : {
3342 "type" : "expression",
3343 "value" : {
3344 "op" : "?",
3345 "left" : {
3346 "type" : "expression",
3347 "value" : {
3348 "op" : "&",
3349 "left" : {
3350 "type" : "expression",
3351 "value" : {
3352 "op" : "+",
3353 "left" : {
3354 "type" : "field",
3355 "value" : ["ipv4", "ttl"]
3356 },
3357 "right" : {
3358 "type" : "hexstr",
3359 "value" : "0xff"
3360 }
3361 }
3362 },
3363 "right" : {
3364 "type" : "hexstr",
3365 "value" : "0xff"
3366 }
3367 }
3368 },
3369 "right" : {
3370 "type" : "field",
3371 "value" : ["ipv4", "ttl"]
3372 },
3373 "cond" : {
3374 "type" : "expression",
3375 "value" : {
3376 "op" : "and",
3377 "left" : {
3378 "type" : "expression",
3379 "value" : {
3380 "op" : "!=",
3381 "left" : {
3382 "type" : "field",
3383 "value" : ["mpls", "$valid$"]
3384 },
3385 "right" : {
3386 "type" : "hexstr",
3387 "value" : "0x01"
3388 }
3389 }
3390 },
3391 "right" : {
3392 "type" : "expression",
3393 "value" : {
3394 "op" : "==",
3395 "left" : {
3396 "type" : "field",
3397 "value" : ["ipv4", "$valid$"]
3398 },
3399 "right" : {
3400 "type" : "hexstr",
3401 "value" : "0x01"
3402 }
3403 }
3404 }
3405 }
3406 }
3407 }
3408 }
3409 }
3410 ],
3411 "source_info" : {
3412 "filename" : "./include/control/next.p4",
3413 "line" : 41,
3414 "column" : 16,
3415 "source_fragment" : "hdr.ipv4.ttl ="
3416 }
3417 },
3418 {
3419 "op" : "assign",
3420 "parameters" : [
3421 {
3422 "type" : "field",
3423 "value" : ["ipv6", "hop_limit"]
3424 },
3425 {
3426 "type" : "expression",
3427 "value" : {
3428 "type" : "expression",
3429 "value" : {
3430 "op" : "?",
3431 "left" : {
3432 "type" : "expression",
3433 "value" : {
3434 "op" : "&",
3435 "left" : {
3436 "type" : "expression",
3437 "value" : {
3438 "op" : "+",
3439 "left" : {
3440 "type" : "field",
3441 "value" : ["ipv6", "hop_limit"]
3442 },
3443 "right" : {
3444 "type" : "hexstr",
3445 "value" : "0xff"
3446 }
3447 }
3448 },
3449 "right" : {
3450 "type" : "hexstr",
3451 "value" : "0xff"
3452 }
3453 }
3454 },
3455 "right" : {
3456 "type" : "field",
3457 "value" : ["ipv6", "hop_limit"]
3458 },
3459 "cond" : {
3460 "type" : "expression",
3461 "value" : {
3462 "op" : "and",
3463 "left" : {
3464 "type" : "expression",
3465 "value" : {
3466 "op" : "and",
3467 "left" : {
3468 "type" : "expression",
3469 "value" : {
3470 "op" : "!=",
3471 "left" : {
3472 "type" : "field",
3473 "value" : ["mpls", "$valid$"]
3474 },
3475 "right" : {
3476 "type" : "hexstr",
3477 "value" : "0x01"
3478 }
3479 }
3480 },
3481 "right" : {
3482 "type" : "expression",
3483 "value" : {
3484 "op" : "not",
3485 "left" : null,
3486 "right" : {
3487 "type" : "expression",
3488 "value" : {
3489 "op" : "==",
3490 "left" : {
3491 "type" : "field",
3492 "value" : ["ipv4", "$valid$"]
3493 },
3494 "right" : {
3495 "type" : "hexstr",
3496 "value" : "0x01"
3497 }
3498 }
3499 }
3500 }
3501 }
3502 }
3503 },
3504 "right" : {
3505 "type" : "expression",
3506 "value" : {
3507 "op" : "==",
3508 "left" : {
3509 "type" : "field",
3510 "value" : ["ipv6", "$valid$"]
3511 },
3512 "right" : {
3513 "type" : "hexstr",
3514 "value" : "0x01"
3515 }
3516 }
3517 }
3518 }
3519 }
3520 }
3521 }
3522 }
3523 ],
3524 "source_info" : {
3525 "filename" : "./include/control/next.p4",
3526 "line" : 44,
3527 "column" : 16,
3528 "source_fragment" : "hdr.ipv6.hop_limit ="
3529 }
3530 }
3531 ]
3532 },
3533 {
3534 "name" : "next.l3_routing",
3535 "id" : 31,
3536 "runtime_data" : [
3537 {
3538 "name" : "port_num",
3539 "bitwidth" : 9
3540 },
3541 {
3542 "name" : "smac",
3543 "bitwidth" : 48
3544 },
3545 {
3546 "name" : "dmac",
3547 "bitwidth" : 48
3548 }
3549 ],
3550 "primitives" : [
3551 {
3552 "op" : "assign",
3553 "parameters" : [
3554 {
3555 "type" : "field",
3556 "value" : ["ethernet", "src_addr"]
3557 },
3558 {
3559 "type" : "runtime_data",
3560 "value" : 1
3561 }
3562 ],
3563 "source_info" : {
3564 "filename" : "./include/control/next.p4",
3565 "line" : 58,
3566 "column" : 8,
3567 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3568 }
3569 },
3570 {
3571 "op" : "assign",
3572 "parameters" : [
3573 {
3574 "type" : "field",
3575 "value" : ["ethernet", "dst_addr"]
3576 },
3577 {
3578 "type" : "runtime_data",
3579 "value" : 2
3580 }
3581 ],
3582 "source_info" : {
3583 "filename" : "./include/control/next.p4",
3584 "line" : 62,
3585 "column" : 8,
3586 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3587 }
3588 },
3589 {
3590 "op" : "assign",
3591 "parameters" : [
3592 {
3593 "type" : "field",
3594 "value" : ["standard_metadata", "egress_spec"]
3595 },
3596 {
3597 "type" : "runtime_data",
3598 "value" : 0
3599 }
3600 ],
3601 "source_info" : {
3602 "filename" : "./include/control/next.p4",
3603 "line" : 38,
3604 "column" : 8,
3605 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3606 }
3607 },
3608 {
3609 "op" : "assign",
3610 "parameters" : [
3611 {
3612 "type" : "field",
3613 "value" : ["ipv4", "ttl"]
3614 },
3615 {
3616 "type" : "expression",
3617 "value" : {
3618 "type" : "expression",
3619 "value" : {
3620 "op" : "?",
3621 "left" : {
3622 "type" : "expression",
3623 "value" : {
3624 "op" : "&",
3625 "left" : {
3626 "type" : "expression",
3627 "value" : {
3628 "op" : "+",
3629 "left" : {
3630 "type" : "field",
3631 "value" : ["ipv4", "ttl"]
3632 },
3633 "right" : {
3634 "type" : "hexstr",
3635 "value" : "0xff"
3636 }
3637 }
3638 },
3639 "right" : {
3640 "type" : "hexstr",
3641 "value" : "0xff"
3642 }
3643 }
3644 },
3645 "right" : {
3646 "type" : "field",
3647 "value" : ["ipv4", "ttl"]
3648 },
3649 "cond" : {
3650 "type" : "expression",
3651 "value" : {
3652 "op" : "and",
3653 "left" : {
3654 "type" : "expression",
3655 "value" : {
3656 "op" : "!=",
3657 "left" : {
3658 "type" : "field",
3659 "value" : ["mpls", "$valid$"]
3660 },
3661 "right" : {
3662 "type" : "hexstr",
3663 "value" : "0x01"
3664 }
3665 }
3666 },
3667 "right" : {
3668 "type" : "expression",
3669 "value" : {
3670 "op" : "==",
3671 "left" : {
3672 "type" : "field",
3673 "value" : ["ipv4", "$valid$"]
3674 },
3675 "right" : {
3676 "type" : "hexstr",
3677 "value" : "0x01"
3678 }
3679 }
3680 }
3681 }
3682 }
3683 }
3684 }
3685 }
3686 ],
3687 "source_info" : {
3688 "filename" : "./include/control/next.p4",
3689 "line" : 41,
3690 "column" : 16,
3691 "source_fragment" : "hdr.ipv4.ttl ="
3692 }
3693 },
3694 {
3695 "op" : "assign",
3696 "parameters" : [
3697 {
3698 "type" : "field",
3699 "value" : ["ipv6", "hop_limit"]
3700 },
3701 {
3702 "type" : "expression",
3703 "value" : {
3704 "type" : "expression",
3705 "value" : {
3706 "op" : "?",
3707 "left" : {
3708 "type" : "expression",
3709 "value" : {
3710 "op" : "&",
3711 "left" : {
3712 "type" : "expression",
3713 "value" : {
3714 "op" : "+",
3715 "left" : {
3716 "type" : "field",
3717 "value" : ["ipv6", "hop_limit"]
3718 },
3719 "right" : {
3720 "type" : "hexstr",
3721 "value" : "0xff"
3722 }
3723 }
3724 },
3725 "right" : {
3726 "type" : "hexstr",
3727 "value" : "0xff"
3728 }
3729 }
3730 },
3731 "right" : {
3732 "type" : "field",
3733 "value" : ["ipv6", "hop_limit"]
3734 },
3735 "cond" : {
3736 "type" : "expression",
3737 "value" : {
3738 "op" : "and",
3739 "left" : {
3740 "type" : "expression",
3741 "value" : {
3742 "op" : "and",
3743 "left" : {
3744 "type" : "expression",
3745 "value" : {
3746 "op" : "!=",
3747 "left" : {
3748 "type" : "field",
3749 "value" : ["mpls", "$valid$"]
3750 },
3751 "right" : {
3752 "type" : "hexstr",
3753 "value" : "0x01"
3754 }
3755 }
3756 },
3757 "right" : {
3758 "type" : "expression",
3759 "value" : {
3760 "op" : "not",
3761 "left" : null,
3762 "right" : {
3763 "type" : "expression",
3764 "value" : {
3765 "op" : "==",
3766 "left" : {
3767 "type" : "field",
3768 "value" : ["ipv4", "$valid$"]
3769 },
3770 "right" : {
3771 "type" : "hexstr",
3772 "value" : "0x01"
3773 }
3774 }
3775 }
3776 }
3777 }
3778 }
3779 },
3780 "right" : {
3781 "type" : "expression",
3782 "value" : {
3783 "op" : "==",
3784 "left" : {
3785 "type" : "field",
3786 "value" : ["ipv6", "$valid$"]
3787 },
3788 "right" : {
3789 "type" : "hexstr",
3790 "value" : "0x01"
3791 }
3792 }
3793 }
3794 }
3795 }
3796 }
3797 }
3798 }
3799 ],
3800 "source_info" : {
3801 "filename" : "./include/control/next.p4",
3802 "line" : 44,
3803 "column" : 16,
3804 "source_fragment" : "hdr.ipv6.hop_limit ="
3805 }
3806 }
3807 ]
3808 },
3809 {
3810 "name" : "next.set_mcast_group",
3811 "id" : 32,
3812 "runtime_data" : [
3813 {
3814 "name" : "gid",
3815 "bitwidth" : 16
3816 },
3817 {
3818 "name" : "smac",
3819 "bitwidth" : 48
3820 }
3821 ],
3822 "primitives" : [
3823 {
3824 "op" : "assign",
3825 "parameters" : [
3826 {
3827 "type" : "field",
3828 "value" : ["standard_metadata", "mcast_grp"]
3829 },
3830 {
3831 "type" : "runtime_data",
3832 "value" : 0
3833 }
3834 ],
3835 "source_info" : {
3836 "filename" : "./include/control/next.p4",
3837 "line" : 72,
3838 "column" : 8,
3839 "source_fragment" : "standard_metadata.mcast_grp = gid"
3840 }
3841 },
3842 {
3843 "op" : "assign",
3844 "parameters" : [
3845 {
3846 "type" : "field",
3847 "value" : ["ethernet", "src_addr"]
3848 },
3849 {
3850 "type" : "runtime_data",
3851 "value" : 1
3852 }
3853 ],
3854 "source_info" : {
3855 "filename" : "./include/control/next.p4",
3856 "line" : 58,
3857 "column" : 8,
3858 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3859 }
3860 }
3861 ]
3862 },
3863 {
3864 "name" : "act",
3865 "id" : 33,
3866 "runtime_data" : [],
3867 "primitives" : [
3868 {
3869 "op" : "assign",
3870 "parameters" : [
3871 {
3872 "type" : "field",
3873 "value" : ["standard_metadata", "egress_spec"]
3874 },
3875 {
3876 "type" : "field",
3877 "value" : ["packet_out", "egress_port"]
3878 }
3879 ],
3880 "source_info" : {
3881 "filename" : "./include/control/packetio.p4",
3882 "line" : 26,
3883 "column" : 12,
3884 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
3885 }
3886 }
3887 ]
3888 },
3889 {
3890 "name" : "act_0",
3891 "id" : 34,
3892 "runtime_data" : [],
3893 "primitives" : [
3894 {
3895 "op" : "assign",
3896 "parameters" : [
3897 {
3898 "type" : "field",
3899 "value" : ["scalars", "tmp_1"]
3900 },
3901 {
3902 "type" : "expression",
3903 "value" : {
3904 "type" : "expression",
3905 "value" : {
3906 "op" : "&",
3907 "left" : {
3908 "type" : "field",
3909 "value" : ["standard_metadata", "egress_spec"]
3910 },
3911 "right" : {
3912 "type" : "hexstr",
3913 "value" : "0xffffffff"
3914 }
3915 }
3916 }
3917 }
3918 ]
3919 },
3920 {
3921 "op" : "count",
3922 "parameters" : [
3923 {
3924 "type" : "counter_array",
3925 "value" : "port_counters_control.egress_port_counter"
3926 },
3927 {
3928 "type" : "field",
3929 "value" : ["scalars", "tmp_1"]
3930 }
3931 ],
3932 "source_info" : {
3933 "filename" : "./include/control/port_counter.p4",
3934 "line" : 28,
3935 "column" : 12,
3936 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
3937 }
3938 }
3939 ]
3940 },
3941 {
3942 "name" : "act_1",
3943 "id" : 35,
3944 "runtime_data" : [],
3945 "primitives" : [
3946 {
3947 "op" : "assign",
3948 "parameters" : [
3949 {
3950 "type" : "field",
3951 "value" : ["scalars", "tmp_2"]
3952 },
3953 {
3954 "type" : "expression",
3955 "value" : {
3956 "type" : "expression",
3957 "value" : {
3958 "op" : "&",
3959 "left" : {
3960 "type" : "field",
3961 "value" : ["standard_metadata", "ingress_port"]
3962 },
3963 "right" : {
3964 "type" : "hexstr",
3965 "value" : "0xffffffff"
3966 }
3967 }
3968 }
3969 }
3970 ]
3971 },
3972 {
3973 "op" : "count",
3974 "parameters" : [
3975 {
3976 "type" : "counter_array",
3977 "value" : "port_counters_control.ingress_port_counter"
3978 },
3979 {
3980 "type" : "field",
3981 "value" : ["scalars", "tmp_2"]
3982 }
3983 ],
3984 "source_info" : {
3985 "filename" : "./include/control/port_counter.p4",
3986 "line" : 31,
3987 "column" : 12,
3988 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
3989 }
3990 }
3991 ]
3992 },
3993 {
3994 "name" : "act_2",
3995 "id" : 36,
3996 "runtime_data" : [],
3997 "primitives" : [
3998 {
3999 "op" : "remove_header",
4000 "parameters" : [
4001 {
4002 "type" : "header",
4003 "value" : "vlan_tag"
4004 }
4005 ],
4006 "source_info" : {
4007 "filename" : "./include/control/next.p4",
4008 "line" : 151,
4009 "column" : 12,
4010 "source_fragment" : "hdr.vlan_tag.setInvalid()"
4011 }
4012 }
4013 ]
4014 },
4015 {
4016 "name" : "act_3",
4017 "id" : 37,
4018 "runtime_data" : [],
4019 "primitives" : [
4020 {
4021 "op" : "add_header",
4022 "parameters" : [
4023 {
4024 "type" : "header",
4025 "value" : "packet_in"
4026 }
4027 ],
4028 "source_info" : {
4029 "filename" : "./include/control/packetio.p4",
4030 "line" : 39,
4031 "column" : 12,
4032 "source_fragment" : "hdr.packet_in.setValid()"
4033 }
4034 },
4035 {
4036 "op" : "assign",
4037 "parameters" : [
4038 {
4039 "type" : "field",
4040 "value" : ["packet_in", "ingress_port"]
4041 },
4042 {
4043 "type" : "field",
4044 "value" : ["standard_metadata", "ingress_port"]
4045 }
4046 ],
4047 "source_info" : {
4048 "filename" : "./include/control/packetio.p4",
4049 "line" : 40,
4050 "column" : 12,
4051 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
4052 }
4053 }
4054 ]
4055 },
4056 {
4057 "name" : "act_4",
4058 "id" : 38,
4059 "runtime_data" : [],
4060 "primitives" : [
4061 {
4062 "op" : "remove_header",
4063 "parameters" : [
4064 {
4065 "type" : "header",
4066 "value" : "packet_out"
4067 }
4068 ],
4069 "source_info" : {
4070 "filename" : "./include/control/packetio.p4",
4071 "line" : 37,
4072 "column" : 8,
4073 "source_fragment" : "hdr.packet_out.setInvalid()"
4074 }
4075 }
4076 ]
4077 }
4078 ],
4079 "pipelines" : [
4080 {
4081 "name" : "ingress",
4082 "id" : 0,
4083 "source_info" : {
4084 "filename" : "fabric.p4",
4085 "line" : 29,
4086 "column" : 8,
4087 "source_fragment" : "FabricIngress"
4088 },
4089 "init_table" : "node_2",
4090 "tables" : [
4091 {
4092 "name" : "tbl_act",
4093 "id" : 0,
4094 "key" : [],
4095 "match_type" : "exact",
4096 "type" : "simple",
4097 "max_size" : 1024,
4098 "with_counters" : false,
4099 "support_timeout" : false,
4100 "direct_meters" : null,
4101 "action_ids" : [33],
4102 "actions" : ["act"],
4103 "base_default_next" : null,
4104 "next_tables" : {
4105 "act" : null
4106 },
4107 "default_entry" : {
4108 "action_id" : 33,
4109 "action_const" : true,
4110 "action_data" : [],
4111 "action_entry_const" : true
4112 }
4113 },
4114 {
4115 "name" : "filtering.ingress_port_vlan",
4116 "id" : 1,
4117 "source_info" : {
4118 "filename" : "./include/control/filtering.p4",
4119 "line" : 53,
4120 "column" : 10,
4121 "source_fragment" : "ingress_port_vlan"
4122 },
4123 "key" : [
4124 {
4125 "match_type" : "exact",
4126 "target" : ["standard_metadata", "ingress_port"],
4127 "mask" : null
4128 },
4129 {
4130 "match_type" : "exact",
4131 "target" : ["vlan_tag", "$valid$"],
4132 "mask" : null
4133 },
4134 {
4135 "match_type" : "ternary",
4136 "target" : ["vlan_tag", "vlan_id"],
4137 "mask" : null
4138 }
4139 ],
4140 "match_type" : "ternary",
4141 "type" : "simple",
4142 "max_size" : 1024,
4143 "support_timeout" : false,
4144 "direct_meters" : null,
4145 "action_ids" : [15, 14, 0, 2],
4146 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "drop"],
4147 "base_default_next" : "filtering.fwd_classifier",
4148 "next_tables" : {
4149 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
4150 "filtering.set_vlan" : "filtering.fwd_classifier",
4151 "nop" : "filtering.fwd_classifier",
4152 "drop" : "filtering.fwd_classifier"
4153 },
4154 "default_entry" : {
4155 "action_id" : 2,
4156 "action_const" : true,
4157 "action_data" : [],
4158 "action_entry_const" : true
4159 }
4160 },
4161 {
4162 "name" : "filtering.fwd_classifier",
4163 "id" : 2,
4164 "source_info" : {
4165 "filename" : "./include/control/filtering.p4",
4166 "line" : 71,
4167 "column" : 10,
4168 "source_fragment" : "fwd_classifier"
4169 },
4170 "key" : [
4171 {
4172 "match_type" : "exact",
4173 "target" : ["standard_metadata", "ingress_port"],
4174 "mask" : null
4175 },
4176 {
4177 "match_type" : "exact",
4178 "target" : ["ethernet", "dst_addr"],
4179 "mask" : null
4180 },
4181 {
4182 "match_type" : "exact",
4183 "target" : ["ethernet", "ether_type"],
4184 "mask" : null
4185 }
4186 ],
4187 "match_type" : "exact",
4188 "type" : "simple",
4189 "max_size" : 1024,
4190 "support_timeout" : false,
4191 "direct_meters" : null,
4192 "action_ids" : [16],
4193 "actions" : ["filtering.set_forwarding_type"],
4194 "base_default_next" : "node_6",
4195 "next_tables" : {
4196 "filtering.set_forwarding_type" : "node_6"
4197 },
4198 "default_entry" : {
4199 "action_id" : 16,
4200 "action_const" : true,
4201 "action_data" : ["0x0"],
4202 "action_entry_const" : true
4203 }
4204 },
4205 {
4206 "name" : "forwarding.bridging",
4207 "id" : 3,
4208 "source_info" : {
4209 "filename" : "./include/control/forwarding.p4",
4210 "line" : 80,
4211 "column" : 10,
4212 "source_fragment" : "bridging"
4213 },
4214 "key" : [
4215 {
4216 "match_type" : "exact",
4217 "target" : ["vlan_tag", "vlan_id"],
4218 "mask" : null
4219 },
4220 {
4221 "match_type" : "ternary",
4222 "target" : ["ethernet", "dst_addr"],
4223 "mask" : null
4224 }
4225 ],
4226 "match_type" : "ternary",
4227 "type" : "simple",
4228 "max_size" : 1024,
4229 "support_timeout" : false,
4230 "direct_meters" : null,
4231 "action_ids" : [17, 4],
4232 "actions" : ["forwarding.set_next_id", "NoAction"],
4233 "base_default_next" : "forwarding.acl",
4234 "next_tables" : {
4235 "forwarding.set_next_id" : "forwarding.acl",
4236 "NoAction" : "forwarding.acl"
4237 },
4238 "default_entry" : {
4239 "action_id" : 4,
4240 "action_const" : false,
4241 "action_data" : [],
4242 "action_entry_const" : false
4243 }
4244 },
4245 {
4246 "name" : "forwarding.mpls",
4247 "id" : 4,
4248 "source_info" : {
4249 "filename" : "./include/control/forwarding.p4",
4250 "line" : 92,
4251 "column" : 10,
4252 "source_fragment" : "mpls"
4253 },
4254 "key" : [
4255 {
4256 "match_type" : "exact",
4257 "target" : ["mpls", "label"],
4258 "mask" : null
4259 }
4260 ],
4261 "match_type" : "exact",
4262 "type" : "simple",
4263 "max_size" : 1024,
4264 "support_timeout" : false,
4265 "direct_meters" : null,
4266 "action_ids" : [23, 5],
4267 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
4268 "base_default_next" : "forwarding.acl",
4269 "next_tables" : {
4270 "forwarding.pop_mpls_and_next" : "forwarding.acl",
4271 "NoAction" : "forwarding.acl"
4272 },
4273 "default_entry" : {
4274 "action_id" : 5,
4275 "action_const" : false,
4276 "action_data" : [],
4277 "action_entry_const" : false
4278 }
4279 },
4280 {
4281 "name" : "forwarding.unicast_v4",
4282 "id" : 5,
4283 "source_info" : {
4284 "filename" : "./include/control/forwarding.p4",
4285 "line" : 103,
4286 "column" : 10,
4287 "source_fragment" : "unicast_v4"
4288 },
4289 "key" : [
4290 {
4291 "match_type" : "lpm",
4292 "target" : ["ipv4", "dst_addr"],
4293 "mask" : null
4294 }
4295 ],
4296 "match_type" : "lpm",
4297 "type" : "simple",
4298 "max_size" : 1024,
4299 "support_timeout" : false,
4300 "direct_meters" : null,
4301 "action_ids" : [18, 24, 6],
4302 "actions" : ["forwarding.set_next_id", "forwarding.push_mpls_and_next_v4", "NoAction"],
4303 "base_default_next" : "forwarding.acl",
4304 "next_tables" : {
4305 "forwarding.set_next_id" : "forwarding.acl",
4306 "forwarding.push_mpls_and_next_v4" : "forwarding.acl",
4307 "NoAction" : "forwarding.acl"
4308 },
4309 "default_entry" : {
4310 "action_id" : 6,
4311 "action_const" : false,
4312 "action_data" : [],
4313 "action_entry_const" : false
4314 }
4315 },
4316 {
4317 "name" : "forwarding.multicast_v4",
4318 "id" : 6,
4319 "source_info" : {
4320 "filename" : "./include/control/forwarding.p4",
4321 "line" : 115,
4322 "column" : 10,
4323 "source_fragment" : "multicast_v4"
4324 },
4325 "key" : [
4326 {
4327 "match_type" : "exact",
4328 "target" : ["vlan_tag", "vlan_id"],
4329 "mask" : null
4330 },
4331 {
4332 "match_type" : "lpm",
4333 "target" : ["ipv4", "dst_addr"],
4334 "mask" : null
4335 }
4336 ],
4337 "match_type" : "lpm",
4338 "type" : "simple",
4339 "max_size" : 1024,
4340 "support_timeout" : false,
4341 "direct_meters" : null,
4342 "action_ids" : [19, 7],
4343 "actions" : ["forwarding.set_next_id", "NoAction"],
4344 "base_default_next" : "forwarding.acl",
4345 "next_tables" : {
4346 "forwarding.set_next_id" : "forwarding.acl",
4347 "NoAction" : "forwarding.acl"
4348 },
4349 "default_entry" : {
4350 "action_id" : 7,
4351 "action_const" : false,
4352 "action_data" : [],
4353 "action_entry_const" : false
4354 }
4355 },
4356 {
4357 "name" : "forwarding.unicast_v6",
4358 "id" : 7,
4359 "source_info" : {
4360 "filename" : "./include/control/forwarding.p4",
4361 "line" : 127,
4362 "column" : 10,
4363 "source_fragment" : "unicast_v6"
4364 },
4365 "key" : [
4366 {
4367 "match_type" : "lpm",
4368 "target" : ["ipv6", "dst_addr"],
4369 "mask" : null
4370 }
4371 ],
4372 "match_type" : "lpm",
4373 "type" : "simple",
4374 "max_size" : 1024,
4375 "support_timeout" : false,
4376 "direct_meters" : null,
4377 "action_ids" : [20, 25, 8],
4378 "actions" : ["forwarding.set_next_id", "forwarding.push_mpls_and_next_v6", "NoAction"],
4379 "base_default_next" : "forwarding.acl",
4380 "next_tables" : {
4381 "forwarding.set_next_id" : "forwarding.acl",
4382 "forwarding.push_mpls_and_next_v6" : "forwarding.acl",
4383 "NoAction" : "forwarding.acl"
4384 },
4385 "default_entry" : {
4386 "action_id" : 8,
4387 "action_const" : false,
4388 "action_data" : [],
4389 "action_entry_const" : false
4390 }
4391 },
4392 {
4393 "name" : "forwarding.multicast_v6",
4394 "id" : 8,
4395 "source_info" : {
4396 "filename" : "./include/control/forwarding.p4",
4397 "line" : 139,
4398 "column" : 10,
4399 "source_fragment" : "multicast_v6"
4400 },
4401 "key" : [
4402 {
4403 "match_type" : "exact",
4404 "target" : ["vlan_tag", "vlan_id"],
4405 "mask" : null
4406 },
4407 {
4408 "match_type" : "lpm",
4409 "target" : ["ipv6", "dst_addr"],
4410 "mask" : null
4411 }
4412 ],
4413 "match_type" : "lpm",
4414 "type" : "simple",
4415 "max_size" : 1024,
4416 "support_timeout" : false,
4417 "direct_meters" : null,
4418 "action_ids" : [21, 9],
4419 "actions" : ["forwarding.set_next_id", "NoAction"],
4420 "base_default_next" : "forwarding.acl",
4421 "next_tables" : {
4422 "forwarding.set_next_id" : "forwarding.acl",
4423 "NoAction" : "forwarding.acl"
4424 },
4425 "default_entry" : {
4426 "action_id" : 9,
4427 "action_const" : false,
4428 "action_data" : [],
4429 "action_entry_const" : false
4430 }
4431 },
4432 {
4433 "name" : "forwarding.acl",
4434 "id" : 9,
4435 "source_info" : {
4436 "filename" : "./include/control/forwarding.p4",
4437 "line" : 151,
4438 "column" : 10,
4439 "source_fragment" : "acl"
4440 },
4441 "key" : [
4442 {
4443 "match_type" : "ternary",
4444 "target" : ["standard_metadata", "ingress_port"],
4445 "mask" : null
4446 },
4447 {
4448 "match_type" : "ternary",
4449 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
4450 "mask" : null
4451 },
4452 {
4453 "match_type" : "ternary",
4454 "target" : ["ethernet", "dst_addr"],
4455 "mask" : null
4456 },
4457 {
4458 "match_type" : "ternary",
4459 "target" : ["ethernet", "src_addr"],
4460 "mask" : null
4461 },
4462 {
4463 "match_type" : "ternary",
4464 "target" : ["ethernet", "ether_type"],
4465 "mask" : null
4466 },
4467 {
4468 "match_type" : "ternary",
4469 "target" : ["vlan_tag", "vlan_id"],
4470 "mask" : null
4471 },
4472 {
4473 "match_type" : "ternary",
4474 "target" : ["vlan_tag", "pri"],
4475 "mask" : null
4476 },
4477 {
4478 "match_type" : "ternary",
4479 "target" : ["mpls", "tc"],
4480 "mask" : null
4481 },
4482 {
4483 "match_type" : "ternary",
4484 "target" : ["mpls", "bos"],
4485 "mask" : null
4486 },
4487 {
4488 "match_type" : "ternary",
4489 "target" : ["mpls", "label"],
4490 "mask" : null
4491 },
4492 {
4493 "match_type" : "ternary",
4494 "target" : ["ipv4", "src_addr"],
4495 "mask" : null
4496 },
4497 {
4498 "match_type" : "ternary",
4499 "target" : ["ipv4", "dst_addr"],
4500 "mask" : null
4501 },
4502 {
4503 "match_type" : "ternary",
4504 "target" : ["ipv4", "protocol"],
4505 "mask" : null
4506 },
4507 {
4508 "match_type" : "ternary",
4509 "target" : ["ipv6", "src_addr"],
4510 "mask" : null
4511 },
4512 {
4513 "match_type" : "ternary",
4514 "target" : ["ipv6", "dst_addr"],
4515 "mask" : null
4516 },
4517 {
4518 "match_type" : "ternary",
4519 "target" : ["ipv6", "next_hdr"],
4520 "mask" : null
4521 },
4522 {
4523 "match_type" : "ternary",
4524 "target" : ["tcp", "src_port"],
4525 "mask" : null
4526 },
4527 {
4528 "match_type" : "ternary",
4529 "target" : ["tcp", "dst_port"],
4530 "mask" : null
4531 },
4532 {
4533 "match_type" : "ternary",
4534 "target" : ["udp", "src_port"],
4535 "mask" : null
4536 },
4537 {
4538 "match_type" : "ternary",
4539 "target" : ["udp", "dst_port"],
4540 "mask" : null
4541 },
4542 {
4543 "match_type" : "ternary",
4544 "target" : ["icmp", "icmp_type"],
4545 "mask" : null
4546 },
4547 {
4548 "match_type" : "ternary",
4549 "target" : ["icmp", "icmp_code"],
4550 "mask" : null
4551 }
4552 ],
4553 "match_type" : "ternary",
4554 "type" : "simple",
4555 "max_size" : 1024,
4556 "support_timeout" : false,
4557 "direct_meters" : null,
4558 "action_ids" : [22, 26, 3, 1],
4559 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "drop", "nop"],
4560 "base_default_next" : "next.next_id_mapping",
4561 "next_tables" : {
4562 "forwarding.set_next_id" : "next.next_id_mapping",
4563 "forwarding.duplicate_to_controller" : "next.next_id_mapping",
4564 "drop" : "next.next_id_mapping",
4565 "nop" : "next.next_id_mapping"
4566 },
4567 "default_entry" : {
4568 "action_id" : 1,
4569 "action_const" : true,
4570 "action_data" : [],
4571 "action_entry_const" : true
4572 }
4573 },
4574 {
4575 "name" : "next.next_id_mapping",
4576 "id" : 10,
4577 "source_info" : {
4578 "filename" : "./include/control/next.p4",
4579 "line" : 76,
4580 "column" : 10,
4581 "source_fragment" : "next_id_mapping"
4582 },
4583 "key" : [
4584 {
4585 "match_type" : "exact",
4586 "target" : ["scalars", "fabric_metadata_t.next_id"],
4587 "mask" : null
4588 }
4589 ],
4590 "match_type" : "exact",
4591 "type" : "simple",
4592 "max_size" : 1024,
4593 "support_timeout" : false,
4594 "direct_meters" : null,
4595 "action_ids" : [27, 10],
4596 "actions" : ["next.set_next_type", "NoAction"],
4597 "base_default_next" : "node_20",
4598 "next_tables" : {
4599 "next.set_next_type" : "node_20",
4600 "NoAction" : "node_20"
4601 },
4602 "default_entry" : {
4603 "action_id" : 10,
4604 "action_const" : false,
4605 "action_data" : [],
4606 "action_entry_const" : false
4607 }
4608 },
4609 {
4610 "name" : "next.simple",
4611 "id" : 11,
4612 "source_info" : {
4613 "filename" : "./include/control/next.p4",
4614 "line" : 87,
4615 "column" : 10,
4616 "source_fragment" : "simple"
4617 },
4618 "key" : [
4619 {
4620 "match_type" : "exact",
4621 "target" : ["scalars", "fabric_metadata_t.next_id"],
4622 "mask" : null
4623 }
4624 ],
4625 "match_type" : "exact",
4626 "type" : "simple",
4627 "max_size" : 1024,
4628 "support_timeout" : false,
4629 "direct_meters" : null,
4630 "action_ids" : [28, 29, 30, 11],
4631 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "NoAction"],
4632 "base_default_next" : "node_26",
4633 "next_tables" : {
4634 "next.output" : "node_26",
4635 "next.set_vlan_output" : "node_26",
4636 "next.l3_routing" : "node_26",
4637 "NoAction" : "node_26"
4638 },
4639 "default_entry" : {
4640 "action_id" : 11,
4641 "action_const" : false,
4642 "action_data" : [],
4643 "action_entry_const" : false
4644 }
4645 },
4646 {
4647 "name" : "next.hashed",
4648 "id" : 12,
4649 "source_info" : {
4650 "filename" : "./include/control/next.p4",
4651 "line" : 100,
4652 "column" : 10,
4653 "source_fragment" : "hashed"
4654 },
4655 "key" : [
4656 {
4657 "match_type" : "exact",
4658 "target" : ["scalars", "fabric_metadata_t.next_id"],
4659 "mask" : null
4660 }
4661 ],
4662 "match_type" : "exact",
4663 "type" : "indirect_ws",
4664 "action_profile" : "next.ecmp_selector",
4665 "max_size" : 1024,
4666 "support_timeout" : false,
4667 "direct_meters" : null,
4668 "action_ids" : [31, 12],
4669 "actions" : ["next.l3_routing", "NoAction"],
4670 "base_default_next" : "node_26",
4671 "next_tables" : {
4672 "next.l3_routing" : "node_26",
4673 "NoAction" : "node_26"
4674 }
4675 },
4676 {
4677 "name" : "next.broadcast",
4678 "id" : 13,
4679 "source_info" : {
4680 "filename" : "./include/control/next.p4",
4681 "line" : 124,
4682 "column" : 10,
4683 "source_fragment" : "broadcast"
4684 },
4685 "key" : [
4686 {
4687 "match_type" : "exact",
4688 "target" : ["scalars", "fabric_metadata_t.next_id"],
4689 "mask" : null
4690 }
4691 ],
4692 "match_type" : "exact",
4693 "type" : "simple",
4694 "max_size" : 1024,
4695 "support_timeout" : false,
4696 "direct_meters" : null,
4697 "action_ids" : [32, 13],
4698 "actions" : ["next.set_mcast_group", "NoAction"],
4699 "base_default_next" : "node_26",
4700 "next_tables" : {
4701 "next.set_mcast_group" : "node_26",
4702 "NoAction" : "node_26"
4703 },
4704 "default_entry" : {
4705 "action_id" : 13,
4706 "action_const" : false,
4707 "action_data" : [],
4708 "action_entry_const" : false
4709 }
4710 },
4711 {
4712 "name" : "tbl_act_0",
4713 "id" : 14,
4714 "key" : [],
4715 "match_type" : "exact",
4716 "type" : "simple",
4717 "max_size" : 1024,
4718 "with_counters" : false,
4719 "support_timeout" : false,
4720 "direct_meters" : null,
4721 "action_ids" : [34],
4722 "actions" : ["act_0"],
4723 "base_default_next" : "node_28",
4724 "next_tables" : {
4725 "act_0" : "node_28"
4726 },
4727 "default_entry" : {
4728 "action_id" : 34,
4729 "action_const" : true,
4730 "action_data" : [],
4731 "action_entry_const" : true
4732 }
4733 },
4734 {
4735 "name" : "tbl_act_1",
4736 "id" : 15,
4737 "key" : [],
4738 "match_type" : "exact",
4739 "type" : "simple",
4740 "max_size" : 1024,
4741 "with_counters" : false,
4742 "support_timeout" : false,
4743 "direct_meters" : null,
4744 "action_ids" : [35],
4745 "actions" : ["act_1"],
4746 "base_default_next" : null,
4747 "next_tables" : {
4748 "act_1" : null
4749 },
4750 "default_entry" : {
4751 "action_id" : 35,
4752 "action_const" : true,
4753 "action_data" : [],
4754 "action_entry_const" : true
4755 }
4756 }
4757 ],
4758 "action_profiles" : [
4759 {
4760 "name" : "next.ecmp_selector",
4761 "id" : 0,
4762 "max_size" : 64,
4763 "selector" : {
4764 "algo" : "crc16",
4765 "input" : [
4766 {
4767 "type" : "field",
4768 "value" : ["ipv4", "src_addr"]
4769 },
4770 {
4771 "type" : "field",
4772 "value" : ["ipv4", "dst_addr"]
4773 },
4774 {
4775 "type" : "field",
4776 "value" : ["ipv4", "protocol"]
4777 },
4778 {
4779 "type" : "field",
4780 "value" : ["ipv6", "src_addr"]
4781 },
4782 {
4783 "type" : "field",
4784 "value" : ["ipv6", "dst_addr"]
4785 },
4786 {
4787 "type" : "field",
4788 "value" : ["ipv6", "next_hdr"]
4789 },
4790 {
4791 "type" : "field",
4792 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
4793 },
4794 {
4795 "type" : "field",
4796 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
4797 }
4798 ]
4799 }
4800 }
4801 ],
4802 "conditionals" : [
4803 {
4804 "name" : "node_2",
4805 "id" : 0,
4806 "source_info" : {
4807 "filename" : "./include/control/packetio.p4",
4808 "line" : 25,
4809 "column" : 12,
4810 "source_fragment" : "hdr.packet_out.isValid()"
4811 },
4812 "expression" : {
4813 "type" : "expression",
4814 "value" : {
4815 "op" : "==",
4816 "left" : {
4817 "type" : "field",
4818 "value" : ["packet_out", "$valid$"]
4819 },
4820 "right" : {
4821 "type" : "hexstr",
4822 "value" : "0x01"
4823 }
4824 }
4825 },
4826 "true_next" : "tbl_act",
4827 "false_next" : "filtering.ingress_port_vlan"
4828 },
4829 {
4830 "name" : "node_6",
4831 "id" : 1,
4832 "source_info" : {
4833 "filename" : "./include/control/forwarding.p4",
4834 "line" : 189,
4835 "column" : 11,
4836 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
4837 },
4838 "expression" : {
4839 "type" : "expression",
4840 "value" : {
4841 "op" : "==",
4842 "left" : {
4843 "type" : "field",
4844 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4845 },
4846 "right" : {
4847 "type" : "hexstr",
4848 "value" : "0x00"
4849 }
4850 }
4851 },
4852 "true_next" : "forwarding.bridging",
4853 "false_next" : "node_8"
4854 },
4855 {
4856 "name" : "node_8",
4857 "id" : 2,
4858 "source_info" : {
4859 "filename" : "./include/control/forwarding.p4",
4860 "line" : 190,
4861 "column" : 17,
4862 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
4863 },
4864 "expression" : {
4865 "type" : "expression",
4866 "value" : {
4867 "op" : "==",
4868 "left" : {
4869 "type" : "field",
4870 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4871 },
4872 "right" : {
4873 "type" : "hexstr",
4874 "value" : "0x01"
4875 }
4876 }
4877 },
4878 "true_next" : "forwarding.mpls",
4879 "false_next" : "node_10"
4880 },
4881 {
4882 "name" : "node_10",
4883 "id" : 3,
4884 "source_info" : {
4885 "filename" : "./include/control/forwarding.p4",
4886 "line" : 191,
4887 "column" : 17,
4888 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
4889 },
4890 "expression" : {
4891 "type" : "expression",
4892 "value" : {
4893 "op" : "==",
4894 "left" : {
4895 "type" : "field",
4896 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4897 },
4898 "right" : {
4899 "type" : "hexstr",
4900 "value" : "0x02"
4901 }
4902 }
4903 },
4904 "true_next" : "forwarding.unicast_v4",
4905 "false_next" : "node_12"
4906 },
4907 {
4908 "name" : "node_12",
4909 "id" : 4,
4910 "source_info" : {
4911 "filename" : "./include/control/forwarding.p4",
4912 "line" : 192,
4913 "column" : 17,
4914 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
4915 },
4916 "expression" : {
4917 "type" : "expression",
4918 "value" : {
4919 "op" : "==",
4920 "left" : {
4921 "type" : "field",
4922 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4923 },
4924 "right" : {
4925 "type" : "hexstr",
4926 "value" : "0x03"
4927 }
4928 }
4929 },
4930 "true_next" : "forwarding.multicast_v4",
4931 "false_next" : "node_14"
4932 },
4933 {
4934 "name" : "node_14",
4935 "id" : 5,
4936 "source_info" : {
4937 "filename" : "./include/control/forwarding.p4",
4938 "line" : 193,
4939 "column" : 17,
4940 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
4941 },
4942 "expression" : {
4943 "type" : "expression",
4944 "value" : {
4945 "op" : "==",
4946 "left" : {
4947 "type" : "field",
4948 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4949 },
4950 "right" : {
4951 "type" : "hexstr",
4952 "value" : "0x04"
4953 }
4954 }
4955 },
4956 "true_next" : "forwarding.unicast_v6",
4957 "false_next" : "node_16"
4958 },
4959 {
4960 "name" : "node_16",
4961 "id" : 6,
4962 "source_info" : {
4963 "filename" : "./include/control/forwarding.p4",
4964 "line" : 194,
4965 "column" : 17,
4966 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
4967 },
4968 "expression" : {
4969 "type" : "expression",
4970 "value" : {
4971 "op" : "==",
4972 "left" : {
4973 "type" : "field",
4974 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4975 },
4976 "right" : {
4977 "type" : "hexstr",
4978 "value" : "0x05"
4979 }
4980 }
4981 },
4982 "true_next" : "forwarding.multicast_v6",
4983 "false_next" : "forwarding.acl"
4984 },
4985 {
4986 "name" : "node_20",
4987 "id" : 7,
4988 "source_info" : {
4989 "filename" : "./include/control/next.p4",
4990 "line" : 136,
4991 "column" : 12,
4992 "source_fragment" : "fabric_metadata.next_type == NEXT_TYPE_SIMPLE"
4993 },
4994 "expression" : {
4995 "type" : "expression",
4996 "value" : {
4997 "op" : "==",
4998 "left" : {
4999 "type" : "field",
5000 "value" : ["scalars", "fabric_metadata_t.next_type"]
5001 },
5002 "right" : {
5003 "type" : "hexstr",
5004 "value" : "0x00"
5005 }
5006 }
5007 },
5008 "true_next" : "next.simple",
5009 "false_next" : "node_22"
5010 },
5011 {
5012 "name" : "node_22",
5013 "id" : 8,
5014 "source_info" : {
5015 "filename" : "./include/control/next.p4",
5016 "line" : 137,
5017 "column" : 17,
5018 "source_fragment" : "fabric_metadata.next_type == NEXT_TYPE_HASHED"
5019 },
5020 "expression" : {
5021 "type" : "expression",
5022 "value" : {
5023 "op" : "==",
5024 "left" : {
5025 "type" : "field",
5026 "value" : ["scalars", "fabric_metadata_t.next_type"]
5027 },
5028 "right" : {
5029 "type" : "hexstr",
5030 "value" : "0x01"
5031 }
5032 }
5033 },
5034 "true_next" : "next.hashed",
5035 "false_next" : "node_24"
5036 },
5037 {
5038 "name" : "node_24",
5039 "id" : 9,
5040 "source_info" : {
5041 "filename" : "./include/control/next.p4",
5042 "line" : 138,
5043 "column" : 17,
5044 "source_fragment" : "fabric_metadata.next_type == NEXT_TYPE_BROADCAST"
5045 },
5046 "expression" : {
5047 "type" : "expression",
5048 "value" : {
5049 "op" : "==",
5050 "left" : {
5051 "type" : "field",
5052 "value" : ["scalars", "fabric_metadata_t.next_type"]
5053 },
5054 "right" : {
5055 "type" : "hexstr",
5056 "value" : "0x02"
5057 }
5058 }
5059 },
5060 "true_next" : "next.broadcast",
5061 "false_next" : "node_26"
5062 },
5063 {
5064 "name" : "node_26",
5065 "id" : 10,
5066 "source_info" : {
5067 "filename" : "./include/control/port_counter.p4",
5068 "line" : 27,
5069 "column" : 12,
5070 "source_fragment" : "standard_metadata.egress_spec < 511"
5071 },
5072 "expression" : {
5073 "type" : "expression",
5074 "value" : {
5075 "op" : "<",
5076 "left" : {
5077 "type" : "field",
5078 "value" : ["standard_metadata", "egress_spec"]
5079 },
5080 "right" : {
5081 "type" : "hexstr",
5082 "value" : "0x01ff"
5083 }
5084 }
5085 },
5086 "true_next" : "tbl_act_0",
5087 "false_next" : "node_28"
5088 },
5089 {
5090 "name" : "node_28",
5091 "id" : 11,
5092 "source_info" : {
5093 "filename" : "./include/control/port_counter.p4",
5094 "line" : 30,
5095 "column" : 12,
5096 "source_fragment" : "standard_metadata.ingress_port < 511"
5097 },
5098 "expression" : {
5099 "type" : "expression",
5100 "value" : {
5101 "op" : "<",
5102 "left" : {
5103 "type" : "field",
5104 "value" : ["standard_metadata", "ingress_port"]
5105 },
5106 "right" : {
5107 "type" : "hexstr",
5108 "value" : "0x01ff"
5109 }
5110 }
5111 },
5112 "false_next" : null,
5113 "true_next" : "tbl_act_1"
5114 }
5115 ]
5116 },
5117 {
5118 "name" : "egress",
5119 "id" : 1,
5120 "source_info" : {
5121 "filename" : "fabric.p4",
5122 "line" : 48,
5123 "column" : 8,
5124 "source_fragment" : "FabricEgress"
5125 },
5126 "init_table" : "node_32",
5127 "tables" : [
5128 {
5129 "name" : "tbl_act_2",
5130 "id" : 16,
5131 "key" : [],
5132 "match_type" : "exact",
5133 "type" : "simple",
5134 "max_size" : 1024,
5135 "with_counters" : false,
5136 "support_timeout" : false,
5137 "direct_meters" : null,
5138 "action_ids" : [36],
5139 "actions" : ["act_2"],
5140 "base_default_next" : "tbl_act_3",
5141 "next_tables" : {
5142 "act_2" : "tbl_act_3"
5143 },
5144 "default_entry" : {
5145 "action_id" : 36,
5146 "action_const" : true,
5147 "action_data" : [],
5148 "action_entry_const" : true
5149 }
5150 },
5151 {
5152 "name" : "tbl_act_3",
5153 "id" : 17,
5154 "key" : [],
5155 "match_type" : "exact",
5156 "type" : "simple",
5157 "max_size" : 1024,
5158 "with_counters" : false,
5159 "support_timeout" : false,
5160 "direct_meters" : null,
5161 "action_ids" : [38],
5162 "actions" : ["act_4"],
5163 "base_default_next" : "node_35",
5164 "next_tables" : {
5165 "act_4" : "node_35"
5166 },
5167 "default_entry" : {
5168 "action_id" : 38,
5169 "action_const" : true,
5170 "action_data" : [],
5171 "action_entry_const" : true
5172 }
5173 },
5174 {
5175 "name" : "tbl_act_4",
5176 "id" : 18,
5177 "key" : [],
5178 "match_type" : "exact",
5179 "type" : "simple",
5180 "max_size" : 1024,
5181 "with_counters" : false,
5182 "support_timeout" : false,
5183 "direct_meters" : null,
5184 "action_ids" : [37],
5185 "actions" : ["act_3"],
5186 "base_default_next" : null,
5187 "next_tables" : {
5188 "act_3" : null
5189 },
5190 "default_entry" : {
5191 "action_id" : 37,
5192 "action_const" : true,
5193 "action_data" : [],
5194 "action_entry_const" : true
5195 }
5196 }
5197 ],
5198 "action_profiles" : [],
5199 "conditionals" : [
5200 {
5201 "name" : "node_32",
5202 "id" : 12,
5203 "source_info" : {
5204 "filename" : "./include/control/next.p4",
5205 "line" : 150,
5206 "column" : 12,
5207 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
5208 },
5209 "expression" : {
5210 "type" : "expression",
5211 "value" : {
5212 "op" : "d2b",
5213 "left" : null,
5214 "right" : {
5215 "type" : "field",
5216 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
5217 }
5218 }
5219 },
5220 "true_next" : "tbl_act_2",
5221 "false_next" : "tbl_act_3"
5222 },
5223 {
5224 "name" : "node_35",
5225 "id" : 13,
5226 "source_info" : {
5227 "filename" : "./include/control/packetio.p4",
5228 "line" : 38,
5229 "column" : 12,
5230 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
5231 },
5232 "expression" : {
5233 "type" : "expression",
5234 "value" : {
5235 "op" : "==",
5236 "left" : {
5237 "type" : "field",
5238 "value" : ["standard_metadata", "egress_port"]
5239 },
5240 "right" : {
5241 "type" : "hexstr",
5242 "value" : "0x00ff"
5243 }
5244 }
5245 },
5246 "false_next" : null,
5247 "true_next" : "tbl_act_4"
5248 }
5249 ]
5250 }
5251 ],
5252 "checksums" : [
5253 {
5254 "name" : "cksum",
5255 "id" : 0,
5256 "target" : ["ipv4", "hdr_checksum"],
5257 "type" : "generic",
5258 "calculation" : "calc"
5259 },
5260 {
5261 "name" : "cksum_0",
5262 "id" : 1,
5263 "target" : ["icmp", "checksum"],
5264 "type" : "generic",
5265 "calculation" : "calc_0"
5266 },
5267 {
5268 "name" : "cksum_1",
5269 "id" : 2,
5270 "target" : ["ipv4", "hdr_checksum"],
5271 "type" : "generic",
5272 "calculation" : "calc_1"
5273 },
5274 {
5275 "name" : "cksum_2",
5276 "id" : 3,
5277 "target" : ["icmp", "checksum"],
5278 "type" : "generic",
5279 "calculation" : "calc_2"
5280 }
5281 ],
5282 "force_arith" : [],
5283 "extern_instances" : [],
5284 "field_aliases" : [
5285 [
5286 "queueing_metadata.enq_timestamp",
5287 ["standard_metadata", "enq_timestamp"]
5288 ],
5289 [
5290 "queueing_metadata.enq_qdepth",
5291 ["standard_metadata", "enq_qdepth"]
5292 ],
5293 [
5294 "queueing_metadata.deq_timedelta",
5295 ["standard_metadata", "deq_timedelta"]
5296 ],
5297 [
5298 "queueing_metadata.deq_qdepth",
5299 ["standard_metadata", "deq_qdepth"]
5300 ],
5301 [
5302 "intrinsic_metadata.ingress_global_timestamp",
5303 ["standard_metadata", "ingress_global_timestamp"]
5304 ],
5305 [
5306 "intrinsic_metadata.lf_field_list",
5307 ["standard_metadata", "lf_field_list"]
5308 ],
5309 [
5310 "intrinsic_metadata.mcast_grp",
5311 ["standard_metadata", "mcast_grp"]
5312 ],
5313 [
5314 "intrinsic_metadata.resubmit_flag",
5315 ["standard_metadata", "resubmit_flag"]
5316 ],
5317 [
5318 "intrinsic_metadata.egress_rid",
5319 ["standard_metadata", "egress_rid"]
5320 ]
5321 ]
5322}