blob: a683e8b395ca08cfff513e0ad4166fdb989855a9 [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 {
Yi Tsengbe342052017-11-03 10:21:23 -07002275 "name" : "forwarding.duplicate_to_controller",
Yi Tseng1b154bd2017-11-20 17:48:19 -08002276 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07002277 "runtime_data" : [],
2278 "primitives" : [
2279 {
2280 "op" : "assign",
2281 "parameters" : [
2282 {
2283 "type" : "field",
2284 "value" : ["scalars", "fabric_metadata_t.next_type"]
2285 },
2286 {
2287 "type" : "hexstr",
2288 "value" : "0x03"
2289 }
2290 ],
2291 "source_info" : {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002292 "filename" : "./include/control/../define.p4",
2293 "line" : 61,
Yi Tsengbe342052017-11-03 10:21:23 -07002294 "column" : 35,
2295 "source_fragment" : "3; ..."
2296 }
2297 },
2298 {
2299 "op" : "assign",
2300 "parameters" : [
2301 {
2302 "type" : "field",
2303 "value" : ["standard_metadata", "egress_spec"]
2304 },
2305 {
2306 "type" : "hexstr",
2307 "value" : "0x00ff"
2308 }
2309 ],
2310 "source_info" : {
2311 "filename" : "./include/control/../define.p4",
2312 "line" : 48,
2313 "column" : 28,
2314 "source_fragment" : "255; ..."
2315 }
2316 }
2317 ]
2318 },
2319 {
2320 "name" : "next.set_next_type",
Yi Tseng1b154bd2017-11-20 17:48:19 -08002321 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07002322 "runtime_data" : [
2323 {
2324 "name" : "next_type",
2325 "bitwidth" : 3
2326 }
2327 ],
2328 "primitives" : [
2329 {
2330 "op" : "assign",
2331 "parameters" : [
2332 {
2333 "type" : "field",
2334 "value" : ["scalars", "fabric_metadata_t.next_type"]
2335 },
2336 {
2337 "type" : "runtime_data",
2338 "value" : 0
2339 }
2340 ],
2341 "source_info" : {
2342 "filename" : "./include/control/next.p4",
2343 "line" : 34,
2344 "column" : 8,
2345 "source_fragment" : "fabric_metadata.next_type = next_type"
2346 }
2347 }
2348 ]
2349 },
2350 {
2351 "name" : "next.output",
Yi Tseng1b154bd2017-11-20 17:48:19 -08002352 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07002353 "runtime_data" : [
2354 {
2355 "name" : "port_num",
2356 "bitwidth" : 9
2357 }
2358 ],
2359 "primitives" : [
2360 {
2361 "op" : "assign",
2362 "parameters" : [
2363 {
2364 "type" : "field",
2365 "value" : ["standard_metadata", "egress_spec"]
2366 },
2367 {
2368 "type" : "runtime_data",
2369 "value" : 0
2370 }
2371 ],
2372 "source_info" : {
2373 "filename" : "./include/control/next.p4",
2374 "line" : 38,
2375 "column" : 8,
2376 "source_fragment" : "standard_metadata.egress_spec = port_num"
2377 }
2378 },
2379 {
2380 "op" : "assign",
2381 "parameters" : [
2382 {
2383 "type" : "field",
2384 "value" : ["ipv4", "ttl"]
2385 },
2386 {
2387 "type" : "expression",
2388 "value" : {
2389 "type" : "expression",
2390 "value" : {
2391 "op" : "?",
2392 "left" : {
2393 "type" : "expression",
2394 "value" : {
2395 "op" : "&",
2396 "left" : {
2397 "type" : "expression",
2398 "value" : {
2399 "op" : "+",
2400 "left" : {
2401 "type" : "field",
2402 "value" : ["ipv4", "ttl"]
2403 },
2404 "right" : {
2405 "type" : "hexstr",
2406 "value" : "0xff"
2407 }
2408 }
2409 },
2410 "right" : {
2411 "type" : "hexstr",
2412 "value" : "0xff"
2413 }
2414 }
2415 },
2416 "right" : {
2417 "type" : "field",
2418 "value" : ["ipv4", "ttl"]
2419 },
2420 "cond" : {
2421 "type" : "expression",
2422 "value" : {
2423 "op" : "and",
2424 "left" : {
2425 "type" : "expression",
2426 "value" : {
2427 "op" : "!=",
2428 "left" : {
2429 "type" : "field",
2430 "value" : ["mpls", "$valid$"]
2431 },
2432 "right" : {
2433 "type" : "hexstr",
2434 "value" : "0x01"
2435 }
2436 }
2437 },
2438 "right" : {
2439 "type" : "expression",
2440 "value" : {
2441 "op" : "==",
2442 "left" : {
2443 "type" : "field",
2444 "value" : ["ipv4", "$valid$"]
2445 },
2446 "right" : {
2447 "type" : "hexstr",
2448 "value" : "0x01"
2449 }
2450 }
2451 }
2452 }
2453 }
2454 }
2455 }
2456 }
2457 ],
2458 "source_info" : {
2459 "filename" : "./include/control/next.p4",
2460 "line" : 41,
2461 "column" : 16,
2462 "source_fragment" : "hdr.ipv4.ttl ="
2463 }
2464 },
2465 {
2466 "op" : "assign",
2467 "parameters" : [
2468 {
2469 "type" : "field",
2470 "value" : ["ipv6", "hop_limit"]
2471 },
2472 {
2473 "type" : "expression",
2474 "value" : {
2475 "type" : "expression",
2476 "value" : {
2477 "op" : "?",
2478 "left" : {
2479 "type" : "expression",
2480 "value" : {
2481 "op" : "&",
2482 "left" : {
2483 "type" : "expression",
2484 "value" : {
2485 "op" : "+",
2486 "left" : {
2487 "type" : "field",
2488 "value" : ["ipv6", "hop_limit"]
2489 },
2490 "right" : {
2491 "type" : "hexstr",
2492 "value" : "0xff"
2493 }
2494 }
2495 },
2496 "right" : {
2497 "type" : "hexstr",
2498 "value" : "0xff"
2499 }
2500 }
2501 },
2502 "right" : {
2503 "type" : "field",
2504 "value" : ["ipv6", "hop_limit"]
2505 },
2506 "cond" : {
2507 "type" : "expression",
2508 "value" : {
2509 "op" : "and",
2510 "left" : {
2511 "type" : "expression",
2512 "value" : {
2513 "op" : "and",
2514 "left" : {
2515 "type" : "expression",
2516 "value" : {
2517 "op" : "!=",
2518 "left" : {
2519 "type" : "field",
2520 "value" : ["mpls", "$valid$"]
2521 },
2522 "right" : {
2523 "type" : "hexstr",
2524 "value" : "0x01"
2525 }
2526 }
2527 },
2528 "right" : {
2529 "type" : "expression",
2530 "value" : {
2531 "op" : "not",
2532 "left" : null,
2533 "right" : {
2534 "type" : "expression",
2535 "value" : {
2536 "op" : "==",
2537 "left" : {
2538 "type" : "field",
2539 "value" : ["ipv4", "$valid$"]
2540 },
2541 "right" : {
2542 "type" : "hexstr",
2543 "value" : "0x01"
2544 }
2545 }
2546 }
2547 }
2548 }
2549 }
2550 },
2551 "right" : {
2552 "type" : "expression",
2553 "value" : {
2554 "op" : "==",
2555 "left" : {
2556 "type" : "field",
2557 "value" : ["ipv6", "$valid$"]
2558 },
2559 "right" : {
2560 "type" : "hexstr",
2561 "value" : "0x01"
2562 }
2563 }
2564 }
2565 }
2566 }
2567 }
2568 }
2569 }
2570 ],
2571 "source_info" : {
2572 "filename" : "./include/control/next.p4",
2573 "line" : 44,
2574 "column" : 16,
2575 "source_fragment" : "hdr.ipv6.hop_limit ="
2576 }
2577 }
2578 ]
2579 },
2580 {
2581 "name" : "next.set_vlan_output",
Yi Tseng1b154bd2017-11-20 17:48:19 -08002582 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07002583 "runtime_data" : [
2584 {
2585 "name" : "new_vlan_id",
2586 "bitwidth" : 12
2587 },
2588 {
2589 "name" : "port_num",
2590 "bitwidth" : 9
2591 }
2592 ],
2593 "primitives" : [
2594 {
2595 "op" : "assign",
2596 "parameters" : [
2597 {
2598 "type" : "field",
2599 "value" : ["vlan_tag", "vlan_id"]
2600 },
2601 {
2602 "type" : "runtime_data",
2603 "value" : 0
2604 }
2605 ],
2606 "source_info" : {
2607 "filename" : "./include/control/next.p4",
2608 "line" : 50,
2609 "column" : 8,
2610 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
2611 }
2612 },
2613 {
2614 "op" : "assign",
2615 "parameters" : [
2616 {
2617 "type" : "field",
2618 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
2619 },
2620 {
2621 "type" : "expression",
2622 "value" : {
2623 "type" : "expression",
2624 "value" : {
2625 "op" : "b2d",
2626 "left" : null,
2627 "right" : {
2628 "type" : "bool",
2629 "value" : false
2630 }
2631 }
2632 }
2633 }
2634 ],
2635 "source_info" : {
2636 "filename" : "./include/control/next.p4",
2637 "line" : 53,
2638 "column" : 8,
2639 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
2640 }
2641 },
2642 {
2643 "op" : "assign",
2644 "parameters" : [
2645 {
2646 "type" : "field",
2647 "value" : ["standard_metadata", "egress_spec"]
2648 },
2649 {
2650 "type" : "runtime_data",
2651 "value" : 1
2652 }
2653 ],
2654 "source_info" : {
2655 "filename" : "./include/control/next.p4",
2656 "line" : 38,
2657 "column" : 8,
2658 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2659 }
2660 },
2661 {
2662 "op" : "assign",
2663 "parameters" : [
2664 {
2665 "type" : "field",
2666 "value" : ["ipv4", "ttl"]
2667 },
2668 {
2669 "type" : "expression",
2670 "value" : {
2671 "type" : "expression",
2672 "value" : {
2673 "op" : "?",
2674 "left" : {
2675 "type" : "expression",
2676 "value" : {
2677 "op" : "&",
2678 "left" : {
2679 "type" : "expression",
2680 "value" : {
2681 "op" : "+",
2682 "left" : {
2683 "type" : "field",
2684 "value" : ["ipv4", "ttl"]
2685 },
2686 "right" : {
2687 "type" : "hexstr",
2688 "value" : "0xff"
2689 }
2690 }
2691 },
2692 "right" : {
2693 "type" : "hexstr",
2694 "value" : "0xff"
2695 }
2696 }
2697 },
2698 "right" : {
2699 "type" : "field",
2700 "value" : ["ipv4", "ttl"]
2701 },
2702 "cond" : {
2703 "type" : "expression",
2704 "value" : {
2705 "op" : "and",
2706 "left" : {
2707 "type" : "expression",
2708 "value" : {
2709 "op" : "!=",
2710 "left" : {
2711 "type" : "field",
2712 "value" : ["mpls", "$valid$"]
2713 },
2714 "right" : {
2715 "type" : "hexstr",
2716 "value" : "0x01"
2717 }
2718 }
2719 },
2720 "right" : {
2721 "type" : "expression",
2722 "value" : {
2723 "op" : "==",
2724 "left" : {
2725 "type" : "field",
2726 "value" : ["ipv4", "$valid$"]
2727 },
2728 "right" : {
2729 "type" : "hexstr",
2730 "value" : "0x01"
2731 }
2732 }
2733 }
2734 }
2735 }
2736 }
2737 }
2738 }
2739 ],
2740 "source_info" : {
2741 "filename" : "./include/control/next.p4",
2742 "line" : 41,
2743 "column" : 16,
2744 "source_fragment" : "hdr.ipv4.ttl ="
2745 }
2746 },
2747 {
2748 "op" : "assign",
2749 "parameters" : [
2750 {
2751 "type" : "field",
2752 "value" : ["ipv6", "hop_limit"]
2753 },
2754 {
2755 "type" : "expression",
2756 "value" : {
2757 "type" : "expression",
2758 "value" : {
2759 "op" : "?",
2760 "left" : {
2761 "type" : "expression",
2762 "value" : {
2763 "op" : "&",
2764 "left" : {
2765 "type" : "expression",
2766 "value" : {
2767 "op" : "+",
2768 "left" : {
2769 "type" : "field",
2770 "value" : ["ipv6", "hop_limit"]
2771 },
2772 "right" : {
2773 "type" : "hexstr",
2774 "value" : "0xff"
2775 }
2776 }
2777 },
2778 "right" : {
2779 "type" : "hexstr",
2780 "value" : "0xff"
2781 }
2782 }
2783 },
2784 "right" : {
2785 "type" : "field",
2786 "value" : ["ipv6", "hop_limit"]
2787 },
2788 "cond" : {
2789 "type" : "expression",
2790 "value" : {
2791 "op" : "and",
2792 "left" : {
2793 "type" : "expression",
2794 "value" : {
2795 "op" : "and",
2796 "left" : {
2797 "type" : "expression",
2798 "value" : {
2799 "op" : "!=",
2800 "left" : {
2801 "type" : "field",
2802 "value" : ["mpls", "$valid$"]
2803 },
2804 "right" : {
2805 "type" : "hexstr",
2806 "value" : "0x01"
2807 }
2808 }
2809 },
2810 "right" : {
2811 "type" : "expression",
2812 "value" : {
2813 "op" : "not",
2814 "left" : null,
2815 "right" : {
2816 "type" : "expression",
2817 "value" : {
2818 "op" : "==",
2819 "left" : {
2820 "type" : "field",
2821 "value" : ["ipv4", "$valid$"]
2822 },
2823 "right" : {
2824 "type" : "hexstr",
2825 "value" : "0x01"
2826 }
2827 }
2828 }
2829 }
2830 }
2831 }
2832 },
2833 "right" : {
2834 "type" : "expression",
2835 "value" : {
2836 "op" : "==",
2837 "left" : {
2838 "type" : "field",
2839 "value" : ["ipv6", "$valid$"]
2840 },
2841 "right" : {
2842 "type" : "hexstr",
2843 "value" : "0x01"
2844 }
2845 }
2846 }
2847 }
2848 }
2849 }
2850 }
2851 }
2852 ],
2853 "source_info" : {
2854 "filename" : "./include/control/next.p4",
2855 "line" : 44,
2856 "column" : 16,
2857 "source_fragment" : "hdr.ipv6.hop_limit ="
2858 }
2859 }
2860 ]
2861 },
2862 {
2863 "name" : "next.l3_routing",
Yi Tseng1b154bd2017-11-20 17:48:19 -08002864 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002865 "runtime_data" : [
2866 {
2867 "name" : "port_num",
2868 "bitwidth" : 9
2869 },
2870 {
2871 "name" : "smac",
2872 "bitwidth" : 48
2873 },
2874 {
2875 "name" : "dmac",
2876 "bitwidth" : 48
2877 }
2878 ],
2879 "primitives" : [
2880 {
2881 "op" : "assign",
2882 "parameters" : [
2883 {
2884 "type" : "field",
2885 "value" : ["ethernet", "src_addr"]
2886 },
2887 {
2888 "type" : "runtime_data",
2889 "value" : 1
2890 }
2891 ],
2892 "source_info" : {
2893 "filename" : "./include/control/next.p4",
2894 "line" : 58,
2895 "column" : 8,
2896 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2897 }
2898 },
2899 {
2900 "op" : "assign",
2901 "parameters" : [
2902 {
2903 "type" : "field",
2904 "value" : ["ethernet", "dst_addr"]
2905 },
2906 {
2907 "type" : "runtime_data",
2908 "value" : 2
2909 }
2910 ],
2911 "source_info" : {
2912 "filename" : "./include/control/next.p4",
2913 "line" : 62,
2914 "column" : 8,
2915 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2916 }
2917 },
2918 {
2919 "op" : "assign",
2920 "parameters" : [
2921 {
2922 "type" : "field",
2923 "value" : ["standard_metadata", "egress_spec"]
2924 },
2925 {
2926 "type" : "runtime_data",
2927 "value" : 0
2928 }
2929 ],
2930 "source_info" : {
2931 "filename" : "./include/control/next.p4",
2932 "line" : 38,
2933 "column" : 8,
2934 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2935 }
2936 },
2937 {
2938 "op" : "assign",
2939 "parameters" : [
2940 {
2941 "type" : "field",
2942 "value" : ["ipv4", "ttl"]
2943 },
2944 {
2945 "type" : "expression",
2946 "value" : {
2947 "type" : "expression",
2948 "value" : {
2949 "op" : "?",
2950 "left" : {
2951 "type" : "expression",
2952 "value" : {
2953 "op" : "&",
2954 "left" : {
2955 "type" : "expression",
2956 "value" : {
2957 "op" : "+",
2958 "left" : {
2959 "type" : "field",
2960 "value" : ["ipv4", "ttl"]
2961 },
2962 "right" : {
2963 "type" : "hexstr",
2964 "value" : "0xff"
2965 }
2966 }
2967 },
2968 "right" : {
2969 "type" : "hexstr",
2970 "value" : "0xff"
2971 }
2972 }
2973 },
2974 "right" : {
2975 "type" : "field",
2976 "value" : ["ipv4", "ttl"]
2977 },
2978 "cond" : {
2979 "type" : "expression",
2980 "value" : {
2981 "op" : "and",
2982 "left" : {
2983 "type" : "expression",
2984 "value" : {
2985 "op" : "!=",
2986 "left" : {
2987 "type" : "field",
2988 "value" : ["mpls", "$valid$"]
2989 },
2990 "right" : {
2991 "type" : "hexstr",
2992 "value" : "0x01"
2993 }
2994 }
2995 },
2996 "right" : {
2997 "type" : "expression",
2998 "value" : {
2999 "op" : "==",
3000 "left" : {
3001 "type" : "field",
3002 "value" : ["ipv4", "$valid$"]
3003 },
3004 "right" : {
3005 "type" : "hexstr",
3006 "value" : "0x01"
3007 }
3008 }
3009 }
3010 }
3011 }
3012 }
3013 }
3014 }
3015 ],
3016 "source_info" : {
3017 "filename" : "./include/control/next.p4",
3018 "line" : 41,
3019 "column" : 16,
3020 "source_fragment" : "hdr.ipv4.ttl ="
3021 }
3022 },
3023 {
3024 "op" : "assign",
3025 "parameters" : [
3026 {
3027 "type" : "field",
3028 "value" : ["ipv6", "hop_limit"]
3029 },
3030 {
3031 "type" : "expression",
3032 "value" : {
3033 "type" : "expression",
3034 "value" : {
3035 "op" : "?",
3036 "left" : {
3037 "type" : "expression",
3038 "value" : {
3039 "op" : "&",
3040 "left" : {
3041 "type" : "expression",
3042 "value" : {
3043 "op" : "+",
3044 "left" : {
3045 "type" : "field",
3046 "value" : ["ipv6", "hop_limit"]
3047 },
3048 "right" : {
3049 "type" : "hexstr",
3050 "value" : "0xff"
3051 }
3052 }
3053 },
3054 "right" : {
3055 "type" : "hexstr",
3056 "value" : "0xff"
3057 }
3058 }
3059 },
3060 "right" : {
3061 "type" : "field",
3062 "value" : ["ipv6", "hop_limit"]
3063 },
3064 "cond" : {
3065 "type" : "expression",
3066 "value" : {
3067 "op" : "and",
3068 "left" : {
3069 "type" : "expression",
3070 "value" : {
3071 "op" : "and",
3072 "left" : {
3073 "type" : "expression",
3074 "value" : {
3075 "op" : "!=",
3076 "left" : {
3077 "type" : "field",
3078 "value" : ["mpls", "$valid$"]
3079 },
3080 "right" : {
3081 "type" : "hexstr",
3082 "value" : "0x01"
3083 }
3084 }
3085 },
3086 "right" : {
3087 "type" : "expression",
3088 "value" : {
3089 "op" : "not",
3090 "left" : null,
3091 "right" : {
3092 "type" : "expression",
3093 "value" : {
3094 "op" : "==",
3095 "left" : {
3096 "type" : "field",
3097 "value" : ["ipv4", "$valid$"]
3098 },
3099 "right" : {
3100 "type" : "hexstr",
3101 "value" : "0x01"
3102 }
3103 }
3104 }
3105 }
3106 }
3107 }
3108 },
3109 "right" : {
3110 "type" : "expression",
3111 "value" : {
3112 "op" : "==",
3113 "left" : {
3114 "type" : "field",
3115 "value" : ["ipv6", "$valid$"]
3116 },
3117 "right" : {
3118 "type" : "hexstr",
3119 "value" : "0x01"
3120 }
3121 }
3122 }
3123 }
3124 }
3125 }
3126 }
3127 }
3128 ],
3129 "source_info" : {
3130 "filename" : "./include/control/next.p4",
3131 "line" : 44,
3132 "column" : 16,
3133 "source_fragment" : "hdr.ipv6.hop_limit ="
3134 }
3135 }
3136 ]
3137 },
3138 {
3139 "name" : "next.l3_routing",
Yi Tseng1b154bd2017-11-20 17:48:19 -08003140 "id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07003141 "runtime_data" : [
3142 {
3143 "name" : "port_num",
3144 "bitwidth" : 9
3145 },
3146 {
3147 "name" : "smac",
3148 "bitwidth" : 48
3149 },
3150 {
3151 "name" : "dmac",
3152 "bitwidth" : 48
3153 }
3154 ],
3155 "primitives" : [
3156 {
3157 "op" : "assign",
3158 "parameters" : [
3159 {
3160 "type" : "field",
3161 "value" : ["ethernet", "src_addr"]
3162 },
3163 {
3164 "type" : "runtime_data",
3165 "value" : 1
3166 }
3167 ],
3168 "source_info" : {
3169 "filename" : "./include/control/next.p4",
3170 "line" : 58,
3171 "column" : 8,
3172 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3173 }
3174 },
3175 {
3176 "op" : "assign",
3177 "parameters" : [
3178 {
3179 "type" : "field",
3180 "value" : ["ethernet", "dst_addr"]
3181 },
3182 {
3183 "type" : "runtime_data",
3184 "value" : 2
3185 }
3186 ],
3187 "source_info" : {
3188 "filename" : "./include/control/next.p4",
3189 "line" : 62,
3190 "column" : 8,
3191 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3192 }
3193 },
3194 {
3195 "op" : "assign",
3196 "parameters" : [
3197 {
3198 "type" : "field",
3199 "value" : ["standard_metadata", "egress_spec"]
3200 },
3201 {
3202 "type" : "runtime_data",
3203 "value" : 0
3204 }
3205 ],
3206 "source_info" : {
3207 "filename" : "./include/control/next.p4",
3208 "line" : 38,
3209 "column" : 8,
3210 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3211 }
3212 },
3213 {
3214 "op" : "assign",
3215 "parameters" : [
3216 {
3217 "type" : "field",
3218 "value" : ["ipv4", "ttl"]
3219 },
3220 {
3221 "type" : "expression",
3222 "value" : {
3223 "type" : "expression",
3224 "value" : {
3225 "op" : "?",
3226 "left" : {
3227 "type" : "expression",
3228 "value" : {
3229 "op" : "&",
3230 "left" : {
3231 "type" : "expression",
3232 "value" : {
3233 "op" : "+",
3234 "left" : {
3235 "type" : "field",
3236 "value" : ["ipv4", "ttl"]
3237 },
3238 "right" : {
3239 "type" : "hexstr",
3240 "value" : "0xff"
3241 }
3242 }
3243 },
3244 "right" : {
3245 "type" : "hexstr",
3246 "value" : "0xff"
3247 }
3248 }
3249 },
3250 "right" : {
3251 "type" : "field",
3252 "value" : ["ipv4", "ttl"]
3253 },
3254 "cond" : {
3255 "type" : "expression",
3256 "value" : {
3257 "op" : "and",
3258 "left" : {
3259 "type" : "expression",
3260 "value" : {
3261 "op" : "!=",
3262 "left" : {
3263 "type" : "field",
3264 "value" : ["mpls", "$valid$"]
3265 },
3266 "right" : {
3267 "type" : "hexstr",
3268 "value" : "0x01"
3269 }
3270 }
3271 },
3272 "right" : {
3273 "type" : "expression",
3274 "value" : {
3275 "op" : "==",
3276 "left" : {
3277 "type" : "field",
3278 "value" : ["ipv4", "$valid$"]
3279 },
3280 "right" : {
3281 "type" : "hexstr",
3282 "value" : "0x01"
3283 }
3284 }
3285 }
3286 }
3287 }
3288 }
3289 }
3290 }
3291 ],
3292 "source_info" : {
3293 "filename" : "./include/control/next.p4",
3294 "line" : 41,
3295 "column" : 16,
3296 "source_fragment" : "hdr.ipv4.ttl ="
3297 }
3298 },
3299 {
3300 "op" : "assign",
3301 "parameters" : [
3302 {
3303 "type" : "field",
3304 "value" : ["ipv6", "hop_limit"]
3305 },
3306 {
3307 "type" : "expression",
3308 "value" : {
3309 "type" : "expression",
3310 "value" : {
3311 "op" : "?",
3312 "left" : {
3313 "type" : "expression",
3314 "value" : {
3315 "op" : "&",
3316 "left" : {
3317 "type" : "expression",
3318 "value" : {
3319 "op" : "+",
3320 "left" : {
3321 "type" : "field",
3322 "value" : ["ipv6", "hop_limit"]
3323 },
3324 "right" : {
3325 "type" : "hexstr",
3326 "value" : "0xff"
3327 }
3328 }
3329 },
3330 "right" : {
3331 "type" : "hexstr",
3332 "value" : "0xff"
3333 }
3334 }
3335 },
3336 "right" : {
3337 "type" : "field",
3338 "value" : ["ipv6", "hop_limit"]
3339 },
3340 "cond" : {
3341 "type" : "expression",
3342 "value" : {
3343 "op" : "and",
3344 "left" : {
3345 "type" : "expression",
3346 "value" : {
3347 "op" : "and",
3348 "left" : {
3349 "type" : "expression",
3350 "value" : {
3351 "op" : "!=",
3352 "left" : {
3353 "type" : "field",
3354 "value" : ["mpls", "$valid$"]
3355 },
3356 "right" : {
3357 "type" : "hexstr",
3358 "value" : "0x01"
3359 }
3360 }
3361 },
3362 "right" : {
3363 "type" : "expression",
3364 "value" : {
3365 "op" : "not",
3366 "left" : null,
3367 "right" : {
3368 "type" : "expression",
3369 "value" : {
3370 "op" : "==",
3371 "left" : {
3372 "type" : "field",
3373 "value" : ["ipv4", "$valid$"]
3374 },
3375 "right" : {
3376 "type" : "hexstr",
3377 "value" : "0x01"
3378 }
3379 }
3380 }
3381 }
3382 }
3383 }
3384 },
3385 "right" : {
3386 "type" : "expression",
3387 "value" : {
3388 "op" : "==",
3389 "left" : {
3390 "type" : "field",
3391 "value" : ["ipv6", "$valid$"]
3392 },
3393 "right" : {
3394 "type" : "hexstr",
3395 "value" : "0x01"
3396 }
3397 }
3398 }
3399 }
3400 }
3401 }
3402 }
3403 }
3404 ],
3405 "source_info" : {
3406 "filename" : "./include/control/next.p4",
3407 "line" : 44,
3408 "column" : 16,
3409 "source_fragment" : "hdr.ipv6.hop_limit ="
3410 }
3411 }
3412 ]
3413 },
3414 {
3415 "name" : "next.set_mcast_group",
Yi Tseng1b154bd2017-11-20 17:48:19 -08003416 "id" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07003417 "runtime_data" : [
3418 {
3419 "name" : "gid",
3420 "bitwidth" : 16
3421 },
3422 {
3423 "name" : "smac",
3424 "bitwidth" : 48
3425 }
3426 ],
3427 "primitives" : [
3428 {
3429 "op" : "assign",
3430 "parameters" : [
3431 {
3432 "type" : "field",
3433 "value" : ["standard_metadata", "mcast_grp"]
3434 },
3435 {
3436 "type" : "runtime_data",
3437 "value" : 0
3438 }
3439 ],
3440 "source_info" : {
3441 "filename" : "./include/control/next.p4",
3442 "line" : 72,
3443 "column" : 8,
3444 "source_fragment" : "standard_metadata.mcast_grp = gid"
3445 }
3446 },
3447 {
3448 "op" : "assign",
3449 "parameters" : [
3450 {
3451 "type" : "field",
3452 "value" : ["ethernet", "src_addr"]
3453 },
3454 {
3455 "type" : "runtime_data",
3456 "value" : 1
3457 }
3458 ],
3459 "source_info" : {
3460 "filename" : "./include/control/next.p4",
3461 "line" : 58,
3462 "column" : 8,
3463 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3464 }
3465 }
3466 ]
3467 },
3468 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08003469 "name" : "next.mpls_routing_v4",
3470 "id" : 31,
3471 "runtime_data" : [
3472 {
3473 "name" : "port_num",
3474 "bitwidth" : 9
3475 },
3476 {
3477 "name" : "smac",
3478 "bitwidth" : 48
3479 },
3480 {
3481 "name" : "dmac",
3482 "bitwidth" : 48
3483 },
3484 {
3485 "name" : "label",
3486 "bitwidth" : 20
3487 }
3488 ],
3489 "primitives" : [
3490 {
3491 "op" : "assign",
3492 "parameters" : [
3493 {
3494 "type" : "field",
3495 "value" : ["ethernet", "src_addr"]
3496 },
3497 {
3498 "type" : "runtime_data",
3499 "value" : 1
3500 }
3501 ],
3502 "source_info" : {
3503 "filename" : "./include/control/next.p4",
3504 "line" : 58,
3505 "column" : 8,
3506 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3507 }
3508 },
3509 {
3510 "op" : "assign",
3511 "parameters" : [
3512 {
3513 "type" : "field",
3514 "value" : ["ethernet", "dst_addr"]
3515 },
3516 {
3517 "type" : "runtime_data",
3518 "value" : 2
3519 }
3520 ],
3521 "source_info" : {
3522 "filename" : "./include/control/next.p4",
3523 "line" : 62,
3524 "column" : 8,
3525 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3526 }
3527 },
3528 {
3529 "op" : "assign",
3530 "parameters" : [
3531 {
3532 "type" : "field",
3533 "value" : ["standard_metadata", "egress_spec"]
3534 },
3535 {
3536 "type" : "runtime_data",
3537 "value" : 0
3538 }
3539 ],
3540 "source_info" : {
3541 "filename" : "./include/control/next.p4",
3542 "line" : 38,
3543 "column" : 8,
3544 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3545 }
3546 },
3547 {
3548 "op" : "assign",
3549 "parameters" : [
3550 {
3551 "type" : "field",
3552 "value" : ["ipv4", "ttl"]
3553 },
3554 {
3555 "type" : "expression",
3556 "value" : {
3557 "type" : "expression",
3558 "value" : {
3559 "op" : "?",
3560 "left" : {
3561 "type" : "expression",
3562 "value" : {
3563 "op" : "&",
3564 "left" : {
3565 "type" : "expression",
3566 "value" : {
3567 "op" : "+",
3568 "left" : {
3569 "type" : "field",
3570 "value" : ["ipv4", "ttl"]
3571 },
3572 "right" : {
3573 "type" : "hexstr",
3574 "value" : "0xff"
3575 }
3576 }
3577 },
3578 "right" : {
3579 "type" : "hexstr",
3580 "value" : "0xff"
3581 }
3582 }
3583 },
3584 "right" : {
3585 "type" : "field",
3586 "value" : ["ipv4", "ttl"]
3587 },
3588 "cond" : {
3589 "type" : "expression",
3590 "value" : {
3591 "op" : "and",
3592 "left" : {
3593 "type" : "expression",
3594 "value" : {
3595 "op" : "!=",
3596 "left" : {
3597 "type" : "field",
3598 "value" : ["mpls", "$valid$"]
3599 },
3600 "right" : {
3601 "type" : "hexstr",
3602 "value" : "0x01"
3603 }
3604 }
3605 },
3606 "right" : {
3607 "type" : "expression",
3608 "value" : {
3609 "op" : "==",
3610 "left" : {
3611 "type" : "field",
3612 "value" : ["ipv4", "$valid$"]
3613 },
3614 "right" : {
3615 "type" : "hexstr",
3616 "value" : "0x01"
3617 }
3618 }
3619 }
3620 }
3621 }
3622 }
3623 }
3624 }
3625 ],
3626 "source_info" : {
3627 "filename" : "./include/control/next.p4",
3628 "line" : 41,
3629 "column" : 16,
3630 "source_fragment" : "hdr.ipv4.ttl ="
3631 }
3632 },
3633 {
3634 "op" : "assign",
3635 "parameters" : [
3636 {
3637 "type" : "field",
3638 "value" : ["ipv6", "hop_limit"]
3639 },
3640 {
3641 "type" : "expression",
3642 "value" : {
3643 "type" : "expression",
3644 "value" : {
3645 "op" : "?",
3646 "left" : {
3647 "type" : "expression",
3648 "value" : {
3649 "op" : "&",
3650 "left" : {
3651 "type" : "expression",
3652 "value" : {
3653 "op" : "+",
3654 "left" : {
3655 "type" : "field",
3656 "value" : ["ipv6", "hop_limit"]
3657 },
3658 "right" : {
3659 "type" : "hexstr",
3660 "value" : "0xff"
3661 }
3662 }
3663 },
3664 "right" : {
3665 "type" : "hexstr",
3666 "value" : "0xff"
3667 }
3668 }
3669 },
3670 "right" : {
3671 "type" : "field",
3672 "value" : ["ipv6", "hop_limit"]
3673 },
3674 "cond" : {
3675 "type" : "expression",
3676 "value" : {
3677 "op" : "and",
3678 "left" : {
3679 "type" : "expression",
3680 "value" : {
3681 "op" : "and",
3682 "left" : {
3683 "type" : "expression",
3684 "value" : {
3685 "op" : "!=",
3686 "left" : {
3687 "type" : "field",
3688 "value" : ["mpls", "$valid$"]
3689 },
3690 "right" : {
3691 "type" : "hexstr",
3692 "value" : "0x01"
3693 }
3694 }
3695 },
3696 "right" : {
3697 "type" : "expression",
3698 "value" : {
3699 "op" : "not",
3700 "left" : null,
3701 "right" : {
3702 "type" : "expression",
3703 "value" : {
3704 "op" : "==",
3705 "left" : {
3706 "type" : "field",
3707 "value" : ["ipv4", "$valid$"]
3708 },
3709 "right" : {
3710 "type" : "hexstr",
3711 "value" : "0x01"
3712 }
3713 }
3714 }
3715 }
3716 }
3717 }
3718 },
3719 "right" : {
3720 "type" : "expression",
3721 "value" : {
3722 "op" : "==",
3723 "left" : {
3724 "type" : "field",
3725 "value" : ["ipv6", "$valid$"]
3726 },
3727 "right" : {
3728 "type" : "hexstr",
3729 "value" : "0x01"
3730 }
3731 }
3732 }
3733 }
3734 }
3735 }
3736 }
3737 }
3738 ],
3739 "source_info" : {
3740 "filename" : "./include/control/next.p4",
3741 "line" : 44,
3742 "column" : 16,
3743 "source_fragment" : "hdr.ipv6.hop_limit ="
3744 }
3745 },
3746 {
3747 "op" : "add_header",
3748 "parameters" : [
3749 {
3750 "type" : "header",
3751 "value" : "mpls"
3752 }
3753 ],
3754 "source_info" : {
3755 "filename" : "./include/control/next.p4",
3756 "line" : 78,
3757 "column" : 8,
3758 "source_fragment" : "hdr.mpls.setValid()"
3759 }
3760 },
3761 {
3762 "op" : "assign",
3763 "parameters" : [
3764 {
3765 "type" : "field",
3766 "value" : ["ethernet", "ether_type"]
3767 },
3768 {
3769 "type" : "hexstr",
3770 "value" : "0x8847"
3771 }
3772 ],
3773 "source_info" : {
3774 "filename" : "./include/control/../define.p4",
3775 "line" : 34,
3776 "column" : 31,
3777 "source_fragment" : "0x8847; ..."
3778 }
3779 },
3780 {
3781 "op" : "assign",
3782 "parameters" : [
3783 {
3784 "type" : "field",
3785 "value" : ["mpls", "label"]
3786 },
3787 {
3788 "type" : "runtime_data",
3789 "value" : 3
3790 }
3791 ],
3792 "source_info" : {
3793 "filename" : "./include/control/next.p4",
3794 "line" : 80,
3795 "column" : 8,
3796 "source_fragment" : "hdr.mpls.label = label; ..."
3797 }
3798 },
3799 {
3800 "op" : "assign",
3801 "parameters" : [
3802 {
3803 "type" : "field",
3804 "value" : ["mpls", "tc"]
3805 },
3806 {
3807 "type" : "expression",
3808 "value" : {
3809 "type" : "expression",
3810 "value" : {
3811 "op" : "&",
3812 "left" : {
3813 "type" : "expression",
3814 "value" : {
3815 "op" : "&",
3816 "left" : {
3817 "type" : "expression",
3818 "value" : {
3819 "op" : ">>",
3820 "left" : {
3821 "type" : "field",
3822 "value" : ["ipv4", "diffserv"]
3823 },
3824 "right" : {
3825 "type" : "hexstr",
3826 "value" : "0x5"
3827 }
3828 }
3829 },
3830 "right" : {
3831 "type" : "hexstr",
3832 "value" : "0xff"
3833 }
3834 }
3835 },
3836 "right" : {
3837 "type" : "hexstr",
3838 "value" : "0x07"
3839 }
3840 }
3841 }
3842 }
3843 ],
3844 "source_info" : {
3845 "filename" : "./include/control/next.p4",
3846 "line" : 81,
3847 "column" : 8,
3848 "source_fragment" : "hdr.mpls.tc = tc; ..."
3849 }
3850 },
3851 {
3852 "op" : "assign",
3853 "parameters" : [
3854 {
3855 "type" : "field",
3856 "value" : ["mpls", "bos"]
3857 },
3858 {
3859 "type" : "hexstr",
3860 "value" : "0x01"
3861 }
3862 ],
3863 "source_info" : {
3864 "filename" : "./include/control/next.p4",
3865 "line" : 82,
3866 "column" : 8,
3867 "source_fragment" : "hdr.mpls.bos = 1"
3868 }
3869 },
3870 {
3871 "op" : "assign",
3872 "parameters" : [
3873 {
3874 "type" : "field",
3875 "value" : ["mpls", "ttl"]
3876 },
3877 {
3878 "type" : "hexstr",
3879 "value" : "0x40"
3880 }
3881 ],
3882 "source_info" : {
3883 "filename" : "./include/control/../header.p4",
3884 "line" : 19,
3885 "column" : 32,
3886 "source_fragment" : "64; ..."
3887 }
3888 }
3889 ]
3890 },
3891 {
3892 "name" : "next.mpls_routing_v6",
3893 "id" : 32,
3894 "runtime_data" : [
3895 {
3896 "name" : "port_num",
3897 "bitwidth" : 9
3898 },
3899 {
3900 "name" : "smac",
3901 "bitwidth" : 48
3902 },
3903 {
3904 "name" : "dmac",
3905 "bitwidth" : 48
3906 },
3907 {
3908 "name" : "label",
3909 "bitwidth" : 20
3910 }
3911 ],
3912 "primitives" : [
3913 {
3914 "op" : "assign",
3915 "parameters" : [
3916 {
3917 "type" : "field",
3918 "value" : ["ethernet", "src_addr"]
3919 },
3920 {
3921 "type" : "runtime_data",
3922 "value" : 1
3923 }
3924 ],
3925 "source_info" : {
3926 "filename" : "./include/control/next.p4",
3927 "line" : 58,
3928 "column" : 8,
3929 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3930 }
3931 },
3932 {
3933 "op" : "assign",
3934 "parameters" : [
3935 {
3936 "type" : "field",
3937 "value" : ["ethernet", "dst_addr"]
3938 },
3939 {
3940 "type" : "runtime_data",
3941 "value" : 2
3942 }
3943 ],
3944 "source_info" : {
3945 "filename" : "./include/control/next.p4",
3946 "line" : 62,
3947 "column" : 8,
3948 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3949 }
3950 },
3951 {
3952 "op" : "assign",
3953 "parameters" : [
3954 {
3955 "type" : "field",
3956 "value" : ["standard_metadata", "egress_spec"]
3957 },
3958 {
3959 "type" : "runtime_data",
3960 "value" : 0
3961 }
3962 ],
3963 "source_info" : {
3964 "filename" : "./include/control/next.p4",
3965 "line" : 38,
3966 "column" : 8,
3967 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3968 }
3969 },
3970 {
3971 "op" : "assign",
3972 "parameters" : [
3973 {
3974 "type" : "field",
3975 "value" : ["ipv4", "ttl"]
3976 },
3977 {
3978 "type" : "expression",
3979 "value" : {
3980 "type" : "expression",
3981 "value" : {
3982 "op" : "?",
3983 "left" : {
3984 "type" : "expression",
3985 "value" : {
3986 "op" : "&",
3987 "left" : {
3988 "type" : "expression",
3989 "value" : {
3990 "op" : "+",
3991 "left" : {
3992 "type" : "field",
3993 "value" : ["ipv4", "ttl"]
3994 },
3995 "right" : {
3996 "type" : "hexstr",
3997 "value" : "0xff"
3998 }
3999 }
4000 },
4001 "right" : {
4002 "type" : "hexstr",
4003 "value" : "0xff"
4004 }
4005 }
4006 },
4007 "right" : {
4008 "type" : "field",
4009 "value" : ["ipv4", "ttl"]
4010 },
4011 "cond" : {
4012 "type" : "expression",
4013 "value" : {
4014 "op" : "and",
4015 "left" : {
4016 "type" : "expression",
4017 "value" : {
4018 "op" : "!=",
4019 "left" : {
4020 "type" : "field",
4021 "value" : ["mpls", "$valid$"]
4022 },
4023 "right" : {
4024 "type" : "hexstr",
4025 "value" : "0x01"
4026 }
4027 }
4028 },
4029 "right" : {
4030 "type" : "expression",
4031 "value" : {
4032 "op" : "==",
4033 "left" : {
4034 "type" : "field",
4035 "value" : ["ipv4", "$valid$"]
4036 },
4037 "right" : {
4038 "type" : "hexstr",
4039 "value" : "0x01"
4040 }
4041 }
4042 }
4043 }
4044 }
4045 }
4046 }
4047 }
4048 ],
4049 "source_info" : {
4050 "filename" : "./include/control/next.p4",
4051 "line" : 41,
4052 "column" : 16,
4053 "source_fragment" : "hdr.ipv4.ttl ="
4054 }
4055 },
4056 {
4057 "op" : "assign",
4058 "parameters" : [
4059 {
4060 "type" : "field",
4061 "value" : ["ipv6", "hop_limit"]
4062 },
4063 {
4064 "type" : "expression",
4065 "value" : {
4066 "type" : "expression",
4067 "value" : {
4068 "op" : "?",
4069 "left" : {
4070 "type" : "expression",
4071 "value" : {
4072 "op" : "&",
4073 "left" : {
4074 "type" : "expression",
4075 "value" : {
4076 "op" : "+",
4077 "left" : {
4078 "type" : "field",
4079 "value" : ["ipv6", "hop_limit"]
4080 },
4081 "right" : {
4082 "type" : "hexstr",
4083 "value" : "0xff"
4084 }
4085 }
4086 },
4087 "right" : {
4088 "type" : "hexstr",
4089 "value" : "0xff"
4090 }
4091 }
4092 },
4093 "right" : {
4094 "type" : "field",
4095 "value" : ["ipv6", "hop_limit"]
4096 },
4097 "cond" : {
4098 "type" : "expression",
4099 "value" : {
4100 "op" : "and",
4101 "left" : {
4102 "type" : "expression",
4103 "value" : {
4104 "op" : "and",
4105 "left" : {
4106 "type" : "expression",
4107 "value" : {
4108 "op" : "!=",
4109 "left" : {
4110 "type" : "field",
4111 "value" : ["mpls", "$valid$"]
4112 },
4113 "right" : {
4114 "type" : "hexstr",
4115 "value" : "0x01"
4116 }
4117 }
4118 },
4119 "right" : {
4120 "type" : "expression",
4121 "value" : {
4122 "op" : "not",
4123 "left" : null,
4124 "right" : {
4125 "type" : "expression",
4126 "value" : {
4127 "op" : "==",
4128 "left" : {
4129 "type" : "field",
4130 "value" : ["ipv4", "$valid$"]
4131 },
4132 "right" : {
4133 "type" : "hexstr",
4134 "value" : "0x01"
4135 }
4136 }
4137 }
4138 }
4139 }
4140 }
4141 },
4142 "right" : {
4143 "type" : "expression",
4144 "value" : {
4145 "op" : "==",
4146 "left" : {
4147 "type" : "field",
4148 "value" : ["ipv6", "$valid$"]
4149 },
4150 "right" : {
4151 "type" : "hexstr",
4152 "value" : "0x01"
4153 }
4154 }
4155 }
4156 }
4157 }
4158 }
4159 }
4160 }
4161 ],
4162 "source_info" : {
4163 "filename" : "./include/control/next.p4",
4164 "line" : 44,
4165 "column" : 16,
4166 "source_fragment" : "hdr.ipv6.hop_limit ="
4167 }
4168 },
4169 {
4170 "op" : "add_header",
4171 "parameters" : [
4172 {
4173 "type" : "header",
4174 "value" : "mpls"
4175 }
4176 ],
4177 "source_info" : {
4178 "filename" : "./include/control/next.p4",
4179 "line" : 78,
4180 "column" : 8,
4181 "source_fragment" : "hdr.mpls.setValid()"
4182 }
4183 },
4184 {
4185 "op" : "assign",
4186 "parameters" : [
4187 {
4188 "type" : "field",
4189 "value" : ["ethernet", "ether_type"]
4190 },
4191 {
4192 "type" : "hexstr",
4193 "value" : "0x8847"
4194 }
4195 ],
4196 "source_info" : {
4197 "filename" : "./include/control/../define.p4",
4198 "line" : 34,
4199 "column" : 31,
4200 "source_fragment" : "0x8847; ..."
4201 }
4202 },
4203 {
4204 "op" : "assign",
4205 "parameters" : [
4206 {
4207 "type" : "field",
4208 "value" : ["mpls", "label"]
4209 },
4210 {
4211 "type" : "runtime_data",
4212 "value" : 3
4213 }
4214 ],
4215 "source_info" : {
4216 "filename" : "./include/control/next.p4",
4217 "line" : 80,
4218 "column" : 8,
4219 "source_fragment" : "hdr.mpls.label = label; ..."
4220 }
4221 },
4222 {
4223 "op" : "assign",
4224 "parameters" : [
4225 {
4226 "type" : "field",
4227 "value" : ["mpls", "tc"]
4228 },
4229 {
4230 "type" : "expression",
4231 "value" : {
4232 "type" : "expression",
4233 "value" : {
4234 "op" : "&",
4235 "left" : {
4236 "type" : "expression",
4237 "value" : {
4238 "op" : "&",
4239 "left" : {
4240 "type" : "expression",
4241 "value" : {
4242 "op" : ">>",
4243 "left" : {
4244 "type" : "field",
4245 "value" : ["ipv6", "traffic_class"]
4246 },
4247 "right" : {
4248 "type" : "hexstr",
4249 "value" : "0x5"
4250 }
4251 }
4252 },
4253 "right" : {
4254 "type" : "hexstr",
4255 "value" : "0xff"
4256 }
4257 }
4258 },
4259 "right" : {
4260 "type" : "hexstr",
4261 "value" : "0x07"
4262 }
4263 }
4264 }
4265 }
4266 ],
4267 "source_info" : {
4268 "filename" : "./include/control/next.p4",
4269 "line" : 81,
4270 "column" : 8,
4271 "source_fragment" : "hdr.mpls.tc = tc; ..."
4272 }
4273 },
4274 {
4275 "op" : "assign",
4276 "parameters" : [
4277 {
4278 "type" : "field",
4279 "value" : ["mpls", "bos"]
4280 },
4281 {
4282 "type" : "hexstr",
4283 "value" : "0x01"
4284 }
4285 ],
4286 "source_info" : {
4287 "filename" : "./include/control/next.p4",
4288 "line" : 82,
4289 "column" : 8,
4290 "source_fragment" : "hdr.mpls.bos = 1"
4291 }
4292 },
4293 {
4294 "op" : "assign",
4295 "parameters" : [
4296 {
4297 "type" : "field",
4298 "value" : ["mpls", "ttl"]
4299 },
4300 {
4301 "type" : "hexstr",
4302 "value" : "0x40"
4303 }
4304 ],
4305 "source_info" : {
4306 "filename" : "./include/control/../header.p4",
4307 "line" : 19,
4308 "column" : 32,
4309 "source_fragment" : "64; ..."
4310 }
4311 }
4312 ]
4313 },
4314 {
Yi Tsengbe342052017-11-03 10:21:23 -07004315 "name" : "act",
4316 "id" : 33,
4317 "runtime_data" : [],
4318 "primitives" : [
4319 {
4320 "op" : "assign",
4321 "parameters" : [
4322 {
4323 "type" : "field",
4324 "value" : ["standard_metadata", "egress_spec"]
4325 },
4326 {
4327 "type" : "field",
4328 "value" : ["packet_out", "egress_port"]
4329 }
4330 ],
4331 "source_info" : {
4332 "filename" : "./include/control/packetio.p4",
4333 "line" : 26,
4334 "column" : 12,
4335 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
4336 }
4337 }
4338 ]
4339 },
4340 {
4341 "name" : "act_0",
4342 "id" : 34,
4343 "runtime_data" : [],
4344 "primitives" : [
4345 {
4346 "op" : "assign",
4347 "parameters" : [
4348 {
4349 "type" : "field",
4350 "value" : ["scalars", "tmp_1"]
4351 },
4352 {
4353 "type" : "expression",
4354 "value" : {
4355 "type" : "expression",
4356 "value" : {
4357 "op" : "&",
4358 "left" : {
4359 "type" : "field",
4360 "value" : ["standard_metadata", "egress_spec"]
4361 },
4362 "right" : {
4363 "type" : "hexstr",
4364 "value" : "0xffffffff"
4365 }
4366 }
4367 }
4368 }
4369 ]
4370 },
4371 {
4372 "op" : "count",
4373 "parameters" : [
4374 {
4375 "type" : "counter_array",
4376 "value" : "port_counters_control.egress_port_counter"
4377 },
4378 {
4379 "type" : "field",
4380 "value" : ["scalars", "tmp_1"]
4381 }
4382 ],
4383 "source_info" : {
4384 "filename" : "./include/control/port_counter.p4",
4385 "line" : 28,
4386 "column" : 12,
4387 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
4388 }
4389 }
4390 ]
4391 },
4392 {
4393 "name" : "act_1",
4394 "id" : 35,
4395 "runtime_data" : [],
4396 "primitives" : [
4397 {
4398 "op" : "assign",
4399 "parameters" : [
4400 {
4401 "type" : "field",
4402 "value" : ["scalars", "tmp_2"]
4403 },
4404 {
4405 "type" : "expression",
4406 "value" : {
4407 "type" : "expression",
4408 "value" : {
4409 "op" : "&",
4410 "left" : {
4411 "type" : "field",
4412 "value" : ["standard_metadata", "ingress_port"]
4413 },
4414 "right" : {
4415 "type" : "hexstr",
4416 "value" : "0xffffffff"
4417 }
4418 }
4419 }
4420 }
4421 ]
4422 },
4423 {
4424 "op" : "count",
4425 "parameters" : [
4426 {
4427 "type" : "counter_array",
4428 "value" : "port_counters_control.ingress_port_counter"
4429 },
4430 {
4431 "type" : "field",
4432 "value" : ["scalars", "tmp_2"]
4433 }
4434 ],
4435 "source_info" : {
4436 "filename" : "./include/control/port_counter.p4",
4437 "line" : 31,
4438 "column" : 12,
4439 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
4440 }
4441 }
4442 ]
4443 },
4444 {
4445 "name" : "act_2",
4446 "id" : 36,
4447 "runtime_data" : [],
4448 "primitives" : [
4449 {
4450 "op" : "remove_header",
4451 "parameters" : [
4452 {
4453 "type" : "header",
4454 "value" : "vlan_tag"
4455 }
4456 ],
4457 "source_info" : {
4458 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004459 "line" : 175,
Yi Tsengbe342052017-11-03 10:21:23 -07004460 "column" : 12,
4461 "source_fragment" : "hdr.vlan_tag.setInvalid()"
4462 }
4463 }
4464 ]
4465 },
4466 {
4467 "name" : "act_3",
4468 "id" : 37,
4469 "runtime_data" : [],
4470 "primitives" : [
4471 {
4472 "op" : "add_header",
4473 "parameters" : [
4474 {
4475 "type" : "header",
4476 "value" : "packet_in"
4477 }
4478 ],
4479 "source_info" : {
4480 "filename" : "./include/control/packetio.p4",
4481 "line" : 39,
4482 "column" : 12,
4483 "source_fragment" : "hdr.packet_in.setValid()"
4484 }
4485 },
4486 {
4487 "op" : "assign",
4488 "parameters" : [
4489 {
4490 "type" : "field",
4491 "value" : ["packet_in", "ingress_port"]
4492 },
4493 {
4494 "type" : "field",
4495 "value" : ["standard_metadata", "ingress_port"]
4496 }
4497 ],
4498 "source_info" : {
4499 "filename" : "./include/control/packetio.p4",
4500 "line" : 40,
4501 "column" : 12,
4502 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
4503 }
4504 }
4505 ]
4506 },
4507 {
4508 "name" : "act_4",
4509 "id" : 38,
4510 "runtime_data" : [],
4511 "primitives" : [
4512 {
4513 "op" : "remove_header",
4514 "parameters" : [
4515 {
4516 "type" : "header",
4517 "value" : "packet_out"
4518 }
4519 ],
4520 "source_info" : {
4521 "filename" : "./include/control/packetio.p4",
4522 "line" : 37,
4523 "column" : 8,
4524 "source_fragment" : "hdr.packet_out.setInvalid()"
4525 }
4526 }
4527 ]
4528 }
4529 ],
4530 "pipelines" : [
4531 {
4532 "name" : "ingress",
4533 "id" : 0,
4534 "source_info" : {
4535 "filename" : "fabric.p4",
4536 "line" : 29,
4537 "column" : 8,
4538 "source_fragment" : "FabricIngress"
4539 },
4540 "init_table" : "node_2",
4541 "tables" : [
4542 {
4543 "name" : "tbl_act",
4544 "id" : 0,
4545 "key" : [],
4546 "match_type" : "exact",
4547 "type" : "simple",
4548 "max_size" : 1024,
4549 "with_counters" : false,
4550 "support_timeout" : false,
4551 "direct_meters" : null,
4552 "action_ids" : [33],
4553 "actions" : ["act"],
4554 "base_default_next" : null,
4555 "next_tables" : {
4556 "act" : null
4557 },
4558 "default_entry" : {
4559 "action_id" : 33,
4560 "action_const" : true,
4561 "action_data" : [],
4562 "action_entry_const" : true
4563 }
4564 },
4565 {
4566 "name" : "filtering.ingress_port_vlan",
4567 "id" : 1,
4568 "source_info" : {
4569 "filename" : "./include/control/filtering.p4",
4570 "line" : 53,
4571 "column" : 10,
4572 "source_fragment" : "ingress_port_vlan"
4573 },
4574 "key" : [
4575 {
4576 "match_type" : "exact",
4577 "target" : ["standard_metadata", "ingress_port"],
4578 "mask" : null
4579 },
4580 {
4581 "match_type" : "exact",
4582 "target" : ["vlan_tag", "$valid$"],
4583 "mask" : null
4584 },
4585 {
4586 "match_type" : "ternary",
4587 "target" : ["vlan_tag", "vlan_id"],
4588 "mask" : null
4589 }
4590 ],
4591 "match_type" : "ternary",
4592 "type" : "simple",
4593 "max_size" : 1024,
4594 "support_timeout" : false,
4595 "direct_meters" : null,
4596 "action_ids" : [15, 14, 0, 2],
4597 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "drop"],
4598 "base_default_next" : "filtering.fwd_classifier",
4599 "next_tables" : {
4600 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
4601 "filtering.set_vlan" : "filtering.fwd_classifier",
4602 "nop" : "filtering.fwd_classifier",
4603 "drop" : "filtering.fwd_classifier"
4604 },
4605 "default_entry" : {
4606 "action_id" : 2,
4607 "action_const" : true,
4608 "action_data" : [],
4609 "action_entry_const" : true
4610 }
4611 },
4612 {
4613 "name" : "filtering.fwd_classifier",
4614 "id" : 2,
4615 "source_info" : {
4616 "filename" : "./include/control/filtering.p4",
4617 "line" : 71,
4618 "column" : 10,
4619 "source_fragment" : "fwd_classifier"
4620 },
4621 "key" : [
4622 {
4623 "match_type" : "exact",
4624 "target" : ["standard_metadata", "ingress_port"],
4625 "mask" : null
4626 },
4627 {
4628 "match_type" : "exact",
4629 "target" : ["ethernet", "dst_addr"],
4630 "mask" : null
4631 },
4632 {
4633 "match_type" : "exact",
4634 "target" : ["ethernet", "ether_type"],
4635 "mask" : null
4636 }
4637 ],
4638 "match_type" : "exact",
4639 "type" : "simple",
4640 "max_size" : 1024,
4641 "support_timeout" : false,
4642 "direct_meters" : null,
4643 "action_ids" : [16],
4644 "actions" : ["filtering.set_forwarding_type"],
4645 "base_default_next" : "node_6",
4646 "next_tables" : {
4647 "filtering.set_forwarding_type" : "node_6"
4648 },
4649 "default_entry" : {
4650 "action_id" : 16,
4651 "action_const" : true,
4652 "action_data" : ["0x0"],
4653 "action_entry_const" : true
4654 }
4655 },
4656 {
4657 "name" : "forwarding.bridging",
4658 "id" : 3,
4659 "source_info" : {
4660 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004661 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07004662 "column" : 10,
4663 "source_fragment" : "bridging"
4664 },
4665 "key" : [
4666 {
4667 "match_type" : "exact",
4668 "target" : ["vlan_tag", "vlan_id"],
4669 "mask" : null
4670 },
4671 {
4672 "match_type" : "ternary",
4673 "target" : ["ethernet", "dst_addr"],
4674 "mask" : null
4675 }
4676 ],
4677 "match_type" : "ternary",
4678 "type" : "simple",
4679 "max_size" : 1024,
4680 "support_timeout" : false,
4681 "direct_meters" : null,
4682 "action_ids" : [17, 4],
4683 "actions" : ["forwarding.set_next_id", "NoAction"],
4684 "base_default_next" : "forwarding.acl",
4685 "next_tables" : {
4686 "forwarding.set_next_id" : "forwarding.acl",
4687 "NoAction" : "forwarding.acl"
4688 },
4689 "default_entry" : {
4690 "action_id" : 4,
4691 "action_const" : false,
4692 "action_data" : [],
4693 "action_entry_const" : false
4694 }
4695 },
4696 {
4697 "name" : "forwarding.mpls",
4698 "id" : 4,
4699 "source_info" : {
4700 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004701 "line" : 69,
Yi Tsengbe342052017-11-03 10:21:23 -07004702 "column" : 10,
4703 "source_fragment" : "mpls"
4704 },
4705 "key" : [
4706 {
4707 "match_type" : "exact",
4708 "target" : ["mpls", "label"],
4709 "mask" : null
4710 }
4711 ],
4712 "match_type" : "exact",
4713 "type" : "simple",
4714 "max_size" : 1024,
4715 "support_timeout" : false,
4716 "direct_meters" : null,
4717 "action_ids" : [23, 5],
4718 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
4719 "base_default_next" : "forwarding.acl",
4720 "next_tables" : {
4721 "forwarding.pop_mpls_and_next" : "forwarding.acl",
4722 "NoAction" : "forwarding.acl"
4723 },
4724 "default_entry" : {
4725 "action_id" : 5,
4726 "action_const" : false,
4727 "action_data" : [],
4728 "action_entry_const" : false
4729 }
4730 },
4731 {
4732 "name" : "forwarding.unicast_v4",
4733 "id" : 5,
4734 "source_info" : {
4735 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004736 "line" : 80,
Yi Tsengbe342052017-11-03 10:21:23 -07004737 "column" : 10,
4738 "source_fragment" : "unicast_v4"
4739 },
4740 "key" : [
4741 {
4742 "match_type" : "lpm",
4743 "target" : ["ipv4", "dst_addr"],
4744 "mask" : null
4745 }
4746 ],
4747 "match_type" : "lpm",
4748 "type" : "simple",
4749 "max_size" : 1024,
4750 "support_timeout" : false,
4751 "direct_meters" : null,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004752 "action_ids" : [18, 6],
4753 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07004754 "base_default_next" : "forwarding.acl",
4755 "next_tables" : {
4756 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07004757 "NoAction" : "forwarding.acl"
4758 },
4759 "default_entry" : {
4760 "action_id" : 6,
4761 "action_const" : false,
4762 "action_data" : [],
4763 "action_entry_const" : false
4764 }
4765 },
4766 {
4767 "name" : "forwarding.multicast_v4",
4768 "id" : 6,
4769 "source_info" : {
4770 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004771 "line" : 91,
Yi Tsengbe342052017-11-03 10:21:23 -07004772 "column" : 10,
4773 "source_fragment" : "multicast_v4"
4774 },
4775 "key" : [
4776 {
4777 "match_type" : "exact",
4778 "target" : ["vlan_tag", "vlan_id"],
4779 "mask" : null
4780 },
4781 {
4782 "match_type" : "lpm",
4783 "target" : ["ipv4", "dst_addr"],
4784 "mask" : null
4785 }
4786 ],
4787 "match_type" : "lpm",
4788 "type" : "simple",
4789 "max_size" : 1024,
4790 "support_timeout" : false,
4791 "direct_meters" : null,
4792 "action_ids" : [19, 7],
4793 "actions" : ["forwarding.set_next_id", "NoAction"],
4794 "base_default_next" : "forwarding.acl",
4795 "next_tables" : {
4796 "forwarding.set_next_id" : "forwarding.acl",
4797 "NoAction" : "forwarding.acl"
4798 },
4799 "default_entry" : {
4800 "action_id" : 7,
4801 "action_const" : false,
4802 "action_data" : [],
4803 "action_entry_const" : false
4804 }
4805 },
4806 {
4807 "name" : "forwarding.unicast_v6",
4808 "id" : 7,
4809 "source_info" : {
4810 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004811 "line" : 103,
Yi Tsengbe342052017-11-03 10:21:23 -07004812 "column" : 10,
4813 "source_fragment" : "unicast_v6"
4814 },
4815 "key" : [
4816 {
4817 "match_type" : "lpm",
4818 "target" : ["ipv6", "dst_addr"],
4819 "mask" : null
4820 }
4821 ],
4822 "match_type" : "lpm",
4823 "type" : "simple",
4824 "max_size" : 1024,
4825 "support_timeout" : false,
4826 "direct_meters" : null,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004827 "action_ids" : [20, 8],
4828 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07004829 "base_default_next" : "forwarding.acl",
4830 "next_tables" : {
4831 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07004832 "NoAction" : "forwarding.acl"
4833 },
4834 "default_entry" : {
4835 "action_id" : 8,
4836 "action_const" : false,
4837 "action_data" : [],
4838 "action_entry_const" : false
4839 }
4840 },
4841 {
4842 "name" : "forwarding.multicast_v6",
4843 "id" : 8,
4844 "source_info" : {
4845 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004846 "line" : 114,
Yi Tsengbe342052017-11-03 10:21:23 -07004847 "column" : 10,
4848 "source_fragment" : "multicast_v6"
4849 },
4850 "key" : [
4851 {
4852 "match_type" : "exact",
4853 "target" : ["vlan_tag", "vlan_id"],
4854 "mask" : null
4855 },
4856 {
4857 "match_type" : "lpm",
4858 "target" : ["ipv6", "dst_addr"],
4859 "mask" : null
4860 }
4861 ],
4862 "match_type" : "lpm",
4863 "type" : "simple",
4864 "max_size" : 1024,
4865 "support_timeout" : false,
4866 "direct_meters" : null,
4867 "action_ids" : [21, 9],
4868 "actions" : ["forwarding.set_next_id", "NoAction"],
4869 "base_default_next" : "forwarding.acl",
4870 "next_tables" : {
4871 "forwarding.set_next_id" : "forwarding.acl",
4872 "NoAction" : "forwarding.acl"
4873 },
4874 "default_entry" : {
4875 "action_id" : 9,
4876 "action_const" : false,
4877 "action_data" : [],
4878 "action_entry_const" : false
4879 }
4880 },
4881 {
4882 "name" : "forwarding.acl",
4883 "id" : 9,
4884 "source_info" : {
4885 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08004886 "line" : 126,
Yi Tsengbe342052017-11-03 10:21:23 -07004887 "column" : 10,
4888 "source_fragment" : "acl"
4889 },
4890 "key" : [
4891 {
4892 "match_type" : "ternary",
4893 "target" : ["standard_metadata", "ingress_port"],
4894 "mask" : null
4895 },
4896 {
4897 "match_type" : "ternary",
4898 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
4899 "mask" : null
4900 },
4901 {
4902 "match_type" : "ternary",
4903 "target" : ["ethernet", "dst_addr"],
4904 "mask" : null
4905 },
4906 {
4907 "match_type" : "ternary",
4908 "target" : ["ethernet", "src_addr"],
4909 "mask" : null
4910 },
4911 {
4912 "match_type" : "ternary",
4913 "target" : ["ethernet", "ether_type"],
4914 "mask" : null
4915 },
4916 {
4917 "match_type" : "ternary",
4918 "target" : ["vlan_tag", "vlan_id"],
4919 "mask" : null
4920 },
4921 {
4922 "match_type" : "ternary",
4923 "target" : ["vlan_tag", "pri"],
4924 "mask" : null
4925 },
4926 {
4927 "match_type" : "ternary",
4928 "target" : ["mpls", "tc"],
4929 "mask" : null
4930 },
4931 {
4932 "match_type" : "ternary",
4933 "target" : ["mpls", "bos"],
4934 "mask" : null
4935 },
4936 {
4937 "match_type" : "ternary",
4938 "target" : ["mpls", "label"],
4939 "mask" : null
4940 },
4941 {
4942 "match_type" : "ternary",
4943 "target" : ["ipv4", "src_addr"],
4944 "mask" : null
4945 },
4946 {
4947 "match_type" : "ternary",
4948 "target" : ["ipv4", "dst_addr"],
4949 "mask" : null
4950 },
4951 {
4952 "match_type" : "ternary",
4953 "target" : ["ipv4", "protocol"],
4954 "mask" : null
4955 },
4956 {
4957 "match_type" : "ternary",
4958 "target" : ["ipv6", "src_addr"],
4959 "mask" : null
4960 },
4961 {
4962 "match_type" : "ternary",
4963 "target" : ["ipv6", "dst_addr"],
4964 "mask" : null
4965 },
4966 {
4967 "match_type" : "ternary",
4968 "target" : ["ipv6", "next_hdr"],
4969 "mask" : null
4970 },
4971 {
4972 "match_type" : "ternary",
4973 "target" : ["tcp", "src_port"],
4974 "mask" : null
4975 },
4976 {
4977 "match_type" : "ternary",
4978 "target" : ["tcp", "dst_port"],
4979 "mask" : null
4980 },
4981 {
4982 "match_type" : "ternary",
4983 "target" : ["udp", "src_port"],
4984 "mask" : null
4985 },
4986 {
4987 "match_type" : "ternary",
4988 "target" : ["udp", "dst_port"],
4989 "mask" : null
4990 },
4991 {
4992 "match_type" : "ternary",
4993 "target" : ["icmp", "icmp_type"],
4994 "mask" : null
4995 },
4996 {
4997 "match_type" : "ternary",
4998 "target" : ["icmp", "icmp_code"],
4999 "mask" : null
5000 }
5001 ],
5002 "match_type" : "ternary",
5003 "type" : "simple",
5004 "max_size" : 1024,
5005 "support_timeout" : false,
5006 "direct_meters" : null,
Yi Tseng1b154bd2017-11-20 17:48:19 -08005007 "action_ids" : [22, 24, 3, 1],
Yi Tsengbe342052017-11-03 10:21:23 -07005008 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "drop", "nop"],
5009 "base_default_next" : "next.next_id_mapping",
5010 "next_tables" : {
5011 "forwarding.set_next_id" : "next.next_id_mapping",
5012 "forwarding.duplicate_to_controller" : "next.next_id_mapping",
5013 "drop" : "next.next_id_mapping",
5014 "nop" : "next.next_id_mapping"
5015 },
5016 "default_entry" : {
5017 "action_id" : 1,
5018 "action_const" : true,
5019 "action_data" : [],
5020 "action_entry_const" : true
5021 }
5022 },
5023 {
5024 "name" : "next.next_id_mapping",
5025 "id" : 10,
5026 "source_info" : {
5027 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005028 "line" : 98,
Yi Tsengbe342052017-11-03 10:21:23 -07005029 "column" : 10,
5030 "source_fragment" : "next_id_mapping"
5031 },
5032 "key" : [
5033 {
5034 "match_type" : "exact",
5035 "target" : ["scalars", "fabric_metadata_t.next_id"],
5036 "mask" : null
5037 }
5038 ],
5039 "match_type" : "exact",
5040 "type" : "simple",
5041 "max_size" : 1024,
5042 "support_timeout" : false,
5043 "direct_meters" : null,
Yi Tseng1b154bd2017-11-20 17:48:19 -08005044 "action_ids" : [25, 10],
Yi Tsengbe342052017-11-03 10:21:23 -07005045 "actions" : ["next.set_next_type", "NoAction"],
5046 "base_default_next" : "node_20",
5047 "next_tables" : {
5048 "next.set_next_type" : "node_20",
5049 "NoAction" : "node_20"
5050 },
5051 "default_entry" : {
5052 "action_id" : 10,
5053 "action_const" : false,
5054 "action_data" : [],
5055 "action_entry_const" : false
5056 }
5057 },
5058 {
5059 "name" : "next.simple",
5060 "id" : 11,
5061 "source_info" : {
5062 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005063 "line" : 109,
Yi Tsengbe342052017-11-03 10:21:23 -07005064 "column" : 10,
5065 "source_fragment" : "simple"
5066 },
5067 "key" : [
5068 {
5069 "match_type" : "exact",
5070 "target" : ["scalars", "fabric_metadata_t.next_id"],
5071 "mask" : null
5072 }
5073 ],
5074 "match_type" : "exact",
5075 "type" : "simple",
5076 "max_size" : 1024,
5077 "support_timeout" : false,
5078 "direct_meters" : null,
Yi Tseng1b154bd2017-11-20 17:48:19 -08005079 "action_ids" : [26, 27, 28, 11],
Yi Tsengbe342052017-11-03 10:21:23 -07005080 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "NoAction"],
5081 "base_default_next" : "node_26",
5082 "next_tables" : {
5083 "next.output" : "node_26",
5084 "next.set_vlan_output" : "node_26",
5085 "next.l3_routing" : "node_26",
5086 "NoAction" : "node_26"
5087 },
5088 "default_entry" : {
5089 "action_id" : 11,
5090 "action_const" : false,
5091 "action_data" : [],
5092 "action_entry_const" : false
5093 }
5094 },
5095 {
5096 "name" : "next.hashed",
5097 "id" : 12,
5098 "source_info" : {
5099 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005100 "line" : 122,
Yi Tsengbe342052017-11-03 10:21:23 -07005101 "column" : 10,
5102 "source_fragment" : "hashed"
5103 },
5104 "key" : [
5105 {
5106 "match_type" : "exact",
5107 "target" : ["scalars", "fabric_metadata_t.next_id"],
5108 "mask" : null
5109 }
5110 ],
5111 "match_type" : "exact",
5112 "type" : "indirect_ws",
5113 "action_profile" : "next.ecmp_selector",
5114 "max_size" : 1024,
5115 "support_timeout" : false,
5116 "direct_meters" : null,
Yi Tseng1b154bd2017-11-20 17:48:19 -08005117 "action_ids" : [29, 31, 32, 12],
5118 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07005119 "base_default_next" : "node_26",
5120 "next_tables" : {
5121 "next.l3_routing" : "node_26",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005122 "next.mpls_routing_v4" : "node_26",
5123 "next.mpls_routing_v6" : "node_26",
Yi Tsengbe342052017-11-03 10:21:23 -07005124 "NoAction" : "node_26"
5125 }
5126 },
5127 {
5128 "name" : "next.broadcast",
5129 "id" : 13,
5130 "source_info" : {
5131 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005132 "line" : 148,
Yi Tsengbe342052017-11-03 10:21:23 -07005133 "column" : 10,
5134 "source_fragment" : "broadcast"
5135 },
5136 "key" : [
5137 {
5138 "match_type" : "exact",
5139 "target" : ["scalars", "fabric_metadata_t.next_id"],
5140 "mask" : null
5141 }
5142 ],
5143 "match_type" : "exact",
5144 "type" : "simple",
5145 "max_size" : 1024,
5146 "support_timeout" : false,
5147 "direct_meters" : null,
Yi Tseng1b154bd2017-11-20 17:48:19 -08005148 "action_ids" : [30, 13],
Yi Tsengbe342052017-11-03 10:21:23 -07005149 "actions" : ["next.set_mcast_group", "NoAction"],
5150 "base_default_next" : "node_26",
5151 "next_tables" : {
5152 "next.set_mcast_group" : "node_26",
5153 "NoAction" : "node_26"
5154 },
5155 "default_entry" : {
5156 "action_id" : 13,
5157 "action_const" : false,
5158 "action_data" : [],
5159 "action_entry_const" : false
5160 }
5161 },
5162 {
5163 "name" : "tbl_act_0",
5164 "id" : 14,
5165 "key" : [],
5166 "match_type" : "exact",
5167 "type" : "simple",
5168 "max_size" : 1024,
5169 "with_counters" : false,
5170 "support_timeout" : false,
5171 "direct_meters" : null,
5172 "action_ids" : [34],
5173 "actions" : ["act_0"],
5174 "base_default_next" : "node_28",
5175 "next_tables" : {
5176 "act_0" : "node_28"
5177 },
5178 "default_entry" : {
5179 "action_id" : 34,
5180 "action_const" : true,
5181 "action_data" : [],
5182 "action_entry_const" : true
5183 }
5184 },
5185 {
5186 "name" : "tbl_act_1",
5187 "id" : 15,
5188 "key" : [],
5189 "match_type" : "exact",
5190 "type" : "simple",
5191 "max_size" : 1024,
5192 "with_counters" : false,
5193 "support_timeout" : false,
5194 "direct_meters" : null,
5195 "action_ids" : [35],
5196 "actions" : ["act_1"],
5197 "base_default_next" : null,
5198 "next_tables" : {
5199 "act_1" : null
5200 },
5201 "default_entry" : {
5202 "action_id" : 35,
5203 "action_const" : true,
5204 "action_data" : [],
5205 "action_entry_const" : true
5206 }
5207 }
5208 ],
5209 "action_profiles" : [
5210 {
5211 "name" : "next.ecmp_selector",
5212 "id" : 0,
5213 "max_size" : 64,
5214 "selector" : {
5215 "algo" : "crc16",
5216 "input" : [
5217 {
5218 "type" : "field",
5219 "value" : ["ipv4", "src_addr"]
5220 },
5221 {
5222 "type" : "field",
5223 "value" : ["ipv4", "dst_addr"]
5224 },
5225 {
5226 "type" : "field",
5227 "value" : ["ipv4", "protocol"]
5228 },
5229 {
5230 "type" : "field",
5231 "value" : ["ipv6", "src_addr"]
5232 },
5233 {
5234 "type" : "field",
5235 "value" : ["ipv6", "dst_addr"]
5236 },
5237 {
5238 "type" : "field",
5239 "value" : ["ipv6", "next_hdr"]
5240 },
5241 {
5242 "type" : "field",
5243 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
5244 },
5245 {
5246 "type" : "field",
5247 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
5248 }
5249 ]
5250 }
5251 }
5252 ],
5253 "conditionals" : [
5254 {
5255 "name" : "node_2",
5256 "id" : 0,
5257 "source_info" : {
5258 "filename" : "./include/control/packetio.p4",
5259 "line" : 25,
5260 "column" : 12,
5261 "source_fragment" : "hdr.packet_out.isValid()"
5262 },
5263 "expression" : {
5264 "type" : "expression",
5265 "value" : {
5266 "op" : "==",
5267 "left" : {
5268 "type" : "field",
5269 "value" : ["packet_out", "$valid$"]
5270 },
5271 "right" : {
5272 "type" : "hexstr",
5273 "value" : "0x01"
5274 }
5275 }
5276 },
5277 "true_next" : "tbl_act",
5278 "false_next" : "filtering.ingress_port_vlan"
5279 },
5280 {
5281 "name" : "node_6",
5282 "id" : 1,
5283 "source_info" : {
5284 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005285 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -07005286 "column" : 11,
5287 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
5288 },
5289 "expression" : {
5290 "type" : "expression",
5291 "value" : {
5292 "op" : "==",
5293 "left" : {
5294 "type" : "field",
5295 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5296 },
5297 "right" : {
5298 "type" : "hexstr",
5299 "value" : "0x00"
5300 }
5301 }
5302 },
5303 "true_next" : "forwarding.bridging",
5304 "false_next" : "node_8"
5305 },
5306 {
5307 "name" : "node_8",
5308 "id" : 2,
5309 "source_info" : {
5310 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005311 "line" : 165,
Yi Tsengbe342052017-11-03 10:21:23 -07005312 "column" : 17,
5313 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
5314 },
5315 "expression" : {
5316 "type" : "expression",
5317 "value" : {
5318 "op" : "==",
5319 "left" : {
5320 "type" : "field",
5321 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5322 },
5323 "right" : {
5324 "type" : "hexstr",
5325 "value" : "0x01"
5326 }
5327 }
5328 },
5329 "true_next" : "forwarding.mpls",
5330 "false_next" : "node_10"
5331 },
5332 {
5333 "name" : "node_10",
5334 "id" : 3,
5335 "source_info" : {
5336 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005337 "line" : 166,
Yi Tsengbe342052017-11-03 10:21:23 -07005338 "column" : 17,
5339 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
5340 },
5341 "expression" : {
5342 "type" : "expression",
5343 "value" : {
5344 "op" : "==",
5345 "left" : {
5346 "type" : "field",
5347 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5348 },
5349 "right" : {
5350 "type" : "hexstr",
5351 "value" : "0x02"
5352 }
5353 }
5354 },
5355 "true_next" : "forwarding.unicast_v4",
5356 "false_next" : "node_12"
5357 },
5358 {
5359 "name" : "node_12",
5360 "id" : 4,
5361 "source_info" : {
5362 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005363 "line" : 167,
Yi Tsengbe342052017-11-03 10:21:23 -07005364 "column" : 17,
5365 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
5366 },
5367 "expression" : {
5368 "type" : "expression",
5369 "value" : {
5370 "op" : "==",
5371 "left" : {
5372 "type" : "field",
5373 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5374 },
5375 "right" : {
5376 "type" : "hexstr",
5377 "value" : "0x03"
5378 }
5379 }
5380 },
5381 "true_next" : "forwarding.multicast_v4",
5382 "false_next" : "node_14"
5383 },
5384 {
5385 "name" : "node_14",
5386 "id" : 5,
5387 "source_info" : {
5388 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005389 "line" : 168,
Yi Tsengbe342052017-11-03 10:21:23 -07005390 "column" : 17,
5391 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
5392 },
5393 "expression" : {
5394 "type" : "expression",
5395 "value" : {
5396 "op" : "==",
5397 "left" : {
5398 "type" : "field",
5399 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5400 },
5401 "right" : {
5402 "type" : "hexstr",
5403 "value" : "0x04"
5404 }
5405 }
5406 },
5407 "true_next" : "forwarding.unicast_v6",
5408 "false_next" : "node_16"
5409 },
5410 {
5411 "name" : "node_16",
5412 "id" : 6,
5413 "source_info" : {
5414 "filename" : "./include/control/forwarding.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005415 "line" : 169,
Yi Tsengbe342052017-11-03 10:21:23 -07005416 "column" : 17,
5417 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
5418 },
5419 "expression" : {
5420 "type" : "expression",
5421 "value" : {
5422 "op" : "==",
5423 "left" : {
5424 "type" : "field",
5425 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5426 },
5427 "right" : {
5428 "type" : "hexstr",
5429 "value" : "0x05"
5430 }
5431 }
5432 },
5433 "true_next" : "forwarding.multicast_v6",
5434 "false_next" : "forwarding.acl"
5435 },
5436 {
5437 "name" : "node_20",
5438 "id" : 7,
5439 "source_info" : {
5440 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005441 "line" : 160,
Yi Tsengbe342052017-11-03 10:21:23 -07005442 "column" : 12,
5443 "source_fragment" : "fabric_metadata.next_type == NEXT_TYPE_SIMPLE"
5444 },
5445 "expression" : {
5446 "type" : "expression",
5447 "value" : {
5448 "op" : "==",
5449 "left" : {
5450 "type" : "field",
5451 "value" : ["scalars", "fabric_metadata_t.next_type"]
5452 },
5453 "right" : {
5454 "type" : "hexstr",
5455 "value" : "0x00"
5456 }
5457 }
5458 },
5459 "true_next" : "next.simple",
5460 "false_next" : "node_22"
5461 },
5462 {
5463 "name" : "node_22",
5464 "id" : 8,
5465 "source_info" : {
5466 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005467 "line" : 161,
Yi Tsengbe342052017-11-03 10:21:23 -07005468 "column" : 17,
5469 "source_fragment" : "fabric_metadata.next_type == NEXT_TYPE_HASHED"
5470 },
5471 "expression" : {
5472 "type" : "expression",
5473 "value" : {
5474 "op" : "==",
5475 "left" : {
5476 "type" : "field",
5477 "value" : ["scalars", "fabric_metadata_t.next_type"]
5478 },
5479 "right" : {
5480 "type" : "hexstr",
5481 "value" : "0x01"
5482 }
5483 }
5484 },
5485 "true_next" : "next.hashed",
5486 "false_next" : "node_24"
5487 },
5488 {
5489 "name" : "node_24",
5490 "id" : 9,
5491 "source_info" : {
5492 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005493 "line" : 162,
Yi Tsengbe342052017-11-03 10:21:23 -07005494 "column" : 17,
5495 "source_fragment" : "fabric_metadata.next_type == NEXT_TYPE_BROADCAST"
5496 },
5497 "expression" : {
5498 "type" : "expression",
5499 "value" : {
5500 "op" : "==",
5501 "left" : {
5502 "type" : "field",
5503 "value" : ["scalars", "fabric_metadata_t.next_type"]
5504 },
5505 "right" : {
5506 "type" : "hexstr",
5507 "value" : "0x02"
5508 }
5509 }
5510 },
5511 "true_next" : "next.broadcast",
5512 "false_next" : "node_26"
5513 },
5514 {
5515 "name" : "node_26",
5516 "id" : 10,
5517 "source_info" : {
5518 "filename" : "./include/control/port_counter.p4",
5519 "line" : 27,
5520 "column" : 12,
5521 "source_fragment" : "standard_metadata.egress_spec < 511"
5522 },
5523 "expression" : {
5524 "type" : "expression",
5525 "value" : {
5526 "op" : "<",
5527 "left" : {
5528 "type" : "field",
5529 "value" : ["standard_metadata", "egress_spec"]
5530 },
5531 "right" : {
5532 "type" : "hexstr",
5533 "value" : "0x01ff"
5534 }
5535 }
5536 },
5537 "true_next" : "tbl_act_0",
5538 "false_next" : "node_28"
5539 },
5540 {
5541 "name" : "node_28",
5542 "id" : 11,
5543 "source_info" : {
5544 "filename" : "./include/control/port_counter.p4",
5545 "line" : 30,
5546 "column" : 12,
5547 "source_fragment" : "standard_metadata.ingress_port < 511"
5548 },
5549 "expression" : {
5550 "type" : "expression",
5551 "value" : {
5552 "op" : "<",
5553 "left" : {
5554 "type" : "field",
5555 "value" : ["standard_metadata", "ingress_port"]
5556 },
5557 "right" : {
5558 "type" : "hexstr",
5559 "value" : "0x01ff"
5560 }
5561 }
5562 },
5563 "false_next" : null,
5564 "true_next" : "tbl_act_1"
5565 }
5566 ]
5567 },
5568 {
5569 "name" : "egress",
5570 "id" : 1,
5571 "source_info" : {
5572 "filename" : "fabric.p4",
5573 "line" : 48,
5574 "column" : 8,
5575 "source_fragment" : "FabricEgress"
5576 },
5577 "init_table" : "node_32",
5578 "tables" : [
5579 {
5580 "name" : "tbl_act_2",
5581 "id" : 16,
5582 "key" : [],
5583 "match_type" : "exact",
5584 "type" : "simple",
5585 "max_size" : 1024,
5586 "with_counters" : false,
5587 "support_timeout" : false,
5588 "direct_meters" : null,
5589 "action_ids" : [36],
5590 "actions" : ["act_2"],
5591 "base_default_next" : "tbl_act_3",
5592 "next_tables" : {
5593 "act_2" : "tbl_act_3"
5594 },
5595 "default_entry" : {
5596 "action_id" : 36,
5597 "action_const" : true,
5598 "action_data" : [],
5599 "action_entry_const" : true
5600 }
5601 },
5602 {
5603 "name" : "tbl_act_3",
5604 "id" : 17,
5605 "key" : [],
5606 "match_type" : "exact",
5607 "type" : "simple",
5608 "max_size" : 1024,
5609 "with_counters" : false,
5610 "support_timeout" : false,
5611 "direct_meters" : null,
5612 "action_ids" : [38],
5613 "actions" : ["act_4"],
5614 "base_default_next" : "node_35",
5615 "next_tables" : {
5616 "act_4" : "node_35"
5617 },
5618 "default_entry" : {
5619 "action_id" : 38,
5620 "action_const" : true,
5621 "action_data" : [],
5622 "action_entry_const" : true
5623 }
5624 },
5625 {
5626 "name" : "tbl_act_4",
5627 "id" : 18,
5628 "key" : [],
5629 "match_type" : "exact",
5630 "type" : "simple",
5631 "max_size" : 1024,
5632 "with_counters" : false,
5633 "support_timeout" : false,
5634 "direct_meters" : null,
5635 "action_ids" : [37],
5636 "actions" : ["act_3"],
5637 "base_default_next" : null,
5638 "next_tables" : {
5639 "act_3" : null
5640 },
5641 "default_entry" : {
5642 "action_id" : 37,
5643 "action_const" : true,
5644 "action_data" : [],
5645 "action_entry_const" : true
5646 }
5647 }
5648 ],
5649 "action_profiles" : [],
5650 "conditionals" : [
5651 {
5652 "name" : "node_32",
5653 "id" : 12,
5654 "source_info" : {
5655 "filename" : "./include/control/next.p4",
Yi Tseng1b154bd2017-11-20 17:48:19 -08005656 "line" : 174,
Yi Tsengbe342052017-11-03 10:21:23 -07005657 "column" : 12,
5658 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
5659 },
5660 "expression" : {
5661 "type" : "expression",
5662 "value" : {
5663 "op" : "d2b",
5664 "left" : null,
5665 "right" : {
5666 "type" : "field",
5667 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
5668 }
5669 }
5670 },
5671 "true_next" : "tbl_act_2",
5672 "false_next" : "tbl_act_3"
5673 },
5674 {
5675 "name" : "node_35",
5676 "id" : 13,
5677 "source_info" : {
5678 "filename" : "./include/control/packetio.p4",
5679 "line" : 38,
5680 "column" : 12,
5681 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
5682 },
5683 "expression" : {
5684 "type" : "expression",
5685 "value" : {
5686 "op" : "==",
5687 "left" : {
5688 "type" : "field",
5689 "value" : ["standard_metadata", "egress_port"]
5690 },
5691 "right" : {
5692 "type" : "hexstr",
5693 "value" : "0x00ff"
5694 }
5695 }
5696 },
5697 "false_next" : null,
5698 "true_next" : "tbl_act_4"
5699 }
5700 ]
5701 }
5702 ],
5703 "checksums" : [
5704 {
5705 "name" : "cksum",
5706 "id" : 0,
5707 "target" : ["ipv4", "hdr_checksum"],
5708 "type" : "generic",
5709 "calculation" : "calc"
5710 },
5711 {
5712 "name" : "cksum_0",
5713 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07005714 "target" : ["ipv4", "hdr_checksum"],
5715 "type" : "generic",
Yi Tsengf73a5532017-11-17 15:58:57 -08005716 "calculation" : "calc_0"
Yi Tsengbe342052017-11-03 10:21:23 -07005717 }
5718 ],
5719 "force_arith" : [],
5720 "extern_instances" : [],
5721 "field_aliases" : [
5722 [
5723 "queueing_metadata.enq_timestamp",
5724 ["standard_metadata", "enq_timestamp"]
5725 ],
5726 [
5727 "queueing_metadata.enq_qdepth",
5728 ["standard_metadata", "enq_qdepth"]
5729 ],
5730 [
5731 "queueing_metadata.deq_timedelta",
5732 ["standard_metadata", "deq_timedelta"]
5733 ],
5734 [
5735 "queueing_metadata.deq_qdepth",
5736 ["standard_metadata", "deq_qdepth"]
5737 ],
5738 [
5739 "intrinsic_metadata.ingress_global_timestamp",
5740 ["standard_metadata", "ingress_global_timestamp"]
5741 ],
5742 [
5743 "intrinsic_metadata.lf_field_list",
5744 ["standard_metadata", "lf_field_list"]
5745 ],
5746 [
5747 "intrinsic_metadata.mcast_grp",
5748 ["standard_metadata", "mcast_grp"]
5749 ],
5750 [
5751 "intrinsic_metadata.resubmit_flag",
5752 ["standard_metadata", "resubmit_flag"]
5753 ],
5754 [
5755 "intrinsic_metadata.egress_rid",
5756 ["standard_metadata", "egress_rid"]
5757 ]
5758 ]
5759}