blob: e53756f9ee3ee66182b588793d4feffc42166c9c [file] [log] [blame]
Carmelo Casconef1d0a422017-09-07 17:21:46 +02001{
2 "program" : "ecmp.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_0", 104, false],
13 ["tmp", 8, false],
14 ["tmp_1", 32, false],
15 ["tmp_2", 32, false]
16 ]
17 },
18 {
19 "name" : "ethernet_t",
20 "id" : 1,
21 "fields" : [
22 ["dstAddr", 48, false],
23 ["srcAddr", 48, false],
24 ["etherType", 16, false]
25 ]
26 },
27 {
28 "name" : "ipv4_t",
29 "id" : 2,
30 "fields" : [
31 ["version", 4, false],
32 ["ihl", 4, false],
33 ["diffserv", 8, false],
34 ["totalLen", 16, false],
35 ["identification", 16, false],
36 ["flags", 3, false],
37 ["fragOffset", 13, false],
38 ["ttl", 8, false],
39 ["protocol", 8, false],
40 ["hdrChecksum", 16, false],
41 ["srcAddr", 32, false],
42 ["dstAddr", 32, false]
43 ]
44 },
45 {
46 "name" : "packet_in_t",
47 "id" : 3,
48 "fields" : [
49 ["ingress_port", 9, false],
50 ["_padding", 7, false]
51 ]
52 },
53 {
54 "name" : "packet_out_t",
55 "id" : 4,
56 "fields" : [
57 ["egress_port", 9, false],
58 ["_padding_0", 7, false]
59 ]
60 },
61 {
62 "name" : "tcp_t",
63 "id" : 5,
64 "fields" : [
65 ["srcPort", 16, false],
66 ["dstPort", 16, false],
67 ["seqNo", 32, false],
68 ["ackNo", 32, false],
69 ["dataOffset", 4, false],
70 ["res", 3, false],
71 ["ecn", 3, false],
72 ["ctrl", 6, false],
73 ["window", 16, false],
74 ["checksum", 16, false],
75 ["urgentPtr", 16, false]
76 ]
77 },
78 {
79 "name" : "udp_t",
80 "id" : 6,
81 "fields" : [
82 ["srcPort", 16, false],
83 ["dstPort", 16, false],
84 ["length_", 16, false],
85 ["checksum", 16, false]
86 ]
87 },
88 {
89 "name" : "ecmp_metadata_t",
90 "id" : 7,
91 "fields" : [
92 ["groupId", 16, false],
93 ["selector", 16, false]
94 ]
95 },
96 {
97 "name" : "ig_intr_md",
98 "id" : 8,
99 "fields" : [
100 ["ingress_port", 9, false],
101 ["egress_spec", 9, false],
102 ["egress_port", 9, false],
103 ["clone_spec", 32, false],
104 ["instance_type", 32, false],
105 ["drop", 1, false],
106 ["recirculate_port", 16, false],
107 ["packet_length", 32, false],
108 ["enq_timestamp", 32, false],
109 ["enq_qdepth", 19, false],
110 ["deq_timedelta", 32, false],
111 ["deq_qdepth", 19, false],
112 ["ingress_global_timestamp", 48, false],
113 ["lf_field_list", 32, false],
114 ["mcast_grp", 16, false],
115 ["resubmit_flag", 1, false],
116 ["egress_rid", 16, false],
117 ["_padding_1", 5, false]
118 ]
119 }
120 ],
121 "headers" : [
122 {
123 "name" : "scalars",
124 "id" : 0,
125 "header_type" : "scalars_0",
126 "metadata" : true,
127 "pi_omit" : true
128 },
129 {
130 "name" : "ig_intr_md",
131 "id" : 1,
132 "header_type" : "ig_intr_md",
133 "metadata" : true,
134 "pi_omit" : true
135 },
136 {
137 "name" : "ethernet",
138 "id" : 2,
139 "header_type" : "ethernet_t",
140 "metadata" : false,
141 "pi_omit" : true
142 },
143 {
144 "name" : "ipv4",
145 "id" : 3,
146 "header_type" : "ipv4_t",
147 "metadata" : false,
148 "pi_omit" : true
149 },
150 {
151 "name" : "packet_in_hdr",
152 "id" : 4,
153 "header_type" : "packet_in_t",
154 "metadata" : false,
155 "pi_omit" : true
156 },
157 {
158 "name" : "packet_out_hdr",
159 "id" : 5,
160 "header_type" : "packet_out_t",
161 "metadata" : false,
162 "pi_omit" : true
163 },
164 {
165 "name" : "tcp",
166 "id" : 6,
167 "header_type" : "tcp_t",
168 "metadata" : false,
169 "pi_omit" : true
170 },
171 {
172 "name" : "udp",
173 "id" : 7,
174 "header_type" : "udp_t",
175 "metadata" : false,
176 "pi_omit" : true
177 },
178 {
179 "name" : "ecmp_metadata",
180 "id" : 8,
181 "header_type" : "ecmp_metadata_t",
182 "metadata" : true,
183 "pi_omit" : true
184 }
185 ],
186 "header_stacks" : [],
187 "header_union_types" : [],
188 "header_unions" : [],
189 "header_union_stacks" : [],
190 "field_lists" : [],
191 "errors" : [
192 ["NoError", 1],
193 ["PacketTooShort", 2],
194 ["NoMatch", 3],
195 ["StackOutOfBounds", 4],
196 ["HeaderTooShort", 5],
197 ["ParserTimeout", 6]
198 ],
199 "enums" : [],
200 "parsers" : [
201 {
202 "name" : "parser",
203 "id" : 0,
204 "init_state" : "start",
205 "parse_states" : [
206 {
207 "name" : "default_parser",
208 "id" : 0,
209 "parser_ops" : [],
210 "transitions" : [
211 {
212 "value" : "0xff",
213 "mask" : null,
214 "next_state" : "parse_pkt_out"
215 },
216 {
217 "value" : "default",
218 "mask" : null,
219 "next_state" : "parse_ethernet"
220 }
221 ],
222 "transition_key" : [
223 {
224 "type" : "field",
225 "value" : ["ig_intr_md", "ingress_port"]
226 }
227 ]
228 },
229 {
230 "name" : "parse_ethernet",
231 "id" : 1,
232 "parser_ops" : [
233 {
234 "parameters" : [
235 {
236 "type" : "regular",
237 "value" : "ethernet"
238 }
239 ],
240 "op" : "extract"
241 }
242 ],
243 "transitions" : [
244 {
245 "value" : "0x0800",
246 "mask" : null,
247 "next_state" : "parse_ipv4"
248 },
249 {
250 "value" : "default",
251 "mask" : null,
252 "next_state" : null
253 }
254 ],
255 "transition_key" : [
256 {
257 "type" : "field",
258 "value" : ["ethernet", "etherType"]
259 }
260 ]
261 },
262 {
263 "name" : "parse_ipv4",
264 "id" : 2,
265 "parser_ops" : [
266 {
267 "parameters" : [
268 {
269 "type" : "regular",
270 "value" : "ipv4"
271 }
272 ],
273 "op" : "extract"
274 }
275 ],
276 "transitions" : [
277 {
278 "value" : "0x000006",
279 "mask" : null,
280 "next_state" : "parse_tcp"
281 },
282 {
283 "value" : "0x000011",
284 "mask" : null,
285 "next_state" : "parse_udp"
286 },
287 {
288 "value" : "default",
289 "mask" : null,
290 "next_state" : null
291 }
292 ],
293 "transition_key" : [
294 {
295 "type" : "field",
296 "value" : ["ipv4", "fragOffset"]
297 },
298 {
299 "type" : "field",
300 "value" : ["ipv4", "protocol"]
301 }
302 ]
303 },
304 {
305 "name" : "parse_pkt_in",
306 "id" : 3,
307 "parser_ops" : [
308 {
309 "parameters" : [
310 {
311 "type" : "regular",
312 "value" : "packet_in_hdr"
313 }
314 ],
315 "op" : "extract"
316 }
317 ],
318 "transitions" : [
319 {
320 "value" : "default",
321 "mask" : null,
322 "next_state" : "parse_ethernet"
323 }
324 ],
325 "transition_key" : []
326 },
327 {
328 "name" : "parse_pkt_out",
329 "id" : 4,
330 "parser_ops" : [
331 {
332 "parameters" : [
333 {
334 "type" : "regular",
335 "value" : "packet_out_hdr"
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_tcp",
352 "id" : 5,
353 "parser_ops" : [
354 {
355 "parameters" : [
356 {
357 "type" : "regular",
358 "value" : "tcp"
359 }
360 ],
361 "op" : "extract"
362 }
363 ],
364 "transitions" : [
365 {
366 "value" : "default",
367 "mask" : null,
368 "next_state" : null
369 }
370 ],
371 "transition_key" : []
372 },
373 {
374 "name" : "parse_udp",
375 "id" : 6,
376 "parser_ops" : [
377 {
378 "parameters" : [
379 {
380 "type" : "regular",
381 "value" : "udp"
382 }
383 ],
384 "op" : "extract"
385 }
386 ],
387 "transitions" : [
388 {
389 "value" : "default",
390 "mask" : null,
391 "next_state" : null
392 }
393 ],
394 "transition_key" : []
395 },
396 {
397 "name" : "start",
398 "id" : 7,
399 "parser_ops" : [
400 {
401 "parameters" : [
402 {
403 "type" : "field",
404 "value" : ["scalars", "tmp_0"]
405 },
406 {
407 "type" : "lookahead",
408 "value" : [0, 104]
409 }
410 ],
411 "op" : "set"
412 },
413 {
414 "parameters" : [
415 {
416 "type" : "field",
417 "value" : ["scalars", "tmp"]
418 },
419 {
420 "type" : "expression",
421 "value" : {
422 "type" : "expression",
423 "value" : {
424 "op" : "&",
425 "left" : {
426 "type" : "field",
427 "value" : ["scalars", "tmp_0"]
428 },
429 "right" : {
430 "type" : "hexstr",
431 "value" : "0xff"
432 }
433 }
434 }
435 }
436 ],
437 "op" : "set"
438 }
439 ],
440 "transitions" : [
441 {
442 "value" : "0x00",
443 "mask" : null,
444 "next_state" : "parse_pkt_in"
445 },
446 {
447 "value" : "default",
448 "mask" : null,
449 "next_state" : "default_parser"
450 }
451 ],
452 "transition_key" : [
453 {
454 "type" : "field",
455 "value" : ["scalars", "tmp"]
456 }
457 ]
458 }
459 ]
460 }
461 ],
462 "deparsers" : [
463 {
464 "name" : "deparser",
465 "id" : 0,
466 "order" : ["packet_out_hdr", "packet_in_hdr", "ethernet", "ipv4", "udp", "tcp"]
467 }
468 ],
469 "meter_arrays" : [],
470 "counter_arrays" : [
471 {
472 "name" : "table0_counter",
473 "id" : 0,
474 "is_direct" : true,
475 "binding" : "table0"
476 },
477 {
478 "name" : "ecmp_group_table_counter",
479 "id" : 1,
480 "is_direct" : true,
481 "binding" : "ecmp_group_table"
482 },
483 {
484 "name" : "egress_port_counter",
485 "id" : 2,
486 "size" : 254,
487 "is_direct" : false
488 },
489 {
490 "name" : "ingress_port_counter",
491 "id" : 3,
492 "size" : 254,
493 "is_direct" : false
494 }
495 ],
496 "register_arrays" : [],
497 "calculations" : [
498 {
499 "name" : "calc",
500 "id" : 0,
501 "algo" : "crc32",
502 "input" : [
503 {
504 "type" : "field",
505 "value" : ["ipv4", "srcAddr"]
506 },
507 {
508 "type" : "field",
509 "value" : ["ipv4", "dstAddr"]
510 },
511 {
512 "type" : "field",
513 "value" : ["udp", "srcPort"]
514 },
515 {
516 "type" : "field",
517 "value" : ["udp", "dstPort"]
518 }
519 ]
520 }
521 ],
522 "learn_lists" : [],
523 "actions" : [
524 {
525 "name" : "add_packet_in_hdr",
526 "id" : 0,
527 "runtime_data" : [],
528 "primitives" : [
529 {
530 "op" : "add_header",
531 "parameters" : [
532 {
533 "type" : "header",
534 "value" : "packet_in_hdr"
535 }
536 ],
537 "source_info" : {
538 "filename" : "include/packet_io.p4",
539 "line" : 25,
540 "column" : 4,
541 "source_fragment" : "add_header(packet_in_hdr)"
542 }
543 },
544 {
545 "op" : "assign",
546 "parameters" : [
547 {
548 "type" : "field",
549 "value" : ["packet_in_hdr", "ingress_port"]
550 },
551 {
552 "type" : "field",
553 "value" : ["ig_intr_md", "ingress_port"]
554 }
555 ],
556 "source_info" : {
557 "filename" : "include/packet_io.p4",
558 "line" : 26,
559 "column" : 4,
560 "source_fragment" : "modify_field(packet_in_hdr.ingress_port, ig_intr_md.ingress_port)"
561 }
562 }
563 ]
564 },
565 {
566 "name" : "NoAction",
567 "id" : 1,
568 "runtime_data" : [],
569 "primitives" : []
570 },
571 {
572 "name" : "NoAction",
573 "id" : 2,
574 "runtime_data" : [],
575 "primitives" : []
576 },
577 {
578 "name" : "set_egress_port",
579 "id" : 3,
580 "runtime_data" : [
581 {
582 "name" : "port",
583 "bitwidth" : 9
584 }
585 ],
586 "primitives" : [
587 {
588 "op" : "assign",
589 "parameters" : [
590 {
591 "type" : "field",
592 "value" : ["ig_intr_md", "egress_spec"]
593 },
594 {
595 "type" : "runtime_data",
596 "value" : 0
597 }
598 ],
599 "source_info" : {
600 "filename" : "include/actions.p4",
601 "line" : 5,
602 "column" : 23,
603 "source_fragment" : "port) { ..."
604 }
605 }
606 ]
607 },
608 {
609 "name" : "set_egress_port",
610 "id" : 4,
611 "runtime_data" : [
612 {
613 "name" : "port",
614 "bitwidth" : 9
615 }
616 ],
617 "primitives" : [
618 {
619 "op" : "assign",
620 "parameters" : [
621 {
622 "type" : "field",
623 "value" : ["ig_intr_md", "egress_spec"]
624 },
625 {
626 "type" : "runtime_data",
627 "value" : 0
628 }
629 ],
630 "source_info" : {
631 "filename" : "include/actions.p4",
632 "line" : 5,
633 "column" : 23,
634 "source_fragment" : "port) { ..."
635 }
636 }
637 ]
638 },
639 {
640 "name" : "ecmp_group",
641 "id" : 5,
642 "runtime_data" : [
643 {
644 "name" : "groupId",
645 "bitwidth" : 16
646 }
647 ],
648 "primitives" : [
649 {
650 "op" : "assign",
651 "parameters" : [
652 {
653 "type" : "field",
654 "value" : ["ecmp_metadata", "groupId"]
655 },
656 {
657 "type" : "runtime_data",
658 "value" : 0
659 }
660 ],
661 "source_info" : {
662 "filename" : "ecmp.p4",
663 "line" : 39,
664 "column" : 18,
665 "source_fragment" : "groupId) { ..."
666 }
667 },
668 {
669 "op" : "modify_field_with_hash_based_offset",
670 "parameters" : [
671 {
672 "type" : "field",
673 "value" : ["ecmp_metadata", "selector"]
674 },
675 {
676 "type" : "hexstr",
677 "value" : "0x00000000"
678 },
679 {
680 "type" : "calculation",
681 "value" : "calc"
682 },
683 {
684 "type" : "hexstr",
685 "value" : "0x0000000000000002"
686 }
687 ],
688 "source_info" : {
689 "filename" : "ecmp.p4",
690 "line" : 41,
691 "column" : 4,
692 "source_fragment" : "modify_field_with_hash_based_offset(ecmp_metadata.selector, 0, ecmp_hash, 2)"
693 }
694 }
695 ]
696 },
697 {
698 "name" : "send_to_cpu",
699 "id" : 6,
700 "runtime_data" : [],
701 "primitives" : [
702 {
703 "op" : "assign",
704 "parameters" : [
705 {
706 "type" : "field",
707 "value" : ["ig_intr_md", "egress_spec"]
708 },
709 {
710 "type" : "hexstr",
711 "value" : "0x00ff"
712 }
713 ],
714 "source_info" : {
715 "filename" : "include/actions.p4",
716 "line" : 21,
717 "column" : 4,
718 "source_fragment" : "modify_field(ig_intr_md.egress_spec, 255)"
719 }
720 }
721 ]
722 },
723 {
724 "name" : "_drop",
725 "id" : 7,
726 "runtime_data" : [],
727 "primitives" : [
728 {
729 "op" : "assign",
730 "parameters" : [
731 {
732 "type" : "field",
733 "value" : ["ig_intr_md", "egress_spec"]
734 },
735 {
736 "type" : "hexstr",
737 "value" : "0x01ff"
738 }
739 ],
740 "source_info" : {
741 "filename" : "include/actions.p4",
742 "line" : 13,
743 "column" : 4,
744 "source_fragment" : "modify_field(ig_intr_md.egress_spec, 511)"
745 }
746 }
747 ]
748 },
749 {
750 "name" : "_packet_out",
751 "id" : 8,
752 "runtime_data" : [],
753 "primitives" : [
754 {
755 "op" : "assign",
756 "parameters" : [
757 {
758 "type" : "field",
759 "value" : ["ig_intr_md", "egress_spec"]
760 },
761 {
762 "type" : "field",
763 "value" : ["packet_out_hdr", "egress_port"]
764 }
765 ],
766 "source_info" : {
767 "filename" : "include/packet_io.p4",
768 "line" : 7,
769 "column" : 4,
770 "source_fragment" : "modify_field(ig_intr_md.egress_spec, packet_out_hdr.egress_port)"
771 }
772 },
773 {
774 "op" : "remove_header",
775 "parameters" : [
776 {
777 "type" : "header",
778 "value" : "packet_out_hdr"
779 }
780 ],
781 "source_info" : {
782 "filename" : "include/packet_io.p4",
783 "line" : 8,
784 "column" : 4,
785 "source_fragment" : "remove_header(packet_out_hdr)"
786 }
787 }
788 ]
789 },
790 {
791 "name" : "count_egress",
792 "id" : 9,
793 "runtime_data" : [],
794 "primitives" : [
795 {
796 "op" : "assign",
797 "parameters" : [
798 {
799 "type" : "field",
800 "value" : ["scalars", "tmp_1"]
801 },
802 {
803 "type" : "expression",
804 "value" : {
805 "type" : "expression",
806 "value" : {
807 "op" : "&",
808 "left" : {
809 "type" : "field",
810 "value" : ["ig_intr_md", "egress_spec"]
811 },
812 "right" : {
813 "type" : "hexstr",
814 "value" : "0xffffffff"
815 }
816 }
817 }
818 }
819 ]
820 },
821 {
822 "op" : "count",
823 "parameters" : [
824 {
825 "type" : "counter_array",
826 "value" : "egress_port_counter"
827 },
828 {
829 "type" : "field",
830 "value" : ["scalars", "tmp_1"]
831 }
832 ],
833 "source_info" : {
834 "filename" : "include/port_counters.p4",
835 "line" : 22,
836 "column" : 4,
837 "source_fragment" : "count(egress_port_counter, ig_intr_md.egress_spec)"
838 }
839 }
840 ]
841 },
842 {
843 "name" : "count_ingress",
844 "id" : 10,
845 "runtime_data" : [],
846 "primitives" : [
847 {
848 "op" : "assign",
849 "parameters" : [
850 {
851 "type" : "field",
852 "value" : ["scalars", "tmp_2"]
853 },
854 {
855 "type" : "expression",
856 "value" : {
857 "type" : "expression",
858 "value" : {
859 "op" : "&",
860 "left" : {
861 "type" : "field",
862 "value" : ["ig_intr_md", "ingress_port"]
863 },
864 "right" : {
865 "type" : "hexstr",
866 "value" : "0xffffffff"
867 }
868 }
869 }
870 }
871 ]
872 },
873 {
874 "op" : "count",
875 "parameters" : [
876 {
877 "type" : "counter_array",
878 "value" : "ingress_port_counter"
879 },
880 {
881 "type" : "field",
882 "value" : ["scalars", "tmp_2"]
883 }
884 ],
885 "source_info" : {
886 "filename" : "include/port_counters.p4",
887 "line" : 18,
888 "column" : 4,
889 "source_fragment" : "count(ingress_port_counter, ig_intr_md.ingress_port)"
890 }
891 }
892 ]
893 }
894 ],
895 "pipelines" : [
896 {
897 "name" : "ingress",
898 "id" : 0,
899 "init_table" : "node_2",
900 "tables" : [
901 {
902 "name" : "ingress_pkt",
903 "id" : 0,
904 "source_info" : {
905 "filename" : "include/packet_io.p4",
906 "line" : 11,
907 "column" : 0,
908 "source_fragment" : "table ingress_pkt { ..."
909 },
910 "key" : [],
911 "match_type" : "exact",
912 "type" : "simple",
913 "max_size" : 1024,
914 "with_counters" : false,
915 "support_timeout" : false,
916 "direct_meters" : null,
917 "action_ids" : [8],
918 "actions" : ["_packet_out"],
919 "base_default_next" : "node_4",
920 "next_tables" : {
921 "_packet_out" : "node_4"
922 },
923 "default_entry" : {
924 "action_id" : 8,
925 "action_const" : false,
926 "action_data" : [],
927 "action_entry_const" : false
928 }
929 },
930 {
931 "name" : "table0",
932 "id" : 1,
933 "source_info" : {
934 "filename" : "ecmp.p4",
935 "line" : 47,
936 "column" : 0,
937 "source_fragment" : "table table0 { ..."
938 },
939 "key" : [
940 {
941 "match_type" : "ternary",
942 "target" : ["ig_intr_md", "ingress_port"],
943 "mask" : null
944 },
945 {
946 "match_type" : "ternary",
947 "target" : ["ethernet", "dstAddr"],
948 "mask" : null
949 },
950 {
951 "match_type" : "ternary",
952 "target" : ["ethernet", "srcAddr"],
953 "mask" : null
954 },
955 {
956 "match_type" : "ternary",
957 "target" : ["ethernet", "etherType"],
958 "mask" : null
959 }
960 ],
961 "match_type" : "ternary",
962 "type" : "simple",
963 "max_size" : 1024,
964 "with_counters" : true,
965 "support_timeout" : false,
966 "direct_meters" : null,
967 "action_ids" : [4, 5, 6, 7, 2],
968 "actions" : ["set_egress_port", "ecmp_group", "send_to_cpu", "_drop", "NoAction"],
969 "base_default_next" : "node_7",
970 "next_tables" : {
971 "ecmp_group" : "ecmp_group_table",
972 "set_egress_port" : "node_7",
973 "send_to_cpu" : "node_7",
974 "_drop" : "node_7",
975 "NoAction" : "node_7"
976 },
977 "default_entry" : {
978 "action_id" : 2,
979 "action_const" : false,
980 "action_data" : [],
981 "action_entry_const" : false
982 }
983 },
984 {
985 "name" : "ecmp_group_table",
986 "id" : 2,
987 "source_info" : {
988 "filename" : "ecmp.p4",
989 "line" : 63,
990 "column" : 0,
991 "source_fragment" : "table ecmp_group_table { ..."
992 },
993 "key" : [
994 {
995 "match_type" : "exact",
996 "target" : ["ecmp_metadata", "groupId"],
997 "mask" : null
998 },
999 {
1000 "match_type" : "exact",
1001 "target" : ["ecmp_metadata", "selector"],
1002 "mask" : null
1003 }
1004 ],
1005 "match_type" : "exact",
1006 "type" : "simple",
1007 "max_size" : 1024,
1008 "with_counters" : true,
1009 "support_timeout" : false,
1010 "direct_meters" : null,
1011 "action_ids" : [3, 1],
1012 "actions" : ["set_egress_port", "NoAction"],
1013 "base_default_next" : "node_7",
1014 "next_tables" : {
1015 "set_egress_port" : "node_7",
1016 "NoAction" : "node_7"
1017 },
1018 "default_entry" : {
1019 "action_id" : 1,
1020 "action_const" : false,
1021 "action_data" : [],
1022 "action_entry_const" : false
1023 }
1024 },
1025 {
1026 "name" : "ingress_port_count_table",
1027 "id" : 3,
1028 "source_info" : {
1029 "filename" : "include/port_counters.p4",
1030 "line" : 25,
1031 "column" : 0,
1032 "source_fragment" : "table ingress_port_count_table { ..."
1033 },
1034 "key" : [],
1035 "match_type" : "exact",
1036 "type" : "simple",
1037 "max_size" : 1024,
1038 "with_counters" : false,
1039 "support_timeout" : false,
1040 "direct_meters" : null,
1041 "action_ids" : [10],
1042 "actions" : ["count_ingress"],
1043 "base_default_next" : "egress_port_count_table",
1044 "next_tables" : {
1045 "count_ingress" : "egress_port_count_table"
1046 },
1047 "default_entry" : {
1048 "action_id" : 10,
1049 "action_const" : false,
1050 "action_data" : [],
1051 "action_entry_const" : false
1052 }
1053 },
1054 {
1055 "name" : "egress_port_count_table",
1056 "id" : 4,
1057 "source_info" : {
1058 "filename" : "include/port_counters.p4",
1059 "line" : 30,
1060 "column" : 0,
1061 "source_fragment" : "table egress_port_count_table { ..."
1062 },
1063 "key" : [],
1064 "match_type" : "exact",
1065 "type" : "simple",
1066 "max_size" : 1024,
1067 "with_counters" : false,
1068 "support_timeout" : false,
1069 "direct_meters" : null,
1070 "action_ids" : [9],
1071 "actions" : ["count_egress"],
1072 "base_default_next" : null,
1073 "next_tables" : {
1074 "count_egress" : null
1075 },
1076 "default_entry" : {
1077 "action_id" : 9,
1078 "action_const" : false,
1079 "action_data" : [],
1080 "action_entry_const" : false
1081 }
1082 }
1083 ],
1084 "action_profiles" : [],
1085 "conditionals" : [
1086 {
1087 "name" : "node_2",
1088 "id" : 0,
1089 "source_info" : {
1090 "filename" : "include/packet_io.p4",
1091 "line" : 19,
1092 "column" : 8,
1093 "source_fragment" : "valid(packet_out_hdr)"
1094 },
1095 "expression" : {
1096 "type" : "expression",
1097 "value" : {
1098 "op" : "==",
1099 "left" : {
1100 "type" : "field",
1101 "value" : ["packet_out_hdr", "$valid$"]
1102 },
1103 "right" : {
1104 "type" : "hexstr",
1105 "value" : "0x01"
1106 }
1107 }
1108 },
1109 "true_next" : "ingress_pkt",
1110 "false_next" : "node_4"
1111 },
1112 {
1113 "name" : "node_4",
1114 "id" : 1,
1115 "source_info" : {
1116 "filename" : "ecmp.p4",
1117 "line" : 87,
1118 "column" : 12,
1119 "source_fragment" : "valid(packet_out_hdr)"
1120 },
1121 "expression" : {
1122 "type" : "expression",
1123 "value" : {
1124 "op" : "!=",
1125 "left" : {
1126 "type" : "field",
1127 "value" : ["packet_out_hdr", "$valid$"]
1128 },
1129 "right" : {
1130 "type" : "hexstr",
1131 "value" : "0x01"
1132 }
1133 }
1134 },
1135 "true_next" : "table0",
1136 "false_next" : "node_7"
1137 },
1138 {
1139 "name" : "node_7",
1140 "id" : 2,
1141 "source_info" : {
1142 "filename" : "include/port_counters.p4",
1143 "line" : 36,
1144 "column" : 38,
1145 "source_fragment" : "<"
1146 },
1147 "expression" : {
1148 "type" : "expression",
1149 "value" : {
1150 "op" : "<",
1151 "left" : {
1152 "type" : "field",
1153 "value" : ["ig_intr_md", "egress_spec"]
1154 },
1155 "right" : {
1156 "type" : "hexstr",
1157 "value" : "0x00fe"
1158 }
1159 }
1160 },
1161 "false_next" : null,
1162 "true_next" : "ingress_port_count_table"
1163 }
1164 ]
1165 },
1166 {
1167 "name" : "egress",
1168 "id" : 1,
1169 "init_table" : "node_12",
1170 "tables" : [
1171 {
1172 "name" : "egress_pkt",
1173 "id" : 5,
1174 "source_info" : {
1175 "filename" : "include/packet_io.p4",
1176 "line" : 29,
1177 "column" : 0,
1178 "source_fragment" : "table egress_pkt { ..."
1179 },
1180 "key" : [],
1181 "match_type" : "exact",
1182 "type" : "simple",
1183 "max_size" : 1024,
1184 "with_counters" : false,
1185 "support_timeout" : false,
1186 "direct_meters" : null,
1187 "action_ids" : [0],
1188 "actions" : ["add_packet_in_hdr"],
1189 "base_default_next" : null,
1190 "next_tables" : {
1191 "add_packet_in_hdr" : null
1192 },
1193 "default_entry" : {
1194 "action_id" : 0,
1195 "action_const" : false,
1196 "action_data" : [],
1197 "action_entry_const" : false
1198 }
1199 }
1200 ],
1201 "action_profiles" : [],
1202 "conditionals" : [
1203 {
1204 "name" : "node_12",
1205 "id" : 3,
1206 "source_info" : {
1207 "filename" : "include/packet_io.p4",
1208 "line" : 40,
1209 "column" : 39,
1210 "source_fragment" : "=="
1211 },
1212 "expression" : {
1213 "type" : "expression",
1214 "value" : {
1215 "op" : "==",
1216 "left" : {
1217 "type" : "field",
1218 "value" : ["ig_intr_md", "ingress_port"]
1219 },
1220 "right" : {
1221 "type" : "hexstr",
1222 "value" : "0x00ff"
1223 }
1224 }
1225 },
1226 "false_next" : null,
1227 "true_next" : "egress_pkt"
1228 }
1229 ]
1230 }
1231 ],
1232 "checksums" : [],
1233 "force_arith" : [],
1234 "extern_instances" : [],
1235 "field_aliases" : [
1236 [
1237 "queueing_metadata.enq_timestamp",
1238 ["ig_intr_md", "enq_timestamp"]
1239 ],
1240 [
1241 "queueing_metadata.enq_qdepth",
1242 ["ig_intr_md", "enq_qdepth"]
1243 ],
1244 [
1245 "queueing_metadata.deq_timedelta",
1246 ["ig_intr_md", "deq_timedelta"]
1247 ],
1248 [
1249 "queueing_metadata.deq_qdepth",
1250 ["ig_intr_md", "deq_qdepth"]
1251 ],
1252 [
1253 "intrinsic_metadata.ingress_global_timestamp",
1254 ["ig_intr_md", "ingress_global_timestamp"]
1255 ],
1256 [
1257 "intrinsic_metadata.lf_field_list",
1258 ["ig_intr_md", "lf_field_list"]
1259 ],
1260 [
1261 "intrinsic_metadata.mcast_grp",
1262 ["ig_intr_md", "mcast_grp"]
1263 ],
1264 [
1265 "intrinsic_metadata.resubmit_flag",
1266 ["ig_intr_md", "resubmit_flag"]
1267 ],
1268 [
1269 "intrinsic_metadata.egress_rid",
1270 ["ig_intr_md", "egress_rid"]
1271 ]
1272 ]
1273}