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