blob: 46b63a420b4793bc2bd28375ae02686936c3bdfa [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],
Yi Tsengbe342052017-11-03 10:21:23 -070017 ["fabric_metadata_t.pop_vlan_at_egress", 1, false],
18 ["fabric_metadata_t.ip_proto", 8, false],
19 ["fabric_metadata_t.l4_src_port", 16, false],
Yi Tsengf55eaa82017-11-29 15:51:28 -080020 ["fabric_metadata_t.l4_dst_port", 16, false],
21 ["_padding_2", 3, false]
Yi Tsengbe342052017-11-03 10:21:23 -070022 ]
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 {
Yi Tsengbe342052017-11-03 10:21:23 -07001476 "name" : "next.simple_counter",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001477 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07001478 "is_direct" : true,
1479 "binding" : "next.simple"
1480 },
1481 {
1482 "name" : "next.hashed_counter",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001483 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07001484 "is_direct" : true,
1485 "binding" : "next.hashed"
1486 },
1487 {
1488 "name" : "next.broadcast_counter",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001489 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07001490 "is_direct" : true,
1491 "binding" : "next.broadcast"
1492 },
1493 {
1494 "name" : "port_counters_control.egress_port_counter",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001495 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001496 "source_info" : {
1497 "filename" : "./include/control/port_counter.p4",
1498 "line" : 23,
1499 "column" : 38,
1500 "source_fragment" : "egress_port_counter"
1501 },
1502 "size" : 511,
1503 "is_direct" : false
1504 },
1505 {
1506 "name" : "port_counters_control.ingress_port_counter",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001507 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07001508 "source_info" : {
1509 "filename" : "./include/control/port_counter.p4",
1510 "line" : 24,
1511 "column" : 38,
1512 "source_fragment" : "ingress_port_counter"
1513 },
1514 "size" : 511,
1515 "is_direct" : false
1516 }
1517 ],
1518 "register_arrays" : [],
1519 "calculations" : [
1520 {
1521 "name" : "calc",
1522 "id" : 0,
1523 "source_info" : {
1524 "filename" : "./include/checksum.p4",
Yi Tsengf73a5532017-11-17 15:58:57 -08001525 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07001526 "column" : 8,
1527 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
1528 },
1529 "algo" : "csum16",
1530 "input" : [
1531 {
1532 "type" : "field",
1533 "value" : ["ipv4", "version"]
1534 },
1535 {
1536 "type" : "field",
1537 "value" : ["ipv4", "ihl"]
1538 },
1539 {
1540 "type" : "field",
1541 "value" : ["ipv4", "diffserv"]
1542 },
1543 {
1544 "type" : "field",
1545 "value" : ["ipv4", "total_len"]
1546 },
1547 {
1548 "type" : "field",
1549 "value" : ["ipv4", "identification"]
1550 },
1551 {
1552 "type" : "field",
1553 "value" : ["ipv4", "flags"]
1554 },
1555 {
1556 "type" : "field",
1557 "value" : ["ipv4", "frag_offset"]
1558 },
1559 {
1560 "type" : "field",
1561 "value" : ["ipv4", "ttl"]
1562 },
1563 {
1564 "type" : "field",
1565 "value" : ["ipv4", "protocol"]
1566 },
1567 {
1568 "type" : "field",
1569 "value" : ["ipv4", "src_addr"]
1570 },
1571 {
1572 "type" : "field",
1573 "value" : ["ipv4", "dst_addr"]
1574 }
1575 ]
1576 },
1577 {
1578 "name" : "calc_0",
1579 "id" : 1,
1580 "source_info" : {
1581 "filename" : "./include/checksum.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07001582 "line" : 24,
1583 "column" : 8,
1584 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
1585 },
1586 "algo" : "csum16",
1587 "input" : [
1588 {
1589 "type" : "field",
1590 "value" : ["ipv4", "version"]
1591 },
1592 {
1593 "type" : "field",
1594 "value" : ["ipv4", "ihl"]
1595 },
1596 {
1597 "type" : "field",
1598 "value" : ["ipv4", "diffserv"]
1599 },
1600 {
1601 "type" : "field",
1602 "value" : ["ipv4", "total_len"]
1603 },
1604 {
1605 "type" : "field",
1606 "value" : ["ipv4", "identification"]
1607 },
1608 {
1609 "type" : "field",
1610 "value" : ["ipv4", "flags"]
1611 },
1612 {
1613 "type" : "field",
1614 "value" : ["ipv4", "frag_offset"]
1615 },
1616 {
1617 "type" : "field",
1618 "value" : ["ipv4", "ttl"]
1619 },
1620 {
1621 "type" : "field",
1622 "value" : ["ipv4", "protocol"]
1623 },
1624 {
1625 "type" : "field",
1626 "value" : ["ipv4", "src_addr"]
1627 },
1628 {
1629 "type" : "field",
1630 "value" : ["ipv4", "dst_addr"]
1631 }
1632 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001633 }
1634 ],
1635 "learn_lists" : [],
1636 "actions" : [
1637 {
1638 "name" : "nop",
1639 "id" : 0,
1640 "runtime_data" : [],
1641 "primitives" : []
1642 },
1643 {
1644 "name" : "nop",
1645 "id" : 1,
1646 "runtime_data" : [],
1647 "primitives" : []
1648 },
1649 {
1650 "name" : "drop",
1651 "id" : 2,
1652 "runtime_data" : [],
1653 "primitives" : [
1654 {
1655 "op" : "drop",
1656 "parameters" : [],
1657 "source_info" : {
1658 "filename" : "./include/control/../action.p4",
1659 "line" : 25,
1660 "column" : 4,
1661 "source_fragment" : "mark_to_drop()"
1662 }
1663 }
1664 ]
1665 },
1666 {
1667 "name" : "drop",
1668 "id" : 3,
1669 "runtime_data" : [],
1670 "primitives" : [
1671 {
1672 "op" : "drop",
1673 "parameters" : [],
1674 "source_info" : {
1675 "filename" : "./include/control/../action.p4",
1676 "line" : 25,
1677 "column" : 4,
1678 "source_fragment" : "mark_to_drop()"
1679 }
1680 }
1681 ]
1682 },
1683 {
1684 "name" : "NoAction",
1685 "id" : 4,
1686 "runtime_data" : [],
1687 "primitives" : []
1688 },
1689 {
1690 "name" : "NoAction",
1691 "id" : 5,
1692 "runtime_data" : [],
1693 "primitives" : []
1694 },
1695 {
1696 "name" : "NoAction",
1697 "id" : 6,
1698 "runtime_data" : [],
1699 "primitives" : []
1700 },
1701 {
1702 "name" : "NoAction",
1703 "id" : 7,
1704 "runtime_data" : [],
1705 "primitives" : []
1706 },
1707 {
1708 "name" : "NoAction",
1709 "id" : 8,
1710 "runtime_data" : [],
1711 "primitives" : []
1712 },
1713 {
1714 "name" : "NoAction",
1715 "id" : 9,
1716 "runtime_data" : [],
1717 "primitives" : []
1718 },
1719 {
1720 "name" : "NoAction",
1721 "id" : 10,
1722 "runtime_data" : [],
1723 "primitives" : []
1724 },
1725 {
1726 "name" : "NoAction",
1727 "id" : 11,
1728 "runtime_data" : [],
1729 "primitives" : []
1730 },
1731 {
1732 "name" : "NoAction",
1733 "id" : 12,
1734 "runtime_data" : [],
1735 "primitives" : []
1736 },
1737 {
Yi Tsengbe342052017-11-03 10:21:23 -07001738 "name" : "filtering.set_vlan",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001739 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07001740 "runtime_data" : [
1741 {
1742 "name" : "new_vlan_id",
1743 "bitwidth" : 12
1744 }
1745 ],
1746 "primitives" : [
1747 {
1748 "op" : "assign",
1749 "parameters" : [
1750 {
1751 "type" : "field",
1752 "value" : ["vlan_tag", "vlan_id"]
1753 },
1754 {
1755 "type" : "runtime_data",
1756 "value" : 0
1757 }
1758 ],
1759 "source_info" : {
1760 "filename" : "./include/control/filtering.p4",
1761 "line" : 32,
1762 "column" : 8,
1763 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1764 }
1765 }
1766 ]
1767 },
1768 {
1769 "name" : "filtering.push_internal_vlan",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001770 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07001771 "runtime_data" : [
1772 {
1773 "name" : "new_vlan_id",
1774 "bitwidth" : 12
1775 }
1776 ],
1777 "primitives" : [
1778 {
1779 "op" : "add_header",
1780 "parameters" : [
1781 {
1782 "type" : "header",
1783 "value" : "vlan_tag"
1784 }
1785 ],
1786 "source_info" : {
1787 "filename" : "./include/control/filtering.p4",
1788 "line" : 38,
1789 "column" : 8,
1790 "source_fragment" : "hdr.vlan_tag.setValid()"
1791 }
1792 },
1793 {
1794 "op" : "assign",
1795 "parameters" : [
1796 {
1797 "type" : "field",
1798 "value" : ["vlan_tag", "cfi"]
1799 },
1800 {
1801 "type" : "hexstr",
1802 "value" : "0x00"
1803 }
1804 ],
1805 "source_info" : {
1806 "filename" : "./include/control/filtering.p4",
1807 "line" : 39,
1808 "column" : 8,
1809 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1810 }
1811 },
1812 {
1813 "op" : "assign",
1814 "parameters" : [
1815 {
1816 "type" : "field",
1817 "value" : ["vlan_tag", "pri"]
1818 },
1819 {
1820 "type" : "hexstr",
1821 "value" : "0x00"
1822 }
1823 ],
1824 "source_info" : {
1825 "filename" : "./include/control/filtering.p4",
1826 "line" : 40,
1827 "column" : 8,
1828 "source_fragment" : "hdr.vlan_tag.pri = 0"
1829 }
1830 },
1831 {
1832 "op" : "assign",
1833 "parameters" : [
1834 {
1835 "type" : "field",
1836 "value" : ["vlan_tag", "ether_type"]
1837 },
1838 {
1839 "type" : "hexstr",
1840 "value" : "0x8100"
1841 }
1842 ],
1843 "source_info" : {
1844 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001845 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001846 "column" : 31,
1847 "source_fragment" : "0x8100; ..."
1848 }
1849 },
1850 {
1851 "op" : "assign",
1852 "parameters" : [
1853 {
1854 "type" : "field",
1855 "value" : ["vlan_tag", "vlan_id"]
1856 },
1857 {
1858 "type" : "runtime_data",
1859 "value" : 0
1860 }
1861 ],
1862 "source_info" : {
1863 "filename" : "./include/control/filtering.p4",
1864 "line" : 32,
1865 "column" : 8,
1866 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1867 }
1868 },
1869 {
1870 "op" : "assign",
1871 "parameters" : [
1872 {
1873 "type" : "field",
1874 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1875 },
1876 {
1877 "type" : "expression",
1878 "value" : {
1879 "type" : "expression",
1880 "value" : {
1881 "op" : "b2d",
1882 "left" : null,
1883 "right" : {
1884 "type" : "bool",
1885 "value" : true
1886 }
1887 }
1888 }
1889 }
1890 ],
1891 "source_info" : {
1892 "filename" : "./include/control/filtering.p4",
1893 "line" : 45,
1894 "column" : 8,
1895 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1896 }
1897 }
1898 ]
1899 },
1900 {
1901 "name" : "filtering.set_forwarding_type",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001902 "id" : 15,
Yi Tsengbe342052017-11-03 10:21:23 -07001903 "runtime_data" : [
1904 {
1905 "name" : "fwd_type",
1906 "bitwidth" : 3
1907 }
1908 ],
1909 "primitives" : [
1910 {
1911 "op" : "assign",
1912 "parameters" : [
1913 {
1914 "type" : "field",
1915 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1916 },
1917 {
1918 "type" : "runtime_data",
1919 "value" : 0
1920 }
1921 ],
1922 "source_info" : {
1923 "filename" : "./include/control/filtering.p4",
1924 "line" : 49,
1925 "column" : 8,
1926 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1927 }
1928 }
1929 ]
1930 },
1931 {
1932 "name" : "forwarding.set_next_id",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001933 "id" : 16,
1934 "runtime_data" : [
1935 {
1936 "name" : "next_id",
1937 "bitwidth" : 32
1938 }
1939 ],
1940 "primitives" : [
1941 {
1942 "op" : "assign",
1943 "parameters" : [
1944 {
1945 "type" : "field",
1946 "value" : ["scalars", "fabric_metadata_t.next_id"]
1947 },
1948 {
1949 "type" : "runtime_data",
1950 "value" : 0
1951 }
1952 ],
1953 "source_info" : {
1954 "filename" : "./include/control/forwarding.p4",
1955 "line" : 39,
1956 "column" : 8,
1957 "source_fragment" : "fabric_metadata.next_id = next_id"
1958 }
1959 }
1960 ]
1961 },
1962 {
1963 "name" : "forwarding.set_next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07001964 "id" : 17,
1965 "runtime_data" : [
1966 {
1967 "name" : "next_id",
1968 "bitwidth" : 32
1969 }
1970 ],
1971 "primitives" : [
1972 {
1973 "op" : "assign",
1974 "parameters" : [
1975 {
1976 "type" : "field",
1977 "value" : ["scalars", "fabric_metadata_t.next_id"]
1978 },
1979 {
1980 "type" : "runtime_data",
1981 "value" : 0
1982 }
1983 ],
1984 "source_info" : {
1985 "filename" : "./include/control/forwarding.p4",
1986 "line" : 39,
1987 "column" : 8,
1988 "source_fragment" : "fabric_metadata.next_id = next_id"
1989 }
1990 }
1991 ]
1992 },
1993 {
1994 "name" : "forwarding.set_next_id",
1995 "id" : 18,
1996 "runtime_data" : [
1997 {
1998 "name" : "next_id",
1999 "bitwidth" : 32
2000 }
2001 ],
2002 "primitives" : [
2003 {
2004 "op" : "assign",
2005 "parameters" : [
2006 {
2007 "type" : "field",
2008 "value" : ["scalars", "fabric_metadata_t.next_id"]
2009 },
2010 {
2011 "type" : "runtime_data",
2012 "value" : 0
2013 }
2014 ],
2015 "source_info" : {
2016 "filename" : "./include/control/forwarding.p4",
2017 "line" : 39,
2018 "column" : 8,
2019 "source_fragment" : "fabric_metadata.next_id = next_id"
2020 }
2021 }
2022 ]
2023 },
2024 {
2025 "name" : "forwarding.set_next_id",
2026 "id" : 19,
2027 "runtime_data" : [
2028 {
2029 "name" : "next_id",
2030 "bitwidth" : 32
2031 }
2032 ],
2033 "primitives" : [
2034 {
2035 "op" : "assign",
2036 "parameters" : [
2037 {
2038 "type" : "field",
2039 "value" : ["scalars", "fabric_metadata_t.next_id"]
2040 },
2041 {
2042 "type" : "runtime_data",
2043 "value" : 0
2044 }
2045 ],
2046 "source_info" : {
2047 "filename" : "./include/control/forwarding.p4",
2048 "line" : 39,
2049 "column" : 8,
2050 "source_fragment" : "fabric_metadata.next_id = next_id"
2051 }
2052 }
2053 ]
2054 },
2055 {
2056 "name" : "forwarding.set_next_id",
2057 "id" : 20,
2058 "runtime_data" : [
2059 {
2060 "name" : "next_id",
2061 "bitwidth" : 32
2062 }
2063 ],
2064 "primitives" : [
2065 {
2066 "op" : "assign",
2067 "parameters" : [
2068 {
2069 "type" : "field",
2070 "value" : ["scalars", "fabric_metadata_t.next_id"]
2071 },
2072 {
2073 "type" : "runtime_data",
2074 "value" : 0
2075 }
2076 ],
2077 "source_info" : {
2078 "filename" : "./include/control/forwarding.p4",
2079 "line" : 39,
2080 "column" : 8,
2081 "source_fragment" : "fabric_metadata.next_id = next_id"
2082 }
2083 }
2084 ]
2085 },
2086 {
2087 "name" : "forwarding.set_next_id",
2088 "id" : 21,
2089 "runtime_data" : [
2090 {
2091 "name" : "next_id",
2092 "bitwidth" : 32
2093 }
2094 ],
2095 "primitives" : [
2096 {
2097 "op" : "assign",
2098 "parameters" : [
2099 {
2100 "type" : "field",
2101 "value" : ["scalars", "fabric_metadata_t.next_id"]
2102 },
2103 {
2104 "type" : "runtime_data",
2105 "value" : 0
2106 }
2107 ],
2108 "source_info" : {
2109 "filename" : "./include/control/forwarding.p4",
2110 "line" : 39,
2111 "column" : 8,
2112 "source_fragment" : "fabric_metadata.next_id = next_id"
2113 }
2114 }
2115 ]
2116 },
2117 {
Yi Tsengbe342052017-11-03 10:21:23 -07002118 "name" : "forwarding.pop_mpls_and_next",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002119 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07002120 "runtime_data" : [
2121 {
2122 "name" : "next_id",
2123 "bitwidth" : 32
2124 }
2125 ],
2126 "primitives" : [
2127 {
2128 "op" : "remove_header",
2129 "parameters" : [
2130 {
2131 "type" : "header",
2132 "value" : "mpls"
2133 }
2134 ],
2135 "source_info" : {
2136 "filename" : "./include/control/forwarding.p4",
2137 "line" : 43,
2138 "column" : 8,
2139 "source_fragment" : "hdr.mpls.setInvalid()"
2140 }
2141 },
2142 {
2143 "op" : "assign",
2144 "parameters" : [
2145 {
2146 "type" : "field",
2147 "value" : ["ethernet", "ether_type"]
2148 },
2149 {
2150 "type" : "expression",
2151 "value" : {
2152 "type" : "expression",
2153 "value" : {
2154 "op" : "?",
2155 "left" : {
2156 "type" : "hexstr",
2157 "value" : "0x0800"
2158 },
2159 "right" : {
2160 "type" : "field",
2161 "value" : ["ethernet", "ether_type"]
2162 },
2163 "cond" : {
2164 "type" : "expression",
2165 "value" : {
2166 "op" : "==",
2167 "left" : {
2168 "type" : "field",
2169 "value" : ["ipv4", "$valid$"]
2170 },
2171 "right" : {
2172 "type" : "hexstr",
2173 "value" : "0x01"
2174 }
2175 }
2176 }
2177 }
2178 }
2179 }
2180 ],
2181 "source_info" : {
2182 "filename" : "./include/control/forwarding.p4",
2183 "line" : 45,
2184 "column" : 12,
2185 "source_fragment" : "hdr.ethernet.ether_type ="
2186 }
2187 },
2188 {
2189 "op" : "assign",
2190 "parameters" : [
2191 {
2192 "type" : "field",
2193 "value" : ["ethernet", "ether_type"]
2194 },
2195 {
2196 "type" : "expression",
2197 "value" : {
2198 "type" : "expression",
2199 "value" : {
2200 "op" : "?",
2201 "left" : {
2202 "type" : "hexstr",
2203 "value" : "0x86dd"
2204 },
2205 "right" : {
2206 "type" : "field",
2207 "value" : ["ethernet", "ether_type"]
2208 },
2209 "cond" : {
2210 "type" : "expression",
2211 "value" : {
2212 "op" : "not",
2213 "left" : null,
2214 "right" : {
2215 "type" : "expression",
2216 "value" : {
2217 "op" : "==",
2218 "left" : {
2219 "type" : "field",
2220 "value" : ["ipv4", "$valid$"]
2221 },
2222 "right" : {
2223 "type" : "hexstr",
2224 "value" : "0x01"
2225 }
2226 }
2227 }
2228 }
2229 }
2230 }
2231 }
2232 }
2233 ],
2234 "source_info" : {
2235 "filename" : "./include/control/forwarding.p4",
2236 "line" : 47,
2237 "column" : 12,
2238 "source_fragment" : "hdr.ethernet.ether_type ="
2239 }
2240 },
2241 {
2242 "op" : "assign",
2243 "parameters" : [
2244 {
2245 "type" : "field",
2246 "value" : ["scalars", "fabric_metadata_t.next_id"]
2247 },
2248 {
2249 "type" : "runtime_data",
2250 "value" : 0
2251 }
2252 ],
2253 "source_info" : {
2254 "filename" : "./include/control/forwarding.p4",
2255 "line" : 49,
2256 "column" : 8,
2257 "source_fragment" : "fabric_metadata.next_id = next_id"
2258 }
2259 }
2260 ]
2261 },
2262 {
Yi Tsengbe342052017-11-03 10:21:23 -07002263 "name" : "forwarding.duplicate_to_controller",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002264 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07002265 "runtime_data" : [],
2266 "primitives" : [
2267 {
2268 "op" : "assign",
2269 "parameters" : [
2270 {
2271 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07002272 "value" : ["standard_metadata", "egress_spec"]
2273 },
2274 {
2275 "type" : "hexstr",
2276 "value" : "0x00ff"
2277 }
2278 ],
2279 "source_info" : {
2280 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002281 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07002282 "column" : 28,
2283 "source_fragment" : "255; ..."
2284 }
2285 }
2286 ]
2287 },
2288 {
Yi Tsengbe342052017-11-03 10:21:23 -07002289 "name" : "next.output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002290 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07002291 "runtime_data" : [
2292 {
2293 "name" : "port_num",
2294 "bitwidth" : 9
2295 }
2296 ],
2297 "primitives" : [
2298 {
2299 "op" : "assign",
2300 "parameters" : [
2301 {
2302 "type" : "field",
2303 "value" : ["standard_metadata", "egress_spec"]
2304 },
2305 {
2306 "type" : "runtime_data",
2307 "value" : 0
2308 }
2309 ],
2310 "source_info" : {
2311 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002312 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002313 "column" : 8,
2314 "source_fragment" : "standard_metadata.egress_spec = port_num"
2315 }
2316 },
2317 {
2318 "op" : "assign",
2319 "parameters" : [
2320 {
2321 "type" : "field",
2322 "value" : ["ipv4", "ttl"]
2323 },
2324 {
2325 "type" : "expression",
2326 "value" : {
2327 "type" : "expression",
2328 "value" : {
2329 "op" : "?",
2330 "left" : {
2331 "type" : "expression",
2332 "value" : {
2333 "op" : "&",
2334 "left" : {
2335 "type" : "expression",
2336 "value" : {
2337 "op" : "+",
2338 "left" : {
2339 "type" : "field",
2340 "value" : ["ipv4", "ttl"]
2341 },
2342 "right" : {
2343 "type" : "hexstr",
2344 "value" : "0xff"
2345 }
2346 }
2347 },
2348 "right" : {
2349 "type" : "hexstr",
2350 "value" : "0xff"
2351 }
2352 }
2353 },
2354 "right" : {
2355 "type" : "field",
2356 "value" : ["ipv4", "ttl"]
2357 },
2358 "cond" : {
2359 "type" : "expression",
2360 "value" : {
2361 "op" : "and",
2362 "left" : {
2363 "type" : "expression",
2364 "value" : {
2365 "op" : "!=",
2366 "left" : {
2367 "type" : "field",
2368 "value" : ["mpls", "$valid$"]
2369 },
2370 "right" : {
2371 "type" : "hexstr",
2372 "value" : "0x01"
2373 }
2374 }
2375 },
2376 "right" : {
2377 "type" : "expression",
2378 "value" : {
2379 "op" : "==",
2380 "left" : {
2381 "type" : "field",
2382 "value" : ["ipv4", "$valid$"]
2383 },
2384 "right" : {
2385 "type" : "hexstr",
2386 "value" : "0x01"
2387 }
2388 }
2389 }
2390 }
2391 }
2392 }
2393 }
2394 }
2395 ],
2396 "source_info" : {
2397 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002398 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07002399 "column" : 16,
2400 "source_fragment" : "hdr.ipv4.ttl ="
2401 }
2402 },
2403 {
2404 "op" : "assign",
2405 "parameters" : [
2406 {
2407 "type" : "field",
2408 "value" : ["ipv6", "hop_limit"]
2409 },
2410 {
2411 "type" : "expression",
2412 "value" : {
2413 "type" : "expression",
2414 "value" : {
2415 "op" : "?",
2416 "left" : {
2417 "type" : "expression",
2418 "value" : {
2419 "op" : "&",
2420 "left" : {
2421 "type" : "expression",
2422 "value" : {
2423 "op" : "+",
2424 "left" : {
2425 "type" : "field",
2426 "value" : ["ipv6", "hop_limit"]
2427 },
2428 "right" : {
2429 "type" : "hexstr",
2430 "value" : "0xff"
2431 }
2432 }
2433 },
2434 "right" : {
2435 "type" : "hexstr",
2436 "value" : "0xff"
2437 }
2438 }
2439 },
2440 "right" : {
2441 "type" : "field",
2442 "value" : ["ipv6", "hop_limit"]
2443 },
2444 "cond" : {
2445 "type" : "expression",
2446 "value" : {
2447 "op" : "and",
2448 "left" : {
2449 "type" : "expression",
2450 "value" : {
2451 "op" : "and",
2452 "left" : {
2453 "type" : "expression",
2454 "value" : {
2455 "op" : "!=",
2456 "left" : {
2457 "type" : "field",
2458 "value" : ["mpls", "$valid$"]
2459 },
2460 "right" : {
2461 "type" : "hexstr",
2462 "value" : "0x01"
2463 }
2464 }
2465 },
2466 "right" : {
2467 "type" : "expression",
2468 "value" : {
2469 "op" : "not",
2470 "left" : null,
2471 "right" : {
2472 "type" : "expression",
2473 "value" : {
2474 "op" : "==",
2475 "left" : {
2476 "type" : "field",
2477 "value" : ["ipv4", "$valid$"]
2478 },
2479 "right" : {
2480 "type" : "hexstr",
2481 "value" : "0x01"
2482 }
2483 }
2484 }
2485 }
2486 }
2487 }
2488 },
2489 "right" : {
2490 "type" : "expression",
2491 "value" : {
2492 "op" : "==",
2493 "left" : {
2494 "type" : "field",
2495 "value" : ["ipv6", "$valid$"]
2496 },
2497 "right" : {
2498 "type" : "hexstr",
2499 "value" : "0x01"
2500 }
2501 }
2502 }
2503 }
2504 }
2505 }
2506 }
2507 }
2508 ],
2509 "source_info" : {
2510 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002511 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07002512 "column" : 16,
2513 "source_fragment" : "hdr.ipv6.hop_limit ="
2514 }
2515 }
2516 ]
2517 },
2518 {
2519 "name" : "next.set_vlan_output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002520 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07002521 "runtime_data" : [
2522 {
2523 "name" : "new_vlan_id",
2524 "bitwidth" : 12
2525 },
2526 {
2527 "name" : "port_num",
2528 "bitwidth" : 9
2529 }
2530 ],
2531 "primitives" : [
2532 {
2533 "op" : "assign",
2534 "parameters" : [
2535 {
2536 "type" : "field",
2537 "value" : ["vlan_tag", "vlan_id"]
2538 },
2539 {
2540 "type" : "runtime_data",
2541 "value" : 0
2542 }
2543 ],
2544 "source_info" : {
2545 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002546 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07002547 "column" : 8,
2548 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
2549 }
2550 },
2551 {
2552 "op" : "assign",
2553 "parameters" : [
2554 {
2555 "type" : "field",
2556 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
2557 },
2558 {
2559 "type" : "expression",
2560 "value" : {
2561 "type" : "expression",
2562 "value" : {
2563 "op" : "b2d",
2564 "left" : null,
2565 "right" : {
2566 "type" : "bool",
2567 "value" : false
2568 }
2569 }
2570 }
2571 }
2572 ],
2573 "source_info" : {
2574 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002575 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07002576 "column" : 8,
2577 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
2578 }
2579 },
2580 {
2581 "op" : "assign",
2582 "parameters" : [
2583 {
2584 "type" : "field",
2585 "value" : ["standard_metadata", "egress_spec"]
2586 },
2587 {
2588 "type" : "runtime_data",
2589 "value" : 1
2590 }
2591 ],
2592 "source_info" : {
2593 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002594 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002595 "column" : 8,
2596 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2597 }
2598 },
2599 {
2600 "op" : "assign",
2601 "parameters" : [
2602 {
2603 "type" : "field",
2604 "value" : ["ipv4", "ttl"]
2605 },
2606 {
2607 "type" : "expression",
2608 "value" : {
2609 "type" : "expression",
2610 "value" : {
2611 "op" : "?",
2612 "left" : {
2613 "type" : "expression",
2614 "value" : {
2615 "op" : "&",
2616 "left" : {
2617 "type" : "expression",
2618 "value" : {
2619 "op" : "+",
2620 "left" : {
2621 "type" : "field",
2622 "value" : ["ipv4", "ttl"]
2623 },
2624 "right" : {
2625 "type" : "hexstr",
2626 "value" : "0xff"
2627 }
2628 }
2629 },
2630 "right" : {
2631 "type" : "hexstr",
2632 "value" : "0xff"
2633 }
2634 }
2635 },
2636 "right" : {
2637 "type" : "field",
2638 "value" : ["ipv4", "ttl"]
2639 },
2640 "cond" : {
2641 "type" : "expression",
2642 "value" : {
2643 "op" : "and",
2644 "left" : {
2645 "type" : "expression",
2646 "value" : {
2647 "op" : "!=",
2648 "left" : {
2649 "type" : "field",
2650 "value" : ["mpls", "$valid$"]
2651 },
2652 "right" : {
2653 "type" : "hexstr",
2654 "value" : "0x01"
2655 }
2656 }
2657 },
2658 "right" : {
2659 "type" : "expression",
2660 "value" : {
2661 "op" : "==",
2662 "left" : {
2663 "type" : "field",
2664 "value" : ["ipv4", "$valid$"]
2665 },
2666 "right" : {
2667 "type" : "hexstr",
2668 "value" : "0x01"
2669 }
2670 }
2671 }
2672 }
2673 }
2674 }
2675 }
2676 }
2677 ],
2678 "source_info" : {
2679 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002680 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07002681 "column" : 16,
2682 "source_fragment" : "hdr.ipv4.ttl ="
2683 }
2684 },
2685 {
2686 "op" : "assign",
2687 "parameters" : [
2688 {
2689 "type" : "field",
2690 "value" : ["ipv6", "hop_limit"]
2691 },
2692 {
2693 "type" : "expression",
2694 "value" : {
2695 "type" : "expression",
2696 "value" : {
2697 "op" : "?",
2698 "left" : {
2699 "type" : "expression",
2700 "value" : {
2701 "op" : "&",
2702 "left" : {
2703 "type" : "expression",
2704 "value" : {
2705 "op" : "+",
2706 "left" : {
2707 "type" : "field",
2708 "value" : ["ipv6", "hop_limit"]
2709 },
2710 "right" : {
2711 "type" : "hexstr",
2712 "value" : "0xff"
2713 }
2714 }
2715 },
2716 "right" : {
2717 "type" : "hexstr",
2718 "value" : "0xff"
2719 }
2720 }
2721 },
2722 "right" : {
2723 "type" : "field",
2724 "value" : ["ipv6", "hop_limit"]
2725 },
2726 "cond" : {
2727 "type" : "expression",
2728 "value" : {
2729 "op" : "and",
2730 "left" : {
2731 "type" : "expression",
2732 "value" : {
2733 "op" : "and",
2734 "left" : {
2735 "type" : "expression",
2736 "value" : {
2737 "op" : "!=",
2738 "left" : {
2739 "type" : "field",
2740 "value" : ["mpls", "$valid$"]
2741 },
2742 "right" : {
2743 "type" : "hexstr",
2744 "value" : "0x01"
2745 }
2746 }
2747 },
2748 "right" : {
2749 "type" : "expression",
2750 "value" : {
2751 "op" : "not",
2752 "left" : null,
2753 "right" : {
2754 "type" : "expression",
2755 "value" : {
2756 "op" : "==",
2757 "left" : {
2758 "type" : "field",
2759 "value" : ["ipv4", "$valid$"]
2760 },
2761 "right" : {
2762 "type" : "hexstr",
2763 "value" : "0x01"
2764 }
2765 }
2766 }
2767 }
2768 }
2769 }
2770 },
2771 "right" : {
2772 "type" : "expression",
2773 "value" : {
2774 "op" : "==",
2775 "left" : {
2776 "type" : "field",
2777 "value" : ["ipv6", "$valid$"]
2778 },
2779 "right" : {
2780 "type" : "hexstr",
2781 "value" : "0x01"
2782 }
2783 }
2784 }
2785 }
2786 }
2787 }
2788 }
2789 }
2790 ],
2791 "source_info" : {
2792 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002793 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07002794 "column" : 16,
2795 "source_fragment" : "hdr.ipv6.hop_limit ="
2796 }
2797 }
2798 ]
2799 },
2800 {
2801 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002802 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07002803 "runtime_data" : [
2804 {
2805 "name" : "port_num",
2806 "bitwidth" : 9
2807 },
2808 {
2809 "name" : "smac",
2810 "bitwidth" : 48
2811 },
2812 {
2813 "name" : "dmac",
2814 "bitwidth" : 48
2815 }
2816 ],
2817 "primitives" : [
2818 {
2819 "op" : "assign",
2820 "parameters" : [
2821 {
2822 "type" : "field",
2823 "value" : ["ethernet", "src_addr"]
2824 },
2825 {
2826 "type" : "runtime_data",
2827 "value" : 1
2828 }
2829 ],
2830 "source_info" : {
2831 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002832 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07002833 "column" : 8,
2834 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2835 }
2836 },
2837 {
2838 "op" : "assign",
2839 "parameters" : [
2840 {
2841 "type" : "field",
2842 "value" : ["ethernet", "dst_addr"]
2843 },
2844 {
2845 "type" : "runtime_data",
2846 "value" : 2
2847 }
2848 ],
2849 "source_info" : {
2850 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002851 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07002852 "column" : 8,
2853 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2854 }
2855 },
2856 {
2857 "op" : "assign",
2858 "parameters" : [
2859 {
2860 "type" : "field",
2861 "value" : ["standard_metadata", "egress_spec"]
2862 },
2863 {
2864 "type" : "runtime_data",
2865 "value" : 0
2866 }
2867 ],
2868 "source_info" : {
2869 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002870 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002871 "column" : 8,
2872 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2873 }
2874 },
2875 {
2876 "op" : "assign",
2877 "parameters" : [
2878 {
2879 "type" : "field",
2880 "value" : ["ipv4", "ttl"]
2881 },
2882 {
2883 "type" : "expression",
2884 "value" : {
2885 "type" : "expression",
2886 "value" : {
2887 "op" : "?",
2888 "left" : {
2889 "type" : "expression",
2890 "value" : {
2891 "op" : "&",
2892 "left" : {
2893 "type" : "expression",
2894 "value" : {
2895 "op" : "+",
2896 "left" : {
2897 "type" : "field",
2898 "value" : ["ipv4", "ttl"]
2899 },
2900 "right" : {
2901 "type" : "hexstr",
2902 "value" : "0xff"
2903 }
2904 }
2905 },
2906 "right" : {
2907 "type" : "hexstr",
2908 "value" : "0xff"
2909 }
2910 }
2911 },
2912 "right" : {
2913 "type" : "field",
2914 "value" : ["ipv4", "ttl"]
2915 },
2916 "cond" : {
2917 "type" : "expression",
2918 "value" : {
2919 "op" : "and",
2920 "left" : {
2921 "type" : "expression",
2922 "value" : {
2923 "op" : "!=",
2924 "left" : {
2925 "type" : "field",
2926 "value" : ["mpls", "$valid$"]
2927 },
2928 "right" : {
2929 "type" : "hexstr",
2930 "value" : "0x01"
2931 }
2932 }
2933 },
2934 "right" : {
2935 "type" : "expression",
2936 "value" : {
2937 "op" : "==",
2938 "left" : {
2939 "type" : "field",
2940 "value" : ["ipv4", "$valid$"]
2941 },
2942 "right" : {
2943 "type" : "hexstr",
2944 "value" : "0x01"
2945 }
2946 }
2947 }
2948 }
2949 }
2950 }
2951 }
2952 }
2953 ],
2954 "source_info" : {
2955 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002956 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07002957 "column" : 16,
2958 "source_fragment" : "hdr.ipv4.ttl ="
2959 }
2960 },
2961 {
2962 "op" : "assign",
2963 "parameters" : [
2964 {
2965 "type" : "field",
2966 "value" : ["ipv6", "hop_limit"]
2967 },
2968 {
2969 "type" : "expression",
2970 "value" : {
2971 "type" : "expression",
2972 "value" : {
2973 "op" : "?",
2974 "left" : {
2975 "type" : "expression",
2976 "value" : {
2977 "op" : "&",
2978 "left" : {
2979 "type" : "expression",
2980 "value" : {
2981 "op" : "+",
2982 "left" : {
2983 "type" : "field",
2984 "value" : ["ipv6", "hop_limit"]
2985 },
2986 "right" : {
2987 "type" : "hexstr",
2988 "value" : "0xff"
2989 }
2990 }
2991 },
2992 "right" : {
2993 "type" : "hexstr",
2994 "value" : "0xff"
2995 }
2996 }
2997 },
2998 "right" : {
2999 "type" : "field",
3000 "value" : ["ipv6", "hop_limit"]
3001 },
3002 "cond" : {
3003 "type" : "expression",
3004 "value" : {
3005 "op" : "and",
3006 "left" : {
3007 "type" : "expression",
3008 "value" : {
3009 "op" : "and",
3010 "left" : {
3011 "type" : "expression",
3012 "value" : {
3013 "op" : "!=",
3014 "left" : {
3015 "type" : "field",
3016 "value" : ["mpls", "$valid$"]
3017 },
3018 "right" : {
3019 "type" : "hexstr",
3020 "value" : "0x01"
3021 }
3022 }
3023 },
3024 "right" : {
3025 "type" : "expression",
3026 "value" : {
3027 "op" : "not",
3028 "left" : null,
3029 "right" : {
3030 "type" : "expression",
3031 "value" : {
3032 "op" : "==",
3033 "left" : {
3034 "type" : "field",
3035 "value" : ["ipv4", "$valid$"]
3036 },
3037 "right" : {
3038 "type" : "hexstr",
3039 "value" : "0x01"
3040 }
3041 }
3042 }
3043 }
3044 }
3045 }
3046 },
3047 "right" : {
3048 "type" : "expression",
3049 "value" : {
3050 "op" : "==",
3051 "left" : {
3052 "type" : "field",
3053 "value" : ["ipv6", "$valid$"]
3054 },
3055 "right" : {
3056 "type" : "hexstr",
3057 "value" : "0x01"
3058 }
3059 }
3060 }
3061 }
3062 }
3063 }
3064 }
3065 }
3066 ],
3067 "source_info" : {
3068 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003069 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07003070 "column" : 16,
3071 "source_fragment" : "hdr.ipv6.hop_limit ="
3072 }
3073 }
3074 ]
3075 },
3076 {
3077 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003078 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07003079 "runtime_data" : [
3080 {
3081 "name" : "port_num",
3082 "bitwidth" : 9
3083 },
3084 {
3085 "name" : "smac",
3086 "bitwidth" : 48
3087 },
3088 {
3089 "name" : "dmac",
3090 "bitwidth" : 48
3091 }
3092 ],
3093 "primitives" : [
3094 {
3095 "op" : "assign",
3096 "parameters" : [
3097 {
3098 "type" : "field",
3099 "value" : ["ethernet", "src_addr"]
3100 },
3101 {
3102 "type" : "runtime_data",
3103 "value" : 1
3104 }
3105 ],
3106 "source_info" : {
3107 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003108 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07003109 "column" : 8,
3110 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3111 }
3112 },
3113 {
3114 "op" : "assign",
3115 "parameters" : [
3116 {
3117 "type" : "field",
3118 "value" : ["ethernet", "dst_addr"]
3119 },
3120 {
3121 "type" : "runtime_data",
3122 "value" : 2
3123 }
3124 ],
3125 "source_info" : {
3126 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003127 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07003128 "column" : 8,
3129 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3130 }
3131 },
3132 {
3133 "op" : "assign",
3134 "parameters" : [
3135 {
3136 "type" : "field",
3137 "value" : ["standard_metadata", "egress_spec"]
3138 },
3139 {
3140 "type" : "runtime_data",
3141 "value" : 0
3142 }
3143 ],
3144 "source_info" : {
3145 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003146 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07003147 "column" : 8,
3148 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3149 }
3150 },
3151 {
3152 "op" : "assign",
3153 "parameters" : [
3154 {
3155 "type" : "field",
3156 "value" : ["ipv4", "ttl"]
3157 },
3158 {
3159 "type" : "expression",
3160 "value" : {
3161 "type" : "expression",
3162 "value" : {
3163 "op" : "?",
3164 "left" : {
3165 "type" : "expression",
3166 "value" : {
3167 "op" : "&",
3168 "left" : {
3169 "type" : "expression",
3170 "value" : {
3171 "op" : "+",
3172 "left" : {
3173 "type" : "field",
3174 "value" : ["ipv4", "ttl"]
3175 },
3176 "right" : {
3177 "type" : "hexstr",
3178 "value" : "0xff"
3179 }
3180 }
3181 },
3182 "right" : {
3183 "type" : "hexstr",
3184 "value" : "0xff"
3185 }
3186 }
3187 },
3188 "right" : {
3189 "type" : "field",
3190 "value" : ["ipv4", "ttl"]
3191 },
3192 "cond" : {
3193 "type" : "expression",
3194 "value" : {
3195 "op" : "and",
3196 "left" : {
3197 "type" : "expression",
3198 "value" : {
3199 "op" : "!=",
3200 "left" : {
3201 "type" : "field",
3202 "value" : ["mpls", "$valid$"]
3203 },
3204 "right" : {
3205 "type" : "hexstr",
3206 "value" : "0x01"
3207 }
3208 }
3209 },
3210 "right" : {
3211 "type" : "expression",
3212 "value" : {
3213 "op" : "==",
3214 "left" : {
3215 "type" : "field",
3216 "value" : ["ipv4", "$valid$"]
3217 },
3218 "right" : {
3219 "type" : "hexstr",
3220 "value" : "0x01"
3221 }
3222 }
3223 }
3224 }
3225 }
3226 }
3227 }
3228 }
3229 ],
3230 "source_info" : {
3231 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003232 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07003233 "column" : 16,
3234 "source_fragment" : "hdr.ipv4.ttl ="
3235 }
3236 },
3237 {
3238 "op" : "assign",
3239 "parameters" : [
3240 {
3241 "type" : "field",
3242 "value" : ["ipv6", "hop_limit"]
3243 },
3244 {
3245 "type" : "expression",
3246 "value" : {
3247 "type" : "expression",
3248 "value" : {
3249 "op" : "?",
3250 "left" : {
3251 "type" : "expression",
3252 "value" : {
3253 "op" : "&",
3254 "left" : {
3255 "type" : "expression",
3256 "value" : {
3257 "op" : "+",
3258 "left" : {
3259 "type" : "field",
3260 "value" : ["ipv6", "hop_limit"]
3261 },
3262 "right" : {
3263 "type" : "hexstr",
3264 "value" : "0xff"
3265 }
3266 }
3267 },
3268 "right" : {
3269 "type" : "hexstr",
3270 "value" : "0xff"
3271 }
3272 }
3273 },
3274 "right" : {
3275 "type" : "field",
3276 "value" : ["ipv6", "hop_limit"]
3277 },
3278 "cond" : {
3279 "type" : "expression",
3280 "value" : {
3281 "op" : "and",
3282 "left" : {
3283 "type" : "expression",
3284 "value" : {
3285 "op" : "and",
3286 "left" : {
3287 "type" : "expression",
3288 "value" : {
3289 "op" : "!=",
3290 "left" : {
3291 "type" : "field",
3292 "value" : ["mpls", "$valid$"]
3293 },
3294 "right" : {
3295 "type" : "hexstr",
3296 "value" : "0x01"
3297 }
3298 }
3299 },
3300 "right" : {
3301 "type" : "expression",
3302 "value" : {
3303 "op" : "not",
3304 "left" : null,
3305 "right" : {
3306 "type" : "expression",
3307 "value" : {
3308 "op" : "==",
3309 "left" : {
3310 "type" : "field",
3311 "value" : ["ipv4", "$valid$"]
3312 },
3313 "right" : {
3314 "type" : "hexstr",
3315 "value" : "0x01"
3316 }
3317 }
3318 }
3319 }
3320 }
3321 }
3322 },
3323 "right" : {
3324 "type" : "expression",
3325 "value" : {
3326 "op" : "==",
3327 "left" : {
3328 "type" : "field",
3329 "value" : ["ipv6", "$valid$"]
3330 },
3331 "right" : {
3332 "type" : "hexstr",
3333 "value" : "0x01"
3334 }
3335 }
3336 }
3337 }
3338 }
3339 }
3340 }
3341 }
3342 ],
3343 "source_info" : {
3344 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003345 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07003346 "column" : 16,
3347 "source_fragment" : "hdr.ipv6.hop_limit ="
3348 }
3349 }
3350 ]
3351 },
3352 {
3353 "name" : "next.set_mcast_group",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003354 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07003355 "runtime_data" : [
3356 {
3357 "name" : "gid",
3358 "bitwidth" : 16
3359 },
3360 {
3361 "name" : "smac",
3362 "bitwidth" : 48
3363 }
3364 ],
3365 "primitives" : [
3366 {
3367 "op" : "assign",
3368 "parameters" : [
3369 {
3370 "type" : "field",
3371 "value" : ["standard_metadata", "mcast_grp"]
3372 },
3373 {
3374 "type" : "runtime_data",
3375 "value" : 0
3376 }
3377 ],
3378 "source_info" : {
3379 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003380 "line" : 67,
Yi Tsengbe342052017-11-03 10:21:23 -07003381 "column" : 8,
3382 "source_fragment" : "standard_metadata.mcast_grp = gid"
3383 }
3384 },
3385 {
3386 "op" : "assign",
3387 "parameters" : [
3388 {
3389 "type" : "field",
3390 "value" : ["ethernet", "src_addr"]
3391 },
3392 {
3393 "type" : "runtime_data",
3394 "value" : 1
3395 }
3396 ],
3397 "source_info" : {
3398 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003399 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07003400 "column" : 8,
3401 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3402 }
3403 }
3404 ]
3405 },
3406 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08003407 "name" : "next.mpls_routing_v4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003408 "id" : 29,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003409 "runtime_data" : [
3410 {
3411 "name" : "port_num",
3412 "bitwidth" : 9
3413 },
3414 {
3415 "name" : "smac",
3416 "bitwidth" : 48
3417 },
3418 {
3419 "name" : "dmac",
3420 "bitwidth" : 48
3421 },
3422 {
3423 "name" : "label",
3424 "bitwidth" : 20
3425 }
3426 ],
3427 "primitives" : [
3428 {
3429 "op" : "assign",
3430 "parameters" : [
3431 {
3432 "type" : "field",
3433 "value" : ["ethernet", "src_addr"]
3434 },
3435 {
3436 "type" : "runtime_data",
3437 "value" : 1
3438 }
3439 ],
3440 "source_info" : {
3441 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003442 "line" : 53,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003443 "column" : 8,
3444 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3445 }
3446 },
3447 {
3448 "op" : "assign",
3449 "parameters" : [
3450 {
3451 "type" : "field",
3452 "value" : ["ethernet", "dst_addr"]
3453 },
3454 {
3455 "type" : "runtime_data",
3456 "value" : 2
3457 }
3458 ],
3459 "source_info" : {
3460 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003461 "line" : 57,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003462 "column" : 8,
3463 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3464 }
3465 },
3466 {
3467 "op" : "assign",
3468 "parameters" : [
3469 {
3470 "type" : "field",
3471 "value" : ["standard_metadata", "egress_spec"]
3472 },
3473 {
3474 "type" : "runtime_data",
3475 "value" : 0
3476 }
3477 ],
3478 "source_info" : {
3479 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003480 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003481 "column" : 8,
3482 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3483 }
3484 },
3485 {
3486 "op" : "assign",
3487 "parameters" : [
3488 {
3489 "type" : "field",
3490 "value" : ["ipv4", "ttl"]
3491 },
3492 {
3493 "type" : "expression",
3494 "value" : {
3495 "type" : "expression",
3496 "value" : {
3497 "op" : "?",
3498 "left" : {
3499 "type" : "expression",
3500 "value" : {
3501 "op" : "&",
3502 "left" : {
3503 "type" : "expression",
3504 "value" : {
3505 "op" : "+",
3506 "left" : {
3507 "type" : "field",
3508 "value" : ["ipv4", "ttl"]
3509 },
3510 "right" : {
3511 "type" : "hexstr",
3512 "value" : "0xff"
3513 }
3514 }
3515 },
3516 "right" : {
3517 "type" : "hexstr",
3518 "value" : "0xff"
3519 }
3520 }
3521 },
3522 "right" : {
3523 "type" : "field",
3524 "value" : ["ipv4", "ttl"]
3525 },
3526 "cond" : {
3527 "type" : "expression",
3528 "value" : {
3529 "op" : "and",
3530 "left" : {
3531 "type" : "expression",
3532 "value" : {
3533 "op" : "!=",
3534 "left" : {
3535 "type" : "field",
3536 "value" : ["mpls", "$valid$"]
3537 },
3538 "right" : {
3539 "type" : "hexstr",
3540 "value" : "0x01"
3541 }
3542 }
3543 },
3544 "right" : {
3545 "type" : "expression",
3546 "value" : {
3547 "op" : "==",
3548 "left" : {
3549 "type" : "field",
3550 "value" : ["ipv4", "$valid$"]
3551 },
3552 "right" : {
3553 "type" : "hexstr",
3554 "value" : "0x01"
3555 }
3556 }
3557 }
3558 }
3559 }
3560 }
3561 }
3562 }
3563 ],
3564 "source_info" : {
3565 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003566 "line" : 36,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003567 "column" : 16,
3568 "source_fragment" : "hdr.ipv4.ttl ="
3569 }
3570 },
3571 {
3572 "op" : "assign",
3573 "parameters" : [
3574 {
3575 "type" : "field",
3576 "value" : ["ipv6", "hop_limit"]
3577 },
3578 {
3579 "type" : "expression",
3580 "value" : {
3581 "type" : "expression",
3582 "value" : {
3583 "op" : "?",
3584 "left" : {
3585 "type" : "expression",
3586 "value" : {
3587 "op" : "&",
3588 "left" : {
3589 "type" : "expression",
3590 "value" : {
3591 "op" : "+",
3592 "left" : {
3593 "type" : "field",
3594 "value" : ["ipv6", "hop_limit"]
3595 },
3596 "right" : {
3597 "type" : "hexstr",
3598 "value" : "0xff"
3599 }
3600 }
3601 },
3602 "right" : {
3603 "type" : "hexstr",
3604 "value" : "0xff"
3605 }
3606 }
3607 },
3608 "right" : {
3609 "type" : "field",
3610 "value" : ["ipv6", "hop_limit"]
3611 },
3612 "cond" : {
3613 "type" : "expression",
3614 "value" : {
3615 "op" : "and",
3616 "left" : {
3617 "type" : "expression",
3618 "value" : {
3619 "op" : "and",
3620 "left" : {
3621 "type" : "expression",
3622 "value" : {
3623 "op" : "!=",
3624 "left" : {
3625 "type" : "field",
3626 "value" : ["mpls", "$valid$"]
3627 },
3628 "right" : {
3629 "type" : "hexstr",
3630 "value" : "0x01"
3631 }
3632 }
3633 },
3634 "right" : {
3635 "type" : "expression",
3636 "value" : {
3637 "op" : "not",
3638 "left" : null,
3639 "right" : {
3640 "type" : "expression",
3641 "value" : {
3642 "op" : "==",
3643 "left" : {
3644 "type" : "field",
3645 "value" : ["ipv4", "$valid$"]
3646 },
3647 "right" : {
3648 "type" : "hexstr",
3649 "value" : "0x01"
3650 }
3651 }
3652 }
3653 }
3654 }
3655 }
3656 },
3657 "right" : {
3658 "type" : "expression",
3659 "value" : {
3660 "op" : "==",
3661 "left" : {
3662 "type" : "field",
3663 "value" : ["ipv6", "$valid$"]
3664 },
3665 "right" : {
3666 "type" : "hexstr",
3667 "value" : "0x01"
3668 }
3669 }
3670 }
3671 }
3672 }
3673 }
3674 }
3675 }
3676 ],
3677 "source_info" : {
3678 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003679 "line" : 39,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003680 "column" : 16,
3681 "source_fragment" : "hdr.ipv6.hop_limit ="
3682 }
3683 },
3684 {
3685 "op" : "add_header",
3686 "parameters" : [
3687 {
3688 "type" : "header",
3689 "value" : "mpls"
3690 }
3691 ],
3692 "source_info" : {
3693 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003694 "line" : 73,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003695 "column" : 8,
3696 "source_fragment" : "hdr.mpls.setValid()"
3697 }
3698 },
3699 {
3700 "op" : "assign",
3701 "parameters" : [
3702 {
3703 "type" : "field",
3704 "value" : ["ethernet", "ether_type"]
3705 },
3706 {
3707 "type" : "hexstr",
3708 "value" : "0x8847"
3709 }
3710 ],
3711 "source_info" : {
3712 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003713 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003714 "column" : 31,
3715 "source_fragment" : "0x8847; ..."
3716 }
3717 },
3718 {
3719 "op" : "assign",
3720 "parameters" : [
3721 {
3722 "type" : "field",
3723 "value" : ["mpls", "label"]
3724 },
3725 {
3726 "type" : "runtime_data",
3727 "value" : 3
3728 }
3729 ],
3730 "source_info" : {
3731 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003732 "line" : 75,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003733 "column" : 8,
3734 "source_fragment" : "hdr.mpls.label = label; ..."
3735 }
3736 },
3737 {
3738 "op" : "assign",
3739 "parameters" : [
3740 {
3741 "type" : "field",
3742 "value" : ["mpls", "tc"]
3743 },
3744 {
3745 "type" : "expression",
3746 "value" : {
3747 "type" : "expression",
3748 "value" : {
3749 "op" : "&",
3750 "left" : {
3751 "type" : "expression",
3752 "value" : {
3753 "op" : "&",
3754 "left" : {
3755 "type" : "expression",
3756 "value" : {
3757 "op" : ">>",
3758 "left" : {
3759 "type" : "field",
3760 "value" : ["ipv4", "diffserv"]
3761 },
3762 "right" : {
3763 "type" : "hexstr",
3764 "value" : "0x5"
3765 }
3766 }
3767 },
3768 "right" : {
3769 "type" : "hexstr",
3770 "value" : "0xff"
3771 }
3772 }
3773 },
3774 "right" : {
3775 "type" : "hexstr",
3776 "value" : "0x07"
3777 }
3778 }
3779 }
3780 }
3781 ],
3782 "source_info" : {
3783 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003784 "line" : 76,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003785 "column" : 8,
3786 "source_fragment" : "hdr.mpls.tc = tc; ..."
3787 }
3788 },
3789 {
3790 "op" : "assign",
3791 "parameters" : [
3792 {
3793 "type" : "field",
3794 "value" : ["mpls", "bos"]
3795 },
3796 {
3797 "type" : "hexstr",
3798 "value" : "0x01"
3799 }
3800 ],
3801 "source_info" : {
3802 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003803 "line" : 77,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003804 "column" : 8,
3805 "source_fragment" : "hdr.mpls.bos = 1"
3806 }
3807 },
3808 {
3809 "op" : "assign",
3810 "parameters" : [
3811 {
3812 "type" : "field",
3813 "value" : ["mpls", "ttl"]
3814 },
3815 {
3816 "type" : "hexstr",
3817 "value" : "0x40"
3818 }
3819 ],
3820 "source_info" : {
3821 "filename" : "./include/control/../header.p4",
3822 "line" : 19,
3823 "column" : 32,
3824 "source_fragment" : "64; ..."
3825 }
3826 }
3827 ]
3828 },
3829 {
3830 "name" : "next.mpls_routing_v6",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003831 "id" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003832 "runtime_data" : [
3833 {
3834 "name" : "port_num",
3835 "bitwidth" : 9
3836 },
3837 {
3838 "name" : "smac",
3839 "bitwidth" : 48
3840 },
3841 {
3842 "name" : "dmac",
3843 "bitwidth" : 48
3844 },
3845 {
3846 "name" : "label",
3847 "bitwidth" : 20
3848 }
3849 ],
3850 "primitives" : [
3851 {
3852 "op" : "assign",
3853 "parameters" : [
3854 {
3855 "type" : "field",
3856 "value" : ["ethernet", "src_addr"]
3857 },
3858 {
3859 "type" : "runtime_data",
3860 "value" : 1
3861 }
3862 ],
3863 "source_info" : {
3864 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003865 "line" : 53,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003866 "column" : 8,
3867 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
3868 }
3869 },
3870 {
3871 "op" : "assign",
3872 "parameters" : [
3873 {
3874 "type" : "field",
3875 "value" : ["ethernet", "dst_addr"]
3876 },
3877 {
3878 "type" : "runtime_data",
3879 "value" : 2
3880 }
3881 ],
3882 "source_info" : {
3883 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003884 "line" : 57,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003885 "column" : 8,
3886 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
3887 }
3888 },
3889 {
3890 "op" : "assign",
3891 "parameters" : [
3892 {
3893 "type" : "field",
3894 "value" : ["standard_metadata", "egress_spec"]
3895 },
3896 {
3897 "type" : "runtime_data",
3898 "value" : 0
3899 }
3900 ],
3901 "source_info" : {
3902 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003903 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003904 "column" : 8,
3905 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
3906 }
3907 },
3908 {
3909 "op" : "assign",
3910 "parameters" : [
3911 {
3912 "type" : "field",
3913 "value" : ["ipv4", "ttl"]
3914 },
3915 {
3916 "type" : "expression",
3917 "value" : {
3918 "type" : "expression",
3919 "value" : {
3920 "op" : "?",
3921 "left" : {
3922 "type" : "expression",
3923 "value" : {
3924 "op" : "&",
3925 "left" : {
3926 "type" : "expression",
3927 "value" : {
3928 "op" : "+",
3929 "left" : {
3930 "type" : "field",
3931 "value" : ["ipv4", "ttl"]
3932 },
3933 "right" : {
3934 "type" : "hexstr",
3935 "value" : "0xff"
3936 }
3937 }
3938 },
3939 "right" : {
3940 "type" : "hexstr",
3941 "value" : "0xff"
3942 }
3943 }
3944 },
3945 "right" : {
3946 "type" : "field",
3947 "value" : ["ipv4", "ttl"]
3948 },
3949 "cond" : {
3950 "type" : "expression",
3951 "value" : {
3952 "op" : "and",
3953 "left" : {
3954 "type" : "expression",
3955 "value" : {
3956 "op" : "!=",
3957 "left" : {
3958 "type" : "field",
3959 "value" : ["mpls", "$valid$"]
3960 },
3961 "right" : {
3962 "type" : "hexstr",
3963 "value" : "0x01"
3964 }
3965 }
3966 },
3967 "right" : {
3968 "type" : "expression",
3969 "value" : {
3970 "op" : "==",
3971 "left" : {
3972 "type" : "field",
3973 "value" : ["ipv4", "$valid$"]
3974 },
3975 "right" : {
3976 "type" : "hexstr",
3977 "value" : "0x01"
3978 }
3979 }
3980 }
3981 }
3982 }
3983 }
3984 }
3985 }
3986 ],
3987 "source_info" : {
3988 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003989 "line" : 36,
Yi Tseng1b154bd2017-11-20 17:48:19 -08003990 "column" : 16,
3991 "source_fragment" : "hdr.ipv4.ttl ="
3992 }
3993 },
3994 {
3995 "op" : "assign",
3996 "parameters" : [
3997 {
3998 "type" : "field",
3999 "value" : ["ipv6", "hop_limit"]
4000 },
4001 {
4002 "type" : "expression",
4003 "value" : {
4004 "type" : "expression",
4005 "value" : {
4006 "op" : "?",
4007 "left" : {
4008 "type" : "expression",
4009 "value" : {
4010 "op" : "&",
4011 "left" : {
4012 "type" : "expression",
4013 "value" : {
4014 "op" : "+",
4015 "left" : {
4016 "type" : "field",
4017 "value" : ["ipv6", "hop_limit"]
4018 },
4019 "right" : {
4020 "type" : "hexstr",
4021 "value" : "0xff"
4022 }
4023 }
4024 },
4025 "right" : {
4026 "type" : "hexstr",
4027 "value" : "0xff"
4028 }
4029 }
4030 },
4031 "right" : {
4032 "type" : "field",
4033 "value" : ["ipv6", "hop_limit"]
4034 },
4035 "cond" : {
4036 "type" : "expression",
4037 "value" : {
4038 "op" : "and",
4039 "left" : {
4040 "type" : "expression",
4041 "value" : {
4042 "op" : "and",
4043 "left" : {
4044 "type" : "expression",
4045 "value" : {
4046 "op" : "!=",
4047 "left" : {
4048 "type" : "field",
4049 "value" : ["mpls", "$valid$"]
4050 },
4051 "right" : {
4052 "type" : "hexstr",
4053 "value" : "0x01"
4054 }
4055 }
4056 },
4057 "right" : {
4058 "type" : "expression",
4059 "value" : {
4060 "op" : "not",
4061 "left" : null,
4062 "right" : {
4063 "type" : "expression",
4064 "value" : {
4065 "op" : "==",
4066 "left" : {
4067 "type" : "field",
4068 "value" : ["ipv4", "$valid$"]
4069 },
4070 "right" : {
4071 "type" : "hexstr",
4072 "value" : "0x01"
4073 }
4074 }
4075 }
4076 }
4077 }
4078 }
4079 },
4080 "right" : {
4081 "type" : "expression",
4082 "value" : {
4083 "op" : "==",
4084 "left" : {
4085 "type" : "field",
4086 "value" : ["ipv6", "$valid$"]
4087 },
4088 "right" : {
4089 "type" : "hexstr",
4090 "value" : "0x01"
4091 }
4092 }
4093 }
4094 }
4095 }
4096 }
4097 }
4098 }
4099 ],
4100 "source_info" : {
4101 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004102 "line" : 39,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004103 "column" : 16,
4104 "source_fragment" : "hdr.ipv6.hop_limit ="
4105 }
4106 },
4107 {
4108 "op" : "add_header",
4109 "parameters" : [
4110 {
4111 "type" : "header",
4112 "value" : "mpls"
4113 }
4114 ],
4115 "source_info" : {
4116 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004117 "line" : 73,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004118 "column" : 8,
4119 "source_fragment" : "hdr.mpls.setValid()"
4120 }
4121 },
4122 {
4123 "op" : "assign",
4124 "parameters" : [
4125 {
4126 "type" : "field",
4127 "value" : ["ethernet", "ether_type"]
4128 },
4129 {
4130 "type" : "hexstr",
4131 "value" : "0x8847"
4132 }
4133 ],
4134 "source_info" : {
4135 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004136 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004137 "column" : 31,
4138 "source_fragment" : "0x8847; ..."
4139 }
4140 },
4141 {
4142 "op" : "assign",
4143 "parameters" : [
4144 {
4145 "type" : "field",
4146 "value" : ["mpls", "label"]
4147 },
4148 {
4149 "type" : "runtime_data",
4150 "value" : 3
4151 }
4152 ],
4153 "source_info" : {
4154 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004155 "line" : 75,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004156 "column" : 8,
4157 "source_fragment" : "hdr.mpls.label = label; ..."
4158 }
4159 },
4160 {
4161 "op" : "assign",
4162 "parameters" : [
4163 {
4164 "type" : "field",
4165 "value" : ["mpls", "tc"]
4166 },
4167 {
4168 "type" : "expression",
4169 "value" : {
4170 "type" : "expression",
4171 "value" : {
4172 "op" : "&",
4173 "left" : {
4174 "type" : "expression",
4175 "value" : {
4176 "op" : "&",
4177 "left" : {
4178 "type" : "expression",
4179 "value" : {
4180 "op" : ">>",
4181 "left" : {
4182 "type" : "field",
4183 "value" : ["ipv6", "traffic_class"]
4184 },
4185 "right" : {
4186 "type" : "hexstr",
4187 "value" : "0x5"
4188 }
4189 }
4190 },
4191 "right" : {
4192 "type" : "hexstr",
4193 "value" : "0xff"
4194 }
4195 }
4196 },
4197 "right" : {
4198 "type" : "hexstr",
4199 "value" : "0x07"
4200 }
4201 }
4202 }
4203 }
4204 ],
4205 "source_info" : {
4206 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004207 "line" : 76,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004208 "column" : 8,
4209 "source_fragment" : "hdr.mpls.tc = tc; ..."
4210 }
4211 },
4212 {
4213 "op" : "assign",
4214 "parameters" : [
4215 {
4216 "type" : "field",
4217 "value" : ["mpls", "bos"]
4218 },
4219 {
4220 "type" : "hexstr",
4221 "value" : "0x01"
4222 }
4223 ],
4224 "source_info" : {
4225 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004226 "line" : 77,
Yi Tseng1b154bd2017-11-20 17:48:19 -08004227 "column" : 8,
4228 "source_fragment" : "hdr.mpls.bos = 1"
4229 }
4230 },
4231 {
4232 "op" : "assign",
4233 "parameters" : [
4234 {
4235 "type" : "field",
4236 "value" : ["mpls", "ttl"]
4237 },
4238 {
4239 "type" : "hexstr",
4240 "value" : "0x40"
4241 }
4242 ],
4243 "source_info" : {
4244 "filename" : "./include/control/../header.p4",
4245 "line" : 19,
4246 "column" : 32,
4247 "source_fragment" : "64; ..."
4248 }
4249 }
4250 ]
4251 },
4252 {
Yi Tsengbe342052017-11-03 10:21:23 -07004253 "name" : "act",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004254 "id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07004255 "runtime_data" : [],
4256 "primitives" : [
4257 {
4258 "op" : "assign",
4259 "parameters" : [
4260 {
4261 "type" : "field",
4262 "value" : ["standard_metadata", "egress_spec"]
4263 },
4264 {
4265 "type" : "field",
4266 "value" : ["packet_out", "egress_port"]
4267 }
4268 ],
4269 "source_info" : {
4270 "filename" : "./include/control/packetio.p4",
4271 "line" : 26,
4272 "column" : 12,
4273 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
4274 }
4275 }
4276 ]
4277 },
4278 {
4279 "name" : "act_0",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004280 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07004281 "runtime_data" : [],
4282 "primitives" : [
4283 {
4284 "op" : "assign",
4285 "parameters" : [
4286 {
4287 "type" : "field",
4288 "value" : ["scalars", "tmp_1"]
4289 },
4290 {
4291 "type" : "expression",
4292 "value" : {
4293 "type" : "expression",
4294 "value" : {
4295 "op" : "&",
4296 "left" : {
4297 "type" : "field",
4298 "value" : ["standard_metadata", "egress_spec"]
4299 },
4300 "right" : {
4301 "type" : "hexstr",
4302 "value" : "0xffffffff"
4303 }
4304 }
4305 }
4306 }
4307 ]
4308 },
4309 {
4310 "op" : "count",
4311 "parameters" : [
4312 {
4313 "type" : "counter_array",
4314 "value" : "port_counters_control.egress_port_counter"
4315 },
4316 {
4317 "type" : "field",
4318 "value" : ["scalars", "tmp_1"]
4319 }
4320 ],
4321 "source_info" : {
4322 "filename" : "./include/control/port_counter.p4",
4323 "line" : 28,
4324 "column" : 12,
4325 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
4326 }
4327 }
4328 ]
4329 },
4330 {
4331 "name" : "act_1",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004332 "id" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07004333 "runtime_data" : [],
4334 "primitives" : [
4335 {
4336 "op" : "assign",
4337 "parameters" : [
4338 {
4339 "type" : "field",
4340 "value" : ["scalars", "tmp_2"]
4341 },
4342 {
4343 "type" : "expression",
4344 "value" : {
4345 "type" : "expression",
4346 "value" : {
4347 "op" : "&",
4348 "left" : {
4349 "type" : "field",
4350 "value" : ["standard_metadata", "ingress_port"]
4351 },
4352 "right" : {
4353 "type" : "hexstr",
4354 "value" : "0xffffffff"
4355 }
4356 }
4357 }
4358 }
4359 ]
4360 },
4361 {
4362 "op" : "count",
4363 "parameters" : [
4364 {
4365 "type" : "counter_array",
4366 "value" : "port_counters_control.ingress_port_counter"
4367 },
4368 {
4369 "type" : "field",
4370 "value" : ["scalars", "tmp_2"]
4371 }
4372 ],
4373 "source_info" : {
4374 "filename" : "./include/control/port_counter.p4",
4375 "line" : 31,
4376 "column" : 12,
4377 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
4378 }
4379 }
4380 ]
4381 },
4382 {
4383 "name" : "act_2",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004384 "id" : 34,
Yi Tsengbe342052017-11-03 10:21:23 -07004385 "runtime_data" : [],
4386 "primitives" : [
4387 {
4388 "op" : "remove_header",
4389 "parameters" : [
4390 {
4391 "type" : "header",
4392 "value" : "vlan_tag"
4393 }
4394 ],
4395 "source_info" : {
4396 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004397 "line" : 157,
Yi Tsengbe342052017-11-03 10:21:23 -07004398 "column" : 12,
4399 "source_fragment" : "hdr.vlan_tag.setInvalid()"
4400 }
4401 }
4402 ]
4403 },
4404 {
4405 "name" : "act_3",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004406 "id" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07004407 "runtime_data" : [],
4408 "primitives" : [
4409 {
4410 "op" : "add_header",
4411 "parameters" : [
4412 {
4413 "type" : "header",
4414 "value" : "packet_in"
4415 }
4416 ],
4417 "source_info" : {
4418 "filename" : "./include/control/packetio.p4",
4419 "line" : 39,
4420 "column" : 12,
4421 "source_fragment" : "hdr.packet_in.setValid()"
4422 }
4423 },
4424 {
4425 "op" : "assign",
4426 "parameters" : [
4427 {
4428 "type" : "field",
4429 "value" : ["packet_in", "ingress_port"]
4430 },
4431 {
4432 "type" : "field",
4433 "value" : ["standard_metadata", "ingress_port"]
4434 }
4435 ],
4436 "source_info" : {
4437 "filename" : "./include/control/packetio.p4",
4438 "line" : 40,
4439 "column" : 12,
4440 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
4441 }
4442 }
4443 ]
4444 },
4445 {
4446 "name" : "act_4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004447 "id" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07004448 "runtime_data" : [],
4449 "primitives" : [
4450 {
4451 "op" : "remove_header",
4452 "parameters" : [
4453 {
4454 "type" : "header",
4455 "value" : "packet_out"
4456 }
4457 ],
4458 "source_info" : {
4459 "filename" : "./include/control/packetio.p4",
4460 "line" : 37,
4461 "column" : 8,
4462 "source_fragment" : "hdr.packet_out.setInvalid()"
4463 }
4464 }
4465 ]
4466 }
4467 ],
4468 "pipelines" : [
4469 {
4470 "name" : "ingress",
4471 "id" : 0,
4472 "source_info" : {
4473 "filename" : "fabric.p4",
4474 "line" : 29,
4475 "column" : 8,
4476 "source_fragment" : "FabricIngress"
4477 },
4478 "init_table" : "node_2",
4479 "tables" : [
4480 {
4481 "name" : "tbl_act",
4482 "id" : 0,
4483 "key" : [],
4484 "match_type" : "exact",
4485 "type" : "simple",
4486 "max_size" : 1024,
4487 "with_counters" : false,
4488 "support_timeout" : false,
4489 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004490 "action_ids" : [31],
Yi Tsengbe342052017-11-03 10:21:23 -07004491 "actions" : ["act"],
4492 "base_default_next" : null,
4493 "next_tables" : {
4494 "act" : null
4495 },
4496 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08004497 "action_id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07004498 "action_const" : true,
4499 "action_data" : [],
4500 "action_entry_const" : true
4501 }
4502 },
4503 {
4504 "name" : "filtering.ingress_port_vlan",
4505 "id" : 1,
4506 "source_info" : {
4507 "filename" : "./include/control/filtering.p4",
4508 "line" : 53,
4509 "column" : 10,
4510 "source_fragment" : "ingress_port_vlan"
4511 },
4512 "key" : [
4513 {
4514 "match_type" : "exact",
4515 "target" : ["standard_metadata", "ingress_port"],
4516 "mask" : null
4517 },
4518 {
4519 "match_type" : "exact",
4520 "target" : ["vlan_tag", "$valid$"],
4521 "mask" : null
4522 },
4523 {
4524 "match_type" : "ternary",
4525 "target" : ["vlan_tag", "vlan_id"],
4526 "mask" : null
4527 }
4528 ],
4529 "match_type" : "ternary",
4530 "type" : "simple",
4531 "max_size" : 1024,
4532 "support_timeout" : false,
4533 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004534 "action_ids" : [14, 13, 0, 2],
Yi Tsengbe342052017-11-03 10:21:23 -07004535 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "drop"],
4536 "base_default_next" : "filtering.fwd_classifier",
4537 "next_tables" : {
4538 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
4539 "filtering.set_vlan" : "filtering.fwd_classifier",
4540 "nop" : "filtering.fwd_classifier",
4541 "drop" : "filtering.fwd_classifier"
4542 },
4543 "default_entry" : {
4544 "action_id" : 2,
4545 "action_const" : true,
4546 "action_data" : [],
4547 "action_entry_const" : true
4548 }
4549 },
4550 {
4551 "name" : "filtering.fwd_classifier",
4552 "id" : 2,
4553 "source_info" : {
4554 "filename" : "./include/control/filtering.p4",
4555 "line" : 71,
4556 "column" : 10,
4557 "source_fragment" : "fwd_classifier"
4558 },
4559 "key" : [
4560 {
4561 "match_type" : "exact",
4562 "target" : ["standard_metadata", "ingress_port"],
4563 "mask" : null
4564 },
4565 {
4566 "match_type" : "exact",
4567 "target" : ["ethernet", "dst_addr"],
4568 "mask" : null
4569 },
4570 {
4571 "match_type" : "exact",
4572 "target" : ["ethernet", "ether_type"],
4573 "mask" : null
4574 }
4575 ],
4576 "match_type" : "exact",
4577 "type" : "simple",
4578 "max_size" : 1024,
4579 "support_timeout" : false,
4580 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004581 "action_ids" : [15],
Yi Tsengbe342052017-11-03 10:21:23 -07004582 "actions" : ["filtering.set_forwarding_type"],
4583 "base_default_next" : "node_6",
4584 "next_tables" : {
4585 "filtering.set_forwarding_type" : "node_6"
4586 },
4587 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08004588 "action_id" : 15,
Yi Tsengbe342052017-11-03 10:21:23 -07004589 "action_const" : true,
4590 "action_data" : ["0x0"],
4591 "action_entry_const" : true
4592 }
4593 },
4594 {
4595 "name" : "forwarding.bridging",
4596 "id" : 3,
4597 "source_info" : {
4598 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004599 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -07004600 "column" : 10,
4601 "source_fragment" : "bridging"
4602 },
4603 "key" : [
4604 {
4605 "match_type" : "exact",
4606 "target" : ["vlan_tag", "vlan_id"],
4607 "mask" : null
4608 },
4609 {
4610 "match_type" : "ternary",
4611 "target" : ["ethernet", "dst_addr"],
4612 "mask" : null
4613 }
4614 ],
4615 "match_type" : "ternary",
4616 "type" : "simple",
4617 "max_size" : 1024,
4618 "support_timeout" : false,
4619 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004620 "action_ids" : [16, 4],
Yi Tsengbe342052017-11-03 10:21:23 -07004621 "actions" : ["forwarding.set_next_id", "NoAction"],
4622 "base_default_next" : "forwarding.acl",
4623 "next_tables" : {
4624 "forwarding.set_next_id" : "forwarding.acl",
4625 "NoAction" : "forwarding.acl"
4626 },
4627 "default_entry" : {
4628 "action_id" : 4,
4629 "action_const" : false,
4630 "action_data" : [],
4631 "action_entry_const" : false
4632 }
4633 },
4634 {
4635 "name" : "forwarding.mpls",
4636 "id" : 4,
4637 "source_info" : {
4638 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004639 "line" : 68,
Yi Tsengbe342052017-11-03 10:21:23 -07004640 "column" : 10,
4641 "source_fragment" : "mpls"
4642 },
4643 "key" : [
4644 {
4645 "match_type" : "exact",
4646 "target" : ["mpls", "label"],
4647 "mask" : null
4648 }
4649 ],
4650 "match_type" : "exact",
4651 "type" : "simple",
4652 "max_size" : 1024,
4653 "support_timeout" : false,
4654 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004655 "action_ids" : [22, 5],
Yi Tsengbe342052017-11-03 10:21:23 -07004656 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
4657 "base_default_next" : "forwarding.acl",
4658 "next_tables" : {
4659 "forwarding.pop_mpls_and_next" : "forwarding.acl",
4660 "NoAction" : "forwarding.acl"
4661 },
4662 "default_entry" : {
4663 "action_id" : 5,
4664 "action_const" : false,
4665 "action_data" : [],
4666 "action_entry_const" : false
4667 }
4668 },
4669 {
4670 "name" : "forwarding.unicast_v4",
4671 "id" : 5,
4672 "source_info" : {
4673 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004674 "line" : 79,
Yi Tsengbe342052017-11-03 10:21:23 -07004675 "column" : 10,
4676 "source_fragment" : "unicast_v4"
4677 },
4678 "key" : [
4679 {
4680 "match_type" : "lpm",
4681 "target" : ["ipv4", "dst_addr"],
4682 "mask" : null
4683 }
4684 ],
4685 "match_type" : "lpm",
4686 "type" : "simple",
4687 "max_size" : 1024,
4688 "support_timeout" : false,
4689 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004690 "action_ids" : [17, 6],
Yi Tseng1b154bd2017-11-20 17:48:19 -08004691 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07004692 "base_default_next" : "forwarding.acl",
4693 "next_tables" : {
4694 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07004695 "NoAction" : "forwarding.acl"
4696 },
4697 "default_entry" : {
4698 "action_id" : 6,
4699 "action_const" : false,
4700 "action_data" : [],
4701 "action_entry_const" : false
4702 }
4703 },
4704 {
4705 "name" : "forwarding.multicast_v4",
4706 "id" : 6,
4707 "source_info" : {
4708 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004709 "line" : 90,
Yi Tsengbe342052017-11-03 10:21:23 -07004710 "column" : 10,
4711 "source_fragment" : "multicast_v4"
4712 },
4713 "key" : [
4714 {
4715 "match_type" : "exact",
4716 "target" : ["vlan_tag", "vlan_id"],
4717 "mask" : null
4718 },
4719 {
4720 "match_type" : "lpm",
4721 "target" : ["ipv4", "dst_addr"],
4722 "mask" : null
4723 }
4724 ],
4725 "match_type" : "lpm",
4726 "type" : "simple",
4727 "max_size" : 1024,
4728 "support_timeout" : false,
4729 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004730 "action_ids" : [18, 7],
Yi Tsengbe342052017-11-03 10:21:23 -07004731 "actions" : ["forwarding.set_next_id", "NoAction"],
4732 "base_default_next" : "forwarding.acl",
4733 "next_tables" : {
4734 "forwarding.set_next_id" : "forwarding.acl",
4735 "NoAction" : "forwarding.acl"
4736 },
4737 "default_entry" : {
4738 "action_id" : 7,
4739 "action_const" : false,
4740 "action_data" : [],
4741 "action_entry_const" : false
4742 }
4743 },
4744 {
4745 "name" : "forwarding.unicast_v6",
4746 "id" : 7,
4747 "source_info" : {
4748 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004749 "line" : 102,
Yi Tsengbe342052017-11-03 10:21:23 -07004750 "column" : 10,
4751 "source_fragment" : "unicast_v6"
4752 },
4753 "key" : [
4754 {
4755 "match_type" : "lpm",
4756 "target" : ["ipv6", "dst_addr"],
4757 "mask" : null
4758 }
4759 ],
4760 "match_type" : "lpm",
4761 "type" : "simple",
4762 "max_size" : 1024,
4763 "support_timeout" : false,
4764 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004765 "action_ids" : [19, 8],
Yi Tseng1b154bd2017-11-20 17:48:19 -08004766 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07004767 "base_default_next" : "forwarding.acl",
4768 "next_tables" : {
4769 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07004770 "NoAction" : "forwarding.acl"
4771 },
4772 "default_entry" : {
4773 "action_id" : 8,
4774 "action_const" : false,
4775 "action_data" : [],
4776 "action_entry_const" : false
4777 }
4778 },
4779 {
4780 "name" : "forwarding.multicast_v6",
4781 "id" : 8,
4782 "source_info" : {
4783 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004784 "line" : 113,
Yi Tsengbe342052017-11-03 10:21:23 -07004785 "column" : 10,
4786 "source_fragment" : "multicast_v6"
4787 },
4788 "key" : [
4789 {
4790 "match_type" : "exact",
4791 "target" : ["vlan_tag", "vlan_id"],
4792 "mask" : null
4793 },
4794 {
4795 "match_type" : "lpm",
4796 "target" : ["ipv6", "dst_addr"],
4797 "mask" : null
4798 }
4799 ],
4800 "match_type" : "lpm",
4801 "type" : "simple",
4802 "max_size" : 1024,
4803 "support_timeout" : false,
4804 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004805 "action_ids" : [20, 9],
Yi Tsengbe342052017-11-03 10:21:23 -07004806 "actions" : ["forwarding.set_next_id", "NoAction"],
4807 "base_default_next" : "forwarding.acl",
4808 "next_tables" : {
4809 "forwarding.set_next_id" : "forwarding.acl",
4810 "NoAction" : "forwarding.acl"
4811 },
4812 "default_entry" : {
4813 "action_id" : 9,
4814 "action_const" : false,
4815 "action_data" : [],
4816 "action_entry_const" : false
4817 }
4818 },
4819 {
4820 "name" : "forwarding.acl",
4821 "id" : 9,
4822 "source_info" : {
4823 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004824 "line" : 125,
Yi Tsengbe342052017-11-03 10:21:23 -07004825 "column" : 10,
4826 "source_fragment" : "acl"
4827 },
4828 "key" : [
4829 {
4830 "match_type" : "ternary",
4831 "target" : ["standard_metadata", "ingress_port"],
4832 "mask" : null
4833 },
4834 {
4835 "match_type" : "ternary",
4836 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
4837 "mask" : null
4838 },
4839 {
4840 "match_type" : "ternary",
4841 "target" : ["ethernet", "dst_addr"],
4842 "mask" : null
4843 },
4844 {
4845 "match_type" : "ternary",
4846 "target" : ["ethernet", "src_addr"],
4847 "mask" : null
4848 },
4849 {
4850 "match_type" : "ternary",
4851 "target" : ["ethernet", "ether_type"],
4852 "mask" : null
4853 },
4854 {
4855 "match_type" : "ternary",
4856 "target" : ["vlan_tag", "vlan_id"],
4857 "mask" : null
4858 },
4859 {
4860 "match_type" : "ternary",
4861 "target" : ["vlan_tag", "pri"],
4862 "mask" : null
4863 },
4864 {
4865 "match_type" : "ternary",
4866 "target" : ["mpls", "tc"],
4867 "mask" : null
4868 },
4869 {
4870 "match_type" : "ternary",
4871 "target" : ["mpls", "bos"],
4872 "mask" : null
4873 },
4874 {
4875 "match_type" : "ternary",
4876 "target" : ["mpls", "label"],
4877 "mask" : null
4878 },
4879 {
4880 "match_type" : "ternary",
4881 "target" : ["ipv4", "src_addr"],
4882 "mask" : null
4883 },
4884 {
4885 "match_type" : "ternary",
4886 "target" : ["ipv4", "dst_addr"],
4887 "mask" : null
4888 },
4889 {
4890 "match_type" : "ternary",
4891 "target" : ["ipv4", "protocol"],
4892 "mask" : null
4893 },
4894 {
4895 "match_type" : "ternary",
4896 "target" : ["ipv6", "src_addr"],
4897 "mask" : null
4898 },
4899 {
4900 "match_type" : "ternary",
4901 "target" : ["ipv6", "dst_addr"],
4902 "mask" : null
4903 },
4904 {
4905 "match_type" : "ternary",
4906 "target" : ["ipv6", "next_hdr"],
4907 "mask" : null
4908 },
4909 {
4910 "match_type" : "ternary",
4911 "target" : ["tcp", "src_port"],
4912 "mask" : null
4913 },
4914 {
4915 "match_type" : "ternary",
4916 "target" : ["tcp", "dst_port"],
4917 "mask" : null
4918 },
4919 {
4920 "match_type" : "ternary",
4921 "target" : ["udp", "src_port"],
4922 "mask" : null
4923 },
4924 {
4925 "match_type" : "ternary",
4926 "target" : ["udp", "dst_port"],
4927 "mask" : null
4928 },
4929 {
4930 "match_type" : "ternary",
4931 "target" : ["icmp", "icmp_type"],
4932 "mask" : null
4933 },
4934 {
4935 "match_type" : "ternary",
4936 "target" : ["icmp", "icmp_code"],
4937 "mask" : null
4938 }
4939 ],
4940 "match_type" : "ternary",
4941 "type" : "simple",
4942 "max_size" : 1024,
4943 "support_timeout" : false,
4944 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004945 "action_ids" : [21, 23, 3, 1],
Yi Tsengbe342052017-11-03 10:21:23 -07004946 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "drop", "nop"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08004947 "base_default_next" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07004948 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08004949 "forwarding.set_next_id" : "next.simple",
4950 "forwarding.duplicate_to_controller" : "next.simple",
4951 "drop" : "next.simple",
4952 "nop" : "next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07004953 },
4954 "default_entry" : {
4955 "action_id" : 1,
4956 "action_const" : true,
4957 "action_data" : [],
4958 "action_entry_const" : true
4959 }
4960 },
4961 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08004962 "name" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07004963 "id" : 10,
4964 "source_info" : {
4965 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004966 "line" : 93,
Yi Tsengbe342052017-11-03 10:21:23 -07004967 "column" : 10,
4968 "source_fragment" : "simple"
4969 },
4970 "key" : [
4971 {
4972 "match_type" : "exact",
4973 "target" : ["scalars", "fabric_metadata_t.next_id"],
4974 "mask" : null
4975 }
4976 ],
4977 "match_type" : "exact",
4978 "type" : "simple",
4979 "max_size" : 1024,
4980 "support_timeout" : false,
4981 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004982 "action_ids" : [24, 25, 26, 10],
Yi Tsengbe342052017-11-03 10:21:23 -07004983 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08004984 "base_default_next" : "next.hashed",
Yi Tsengbe342052017-11-03 10:21:23 -07004985 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08004986 "next.output" : "next.hashed",
4987 "next.set_vlan_output" : "next.hashed",
4988 "next.l3_routing" : "next.hashed",
4989 "NoAction" : "next.hashed"
Yi Tsengbe342052017-11-03 10:21:23 -07004990 },
4991 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08004992 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07004993 "action_const" : false,
4994 "action_data" : [],
4995 "action_entry_const" : false
4996 }
4997 },
4998 {
4999 "name" : "next.hashed",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005000 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07005001 "source_info" : {
5002 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005003 "line" : 106,
Yi Tsengbe342052017-11-03 10:21:23 -07005004 "column" : 10,
5005 "source_fragment" : "hashed"
5006 },
5007 "key" : [
5008 {
5009 "match_type" : "exact",
5010 "target" : ["scalars", "fabric_metadata_t.next_id"],
5011 "mask" : null
5012 }
5013 ],
5014 "match_type" : "exact",
5015 "type" : "indirect_ws",
5016 "action_profile" : "next.ecmp_selector",
5017 "max_size" : 1024,
5018 "support_timeout" : false,
5019 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08005020 "action_ids" : [27, 29, 30, 11],
Yi Tseng1b154bd2017-11-20 17:48:19 -08005021 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08005022 "base_default_next" : "next.broadcast",
Yi Tsengbe342052017-11-03 10:21:23 -07005023 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005024 "next.l3_routing" : "next.broadcast",
5025 "next.mpls_routing_v4" : "next.broadcast",
5026 "next.mpls_routing_v6" : "next.broadcast",
5027 "NoAction" : "next.broadcast"
Yi Tsengbe342052017-11-03 10:21:23 -07005028 }
5029 },
5030 {
5031 "name" : "next.broadcast",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005032 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07005033 "source_info" : {
5034 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005035 "line" : 132,
Yi Tsengbe342052017-11-03 10:21:23 -07005036 "column" : 10,
5037 "source_fragment" : "broadcast"
5038 },
5039 "key" : [
5040 {
5041 "match_type" : "exact",
5042 "target" : ["scalars", "fabric_metadata_t.next_id"],
5043 "mask" : null
5044 }
5045 ],
5046 "match_type" : "exact",
5047 "type" : "simple",
5048 "max_size" : 1024,
5049 "support_timeout" : false,
5050 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08005051 "action_ids" : [28, 12],
Yi Tsengbe342052017-11-03 10:21:23 -07005052 "actions" : ["next.set_mcast_group", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08005053 "base_default_next" : "node_22",
Yi Tsengbe342052017-11-03 10:21:23 -07005054 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005055 "next.set_mcast_group" : "node_22",
5056 "NoAction" : "node_22"
Yi Tsengbe342052017-11-03 10:21:23 -07005057 },
5058 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005059 "action_id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07005060 "action_const" : false,
5061 "action_data" : [],
5062 "action_entry_const" : false
5063 }
5064 },
5065 {
5066 "name" : "tbl_act_0",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005067 "id" : 13,
5068 "key" : [],
5069 "match_type" : "exact",
5070 "type" : "simple",
5071 "max_size" : 1024,
5072 "with_counters" : false,
5073 "support_timeout" : false,
5074 "direct_meters" : null,
5075 "action_ids" : [32],
5076 "actions" : ["act_0"],
5077 "base_default_next" : "node_24",
5078 "next_tables" : {
5079 "act_0" : "node_24"
5080 },
5081 "default_entry" : {
5082 "action_id" : 32,
5083 "action_const" : true,
5084 "action_data" : [],
5085 "action_entry_const" : true
5086 }
5087 },
5088 {
5089 "name" : "tbl_act_1",
Yi Tsengbe342052017-11-03 10:21:23 -07005090 "id" : 14,
5091 "key" : [],
5092 "match_type" : "exact",
5093 "type" : "simple",
5094 "max_size" : 1024,
5095 "with_counters" : false,
5096 "support_timeout" : false,
5097 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08005098 "action_ids" : [33],
Yi Tsengbe342052017-11-03 10:21:23 -07005099 "actions" : ["act_1"],
5100 "base_default_next" : null,
5101 "next_tables" : {
5102 "act_1" : null
5103 },
5104 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005105 "action_id" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07005106 "action_const" : true,
5107 "action_data" : [],
5108 "action_entry_const" : true
5109 }
5110 }
5111 ],
5112 "action_profiles" : [
5113 {
5114 "name" : "next.ecmp_selector",
5115 "id" : 0,
5116 "max_size" : 64,
5117 "selector" : {
5118 "algo" : "crc16",
5119 "input" : [
5120 {
5121 "type" : "field",
5122 "value" : ["ipv4", "src_addr"]
5123 },
5124 {
5125 "type" : "field",
5126 "value" : ["ipv4", "dst_addr"]
5127 },
5128 {
5129 "type" : "field",
5130 "value" : ["ipv4", "protocol"]
5131 },
5132 {
5133 "type" : "field",
5134 "value" : ["ipv6", "src_addr"]
5135 },
5136 {
5137 "type" : "field",
5138 "value" : ["ipv6", "dst_addr"]
5139 },
5140 {
5141 "type" : "field",
5142 "value" : ["ipv6", "next_hdr"]
5143 },
5144 {
5145 "type" : "field",
5146 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
5147 },
5148 {
5149 "type" : "field",
5150 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
5151 }
5152 ]
5153 }
5154 }
5155 ],
5156 "conditionals" : [
5157 {
5158 "name" : "node_2",
5159 "id" : 0,
5160 "source_info" : {
5161 "filename" : "./include/control/packetio.p4",
5162 "line" : 25,
5163 "column" : 12,
5164 "source_fragment" : "hdr.packet_out.isValid()"
5165 },
5166 "expression" : {
5167 "type" : "expression",
5168 "value" : {
5169 "op" : "==",
5170 "left" : {
5171 "type" : "field",
5172 "value" : ["packet_out", "$valid$"]
5173 },
5174 "right" : {
5175 "type" : "hexstr",
5176 "value" : "0x01"
5177 }
5178 }
5179 },
5180 "true_next" : "tbl_act",
5181 "false_next" : "filtering.ingress_port_vlan"
5182 },
5183 {
5184 "name" : "node_6",
5185 "id" : 1,
5186 "source_info" : {
5187 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005188 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -07005189 "column" : 11,
5190 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
5191 },
5192 "expression" : {
5193 "type" : "expression",
5194 "value" : {
5195 "op" : "==",
5196 "left" : {
5197 "type" : "field",
5198 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5199 },
5200 "right" : {
5201 "type" : "hexstr",
5202 "value" : "0x00"
5203 }
5204 }
5205 },
5206 "true_next" : "forwarding.bridging",
5207 "false_next" : "node_8"
5208 },
5209 {
5210 "name" : "node_8",
5211 "id" : 2,
5212 "source_info" : {
5213 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005214 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -07005215 "column" : 17,
5216 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
5217 },
5218 "expression" : {
5219 "type" : "expression",
5220 "value" : {
5221 "op" : "==",
5222 "left" : {
5223 "type" : "field",
5224 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5225 },
5226 "right" : {
5227 "type" : "hexstr",
5228 "value" : "0x01"
5229 }
5230 }
5231 },
5232 "true_next" : "forwarding.mpls",
5233 "false_next" : "node_10"
5234 },
5235 {
5236 "name" : "node_10",
5237 "id" : 3,
5238 "source_info" : {
5239 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005240 "line" : 165,
Yi Tsengbe342052017-11-03 10:21:23 -07005241 "column" : 17,
5242 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
5243 },
5244 "expression" : {
5245 "type" : "expression",
5246 "value" : {
5247 "op" : "==",
5248 "left" : {
5249 "type" : "field",
5250 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5251 },
5252 "right" : {
5253 "type" : "hexstr",
5254 "value" : "0x02"
5255 }
5256 }
5257 },
5258 "true_next" : "forwarding.unicast_v4",
5259 "false_next" : "node_12"
5260 },
5261 {
5262 "name" : "node_12",
5263 "id" : 4,
5264 "source_info" : {
5265 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005266 "line" : 166,
Yi Tsengbe342052017-11-03 10:21:23 -07005267 "column" : 17,
5268 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
5269 },
5270 "expression" : {
5271 "type" : "expression",
5272 "value" : {
5273 "op" : "==",
5274 "left" : {
5275 "type" : "field",
5276 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5277 },
5278 "right" : {
5279 "type" : "hexstr",
5280 "value" : "0x03"
5281 }
5282 }
5283 },
5284 "true_next" : "forwarding.multicast_v4",
5285 "false_next" : "node_14"
5286 },
5287 {
5288 "name" : "node_14",
5289 "id" : 5,
5290 "source_info" : {
5291 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005292 "line" : 167,
Yi Tsengbe342052017-11-03 10:21:23 -07005293 "column" : 17,
5294 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
5295 },
5296 "expression" : {
5297 "type" : "expression",
5298 "value" : {
5299 "op" : "==",
5300 "left" : {
5301 "type" : "field",
5302 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5303 },
5304 "right" : {
5305 "type" : "hexstr",
5306 "value" : "0x04"
5307 }
5308 }
5309 },
5310 "true_next" : "forwarding.unicast_v6",
5311 "false_next" : "node_16"
5312 },
5313 {
5314 "name" : "node_16",
5315 "id" : 6,
5316 "source_info" : {
5317 "filename" : "./include/control/forwarding.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005318 "line" : 168,
Yi Tsengbe342052017-11-03 10:21:23 -07005319 "column" : 17,
5320 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
5321 },
5322 "expression" : {
5323 "type" : "expression",
5324 "value" : {
5325 "op" : "==",
5326 "left" : {
5327 "type" : "field",
5328 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
5329 },
5330 "right" : {
5331 "type" : "hexstr",
5332 "value" : "0x05"
5333 }
5334 }
5335 },
5336 "true_next" : "forwarding.multicast_v6",
5337 "false_next" : "forwarding.acl"
5338 },
5339 {
Yi Tsengbe342052017-11-03 10:21:23 -07005340 "name" : "node_22",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005341 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07005342 "source_info" : {
5343 "filename" : "./include/control/port_counter.p4",
5344 "line" : 27,
5345 "column" : 12,
5346 "source_fragment" : "standard_metadata.egress_spec < 511"
5347 },
5348 "expression" : {
5349 "type" : "expression",
5350 "value" : {
5351 "op" : "<",
5352 "left" : {
5353 "type" : "field",
5354 "value" : ["standard_metadata", "egress_spec"]
5355 },
5356 "right" : {
5357 "type" : "hexstr",
5358 "value" : "0x01ff"
5359 }
5360 }
5361 },
5362 "true_next" : "tbl_act_0",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005363 "false_next" : "node_24"
Yi Tsengbe342052017-11-03 10:21:23 -07005364 },
5365 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005366 "name" : "node_24",
5367 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07005368 "source_info" : {
5369 "filename" : "./include/control/port_counter.p4",
5370 "line" : 30,
5371 "column" : 12,
5372 "source_fragment" : "standard_metadata.ingress_port < 511"
5373 },
5374 "expression" : {
5375 "type" : "expression",
5376 "value" : {
5377 "op" : "<",
5378 "left" : {
5379 "type" : "field",
5380 "value" : ["standard_metadata", "ingress_port"]
5381 },
5382 "right" : {
5383 "type" : "hexstr",
5384 "value" : "0x01ff"
5385 }
5386 }
5387 },
5388 "false_next" : null,
5389 "true_next" : "tbl_act_1"
5390 }
5391 ]
5392 },
5393 {
5394 "name" : "egress",
5395 "id" : 1,
5396 "source_info" : {
5397 "filename" : "fabric.p4",
5398 "line" : 48,
5399 "column" : 8,
5400 "source_fragment" : "FabricEgress"
5401 },
Yi Tsengf55eaa82017-11-29 15:51:28 -08005402 "init_table" : "node_28",
Yi Tsengbe342052017-11-03 10:21:23 -07005403 "tables" : [
5404 {
5405 "name" : "tbl_act_2",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005406 "id" : 15,
5407 "key" : [],
5408 "match_type" : "exact",
5409 "type" : "simple",
5410 "max_size" : 1024,
5411 "with_counters" : false,
5412 "support_timeout" : false,
5413 "direct_meters" : null,
5414 "action_ids" : [34],
5415 "actions" : ["act_2"],
5416 "base_default_next" : "tbl_act_3",
5417 "next_tables" : {
5418 "act_2" : "tbl_act_3"
5419 },
5420 "default_entry" : {
5421 "action_id" : 34,
5422 "action_const" : true,
5423 "action_data" : [],
5424 "action_entry_const" : true
5425 }
5426 },
5427 {
5428 "name" : "tbl_act_3",
Yi Tsengbe342052017-11-03 10:21:23 -07005429 "id" : 16,
5430 "key" : [],
5431 "match_type" : "exact",
5432 "type" : "simple",
5433 "max_size" : 1024,
5434 "with_counters" : false,
5435 "support_timeout" : false,
5436 "direct_meters" : null,
5437 "action_ids" : [36],
Yi Tsengf55eaa82017-11-29 15:51:28 -08005438 "actions" : ["act_4"],
5439 "base_default_next" : "node_31",
Yi Tsengbe342052017-11-03 10:21:23 -07005440 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005441 "act_4" : "node_31"
Yi Tsengbe342052017-11-03 10:21:23 -07005442 },
5443 "default_entry" : {
5444 "action_id" : 36,
5445 "action_const" : true,
5446 "action_data" : [],
5447 "action_entry_const" : true
5448 }
5449 },
5450 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005451 "name" : "tbl_act_4",
Yi Tsengbe342052017-11-03 10:21:23 -07005452 "id" : 17,
5453 "key" : [],
5454 "match_type" : "exact",
5455 "type" : "simple",
5456 "max_size" : 1024,
5457 "with_counters" : false,
5458 "support_timeout" : false,
5459 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08005460 "action_ids" : [35],
Yi Tsengbe342052017-11-03 10:21:23 -07005461 "actions" : ["act_3"],
5462 "base_default_next" : null,
5463 "next_tables" : {
5464 "act_3" : null
5465 },
5466 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005467 "action_id" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07005468 "action_const" : true,
5469 "action_data" : [],
5470 "action_entry_const" : true
5471 }
5472 }
5473 ],
5474 "action_profiles" : [],
5475 "conditionals" : [
5476 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005477 "name" : "node_28",
5478 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07005479 "source_info" : {
5480 "filename" : "./include/control/next.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08005481 "line" : 156,
Yi Tsengbe342052017-11-03 10:21:23 -07005482 "column" : 12,
5483 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
5484 },
5485 "expression" : {
5486 "type" : "expression",
5487 "value" : {
5488 "op" : "d2b",
5489 "left" : null,
5490 "right" : {
5491 "type" : "field",
5492 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
5493 }
5494 }
5495 },
5496 "true_next" : "tbl_act_2",
5497 "false_next" : "tbl_act_3"
5498 },
5499 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08005500 "name" : "node_31",
5501 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07005502 "source_info" : {
5503 "filename" : "./include/control/packetio.p4",
5504 "line" : 38,
5505 "column" : 12,
5506 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
5507 },
5508 "expression" : {
5509 "type" : "expression",
5510 "value" : {
5511 "op" : "==",
5512 "left" : {
5513 "type" : "field",
5514 "value" : ["standard_metadata", "egress_port"]
5515 },
5516 "right" : {
5517 "type" : "hexstr",
5518 "value" : "0x00ff"
5519 }
5520 }
5521 },
5522 "false_next" : null,
5523 "true_next" : "tbl_act_4"
5524 }
5525 ]
5526 }
5527 ],
5528 "checksums" : [
5529 {
5530 "name" : "cksum",
5531 "id" : 0,
5532 "target" : ["ipv4", "hdr_checksum"],
5533 "type" : "generic",
5534 "calculation" : "calc"
5535 },
5536 {
5537 "name" : "cksum_0",
5538 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07005539 "target" : ["ipv4", "hdr_checksum"],
5540 "type" : "generic",
Yi Tsengf73a5532017-11-17 15:58:57 -08005541 "calculation" : "calc_0"
Yi Tsengbe342052017-11-03 10:21:23 -07005542 }
5543 ],
5544 "force_arith" : [],
5545 "extern_instances" : [],
5546 "field_aliases" : [
5547 [
5548 "queueing_metadata.enq_timestamp",
5549 ["standard_metadata", "enq_timestamp"]
5550 ],
5551 [
5552 "queueing_metadata.enq_qdepth",
5553 ["standard_metadata", "enq_qdepth"]
5554 ],
5555 [
5556 "queueing_metadata.deq_timedelta",
5557 ["standard_metadata", "deq_timedelta"]
5558 ],
5559 [
5560 "queueing_metadata.deq_qdepth",
5561 ["standard_metadata", "deq_qdepth"]
5562 ],
5563 [
5564 "intrinsic_metadata.ingress_global_timestamp",
5565 ["standard_metadata", "ingress_global_timestamp"]
5566 ],
5567 [
5568 "intrinsic_metadata.lf_field_list",
5569 ["standard_metadata", "lf_field_list"]
5570 ],
5571 [
5572 "intrinsic_metadata.mcast_grp",
5573 ["standard_metadata", "mcast_grp"]
5574 ],
5575 [
5576 "intrinsic_metadata.resubmit_flag",
5577 ["standard_metadata", "resubmit_flag"]
5578 ],
5579 [
5580 "intrinsic_metadata.egress_rid",
5581 ["standard_metadata", "egress_rid"]
5582 ]
5583 ]
5584}