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