blob: 51d5a08db3b9f1a97c4a01aa5b970b0af24ce06f [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tseng1d842672017-11-28 16:06:52 -08002 "program" : "p4c-out/bmv2/fabric.p4i",
Yi Tsengbe342052017-11-03 10:21:23 -07003 "__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" : [
Yi Tseng1d842672017-11-28 16:06:52 -080012 ["tmp_0", 161, false],
Yi Tsengbe342052017-11-03 10:21:23 -070013 ["tmp_1", 32, false],
14 ["tmp_2", 32, false],
Yi Tseng1d842672017-11-28 16:06:52 -080015 ["next_tmp_0", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070016 ["fabric_metadata_t.fwd_type", 3, false],
17 ["fabric_metadata_t.next_id", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -070018 ["fabric_metadata_t.pop_vlan_at_egress", 1, false],
19 ["fabric_metadata_t.ip_proto", 8, false],
20 ["fabric_metadata_t.l4_src_port", 16, false],
Yi Tsengf55eaa82017-11-29 15:51:28 -080021 ["fabric_metadata_t.l4_dst_port", 16, false],
Yi Tseng1d842672017-11-28 16:06:52 -080022 ["fabric_metadata_t.original_ether_type", 16, false],
23 ["_padding_0", 2, false]
Yi Tsengbe342052017-11-03 10:21:23 -070024 ]
25 },
26 {
27 "name" : "ipv4_t",
28 "id" : 1,
29 "fields" : [
30 ["version", 4, false],
31 ["ihl", 4, false],
32 ["diffserv", 8, false],
33 ["total_len", 16, false],
34 ["identification", 16, false],
35 ["flags", 3, false],
36 ["frag_offset", 13, false],
37 ["ttl", 8, false],
38 ["protocol", 8, false],
39 ["hdr_checksum", 16, false],
40 ["src_addr", 32, false],
41 ["dst_addr", 32, false]
42 ]
43 },
44 {
45 "name" : "ethernet_t",
46 "id" : 2,
47 "fields" : [
48 ["dst_addr", 48, false],
49 ["src_addr", 48, false],
50 ["ether_type", 16, false]
51 ]
52 },
53 {
54 "name" : "vlan_tag_t",
55 "id" : 3,
56 "fields" : [
57 ["pri", 3, false],
58 ["cfi", 1, false],
59 ["vlan_id", 12, false],
60 ["ether_type", 16, false]
61 ]
62 },
63 {
64 "name" : "mpls_t",
65 "id" : 4,
66 "fields" : [
67 ["label", 20, false],
68 ["tc", 3, false],
69 ["bos", 1, false],
70 ["ttl", 8, false]
71 ]
72 },
73 {
74 "name" : "ipv6_t",
75 "id" : 5,
76 "fields" : [
77 ["version", 4, false],
78 ["traffic_class", 8, false],
79 ["flow_label", 20, false],
80 ["payload_len", 16, false],
81 ["next_hdr", 8, false],
82 ["hop_limit", 8, false],
83 ["src_addr", 128, false],
84 ["dst_addr", 128, false]
85 ]
86 },
87 {
88 "name" : "arp_t",
89 "id" : 6,
90 "fields" : [
91 ["hw_type", 16, false],
92 ["proto_type", 16, false],
93 ["hw_addr_len", 8, false],
94 ["proto_addr_len", 8, false],
95 ["opcode", 16, false]
96 ]
97 },
98 {
99 "name" : "tcp_t",
100 "id" : 7,
101 "fields" : [
102 ["src_port", 16, false],
103 ["dst_port", 16, false],
104 ["seq_no", 32, false],
105 ["ack_no", 32, false],
106 ["data_offset", 4, false],
107 ["res", 3, false],
108 ["ecn", 3, false],
109 ["ctrl", 6, false],
110 ["window", 16, false],
111 ["checksum", 16, false],
112 ["urgent_ptr", 16, false]
113 ]
114 },
115 {
116 "name" : "udp_t",
117 "id" : 8,
118 "fields" : [
119 ["src_port", 16, false],
120 ["dst_port", 16, false],
121 ["len", 16, false],
122 ["checksum", 16, false]
123 ]
124 },
125 {
126 "name" : "icmp_t",
127 "id" : 9,
128 "fields" : [
129 ["icmp_type", 8, false],
130 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800131 ["checksum", 16, false],
132 ["identifier", 16, false],
133 ["sequence_number", 16, false],
134 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700135 ]
136 },
137 {
138 "name" : "packet_out_header_t",
139 "id" : 10,
140 "fields" : [
141 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800142 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700143 ]
144 },
145 {
146 "name" : "packet_in_header_t",
147 "id" : 11,
148 "fields" : [
149 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800150 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700151 ]
152 },
153 {
154 "name" : "standard_metadata",
155 "id" : 12,
156 "fields" : [
157 ["ingress_port", 9, false],
158 ["egress_spec", 9, false],
159 ["egress_port", 9, false],
160 ["clone_spec", 32, false],
161 ["instance_type", 32, false],
162 ["drop", 1, false],
163 ["recirculate_port", 16, false],
164 ["packet_length", 32, false],
165 ["enq_timestamp", 32, false],
166 ["enq_qdepth", 19, false],
167 ["deq_timedelta", 32, false],
168 ["deq_qdepth", 19, false],
169 ["ingress_global_timestamp", 48, false],
170 ["lf_field_list", 32, false],
171 ["mcast_grp", 16, false],
172 ["resubmit_flag", 1, false],
173 ["egress_rid", 16, false],
174 ["checksum_error", 1, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800175 ["_padding", 4, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700176 ]
177 }
178 ],
179 "headers" : [
180 {
Yi Tseng1d842672017-11-28 16:06:52 -0800181 "name" : "tmp",
Yi Tsengbe342052017-11-03 10:21:23 -0700182 "id" : 0,
183 "header_type" : "ipv4_t",
184 "metadata" : false,
185 "pi_omit" : true
186 },
187 {
188 "name" : "scalars",
189 "id" : 1,
190 "header_type" : "scalars_0",
191 "metadata" : true,
192 "pi_omit" : true
193 },
194 {
195 "name" : "standard_metadata",
196 "id" : 2,
197 "header_type" : "standard_metadata",
198 "metadata" : true,
199 "pi_omit" : true
200 },
201 {
202 "name" : "ethernet",
203 "id" : 3,
204 "header_type" : "ethernet_t",
205 "metadata" : false,
206 "pi_omit" : true
207 },
208 {
209 "name" : "vlan_tag",
210 "id" : 4,
211 "header_type" : "vlan_tag_t",
212 "metadata" : false,
213 "pi_omit" : true
214 },
215 {
216 "name" : "inner_vlan_tag",
217 "id" : 5,
218 "header_type" : "vlan_tag_t",
219 "metadata" : false,
220 "pi_omit" : true
221 },
222 {
223 "name" : "mpls",
224 "id" : 6,
225 "header_type" : "mpls_t",
226 "metadata" : false,
227 "pi_omit" : true
228 },
229 {
230 "name" : "ipv4",
231 "id" : 7,
232 "header_type" : "ipv4_t",
233 "metadata" : false,
234 "pi_omit" : true
235 },
236 {
237 "name" : "ipv6",
238 "id" : 8,
239 "header_type" : "ipv6_t",
240 "metadata" : false,
241 "pi_omit" : true
242 },
243 {
244 "name" : "arp",
245 "id" : 9,
246 "header_type" : "arp_t",
247 "metadata" : false,
248 "pi_omit" : true
249 },
250 {
251 "name" : "tcp",
252 "id" : 10,
253 "header_type" : "tcp_t",
254 "metadata" : false,
255 "pi_omit" : true
256 },
257 {
258 "name" : "udp",
259 "id" : 11,
260 "header_type" : "udp_t",
261 "metadata" : false,
262 "pi_omit" : true
263 },
264 {
265 "name" : "icmp",
266 "id" : 12,
267 "header_type" : "icmp_t",
268 "metadata" : false,
269 "pi_omit" : true
270 },
271 {
272 "name" : "packet_out",
273 "id" : 13,
274 "header_type" : "packet_out_header_t",
275 "metadata" : false,
276 "pi_omit" : true
277 },
278 {
279 "name" : "packet_in",
280 "id" : 14,
281 "header_type" : "packet_in_header_t",
282 "metadata" : false,
283 "pi_omit" : true
284 }
285 ],
286 "header_stacks" : [],
287 "header_union_types" : [],
288 "header_unions" : [],
289 "header_union_stacks" : [],
290 "field_lists" : [],
291 "errors" : [
292 ["NoError", 0],
293 ["PacketTooShort", 1],
294 ["NoMatch", 2],
295 ["StackOutOfBounds", 3],
296 ["HeaderTooShort", 4],
297 ["ParserTimeout", 5]
298 ],
299 "enums" : [],
300 "parsers" : [
301 {
302 "name" : "parser",
303 "id" : 0,
304 "init_state" : "start",
305 "parse_states" : [
306 {
307 "name" : "start",
308 "id" : 0,
309 "parser_ops" : [],
310 "transitions" : [
311 {
312 "value" : "0x00ff",
313 "mask" : null,
314 "next_state" : "parse_packet_out"
315 },
316 {
317 "value" : "default",
318 "mask" : null,
319 "next_state" : "parse_ethernet"
320 }
321 ],
322 "transition_key" : [
323 {
324 "type" : "field",
325 "value" : ["standard_metadata", "ingress_port"]
326 }
327 ]
328 },
329 {
330 "name" : "parse_packet_out",
331 "id" : 1,
332 "parser_ops" : [
333 {
334 "parameters" : [
335 {
336 "type" : "regular",
337 "value" : "packet_out"
338 }
339 ],
340 "op" : "extract"
341 }
342 ],
343 "transitions" : [
344 {
345 "value" : "default",
346 "mask" : null,
347 "next_state" : "parse_ethernet"
348 }
349 ],
350 "transition_key" : []
351 },
352 {
353 "name" : "parse_ethernet",
354 "id" : 2,
355 "parser_ops" : [
356 {
357 "parameters" : [
358 {
359 "type" : "regular",
360 "value" : "ethernet"
361 }
362 ],
363 "op" : "extract"
Yi Tseng1d842672017-11-28 16:06:52 -0800364 },
365 {
366 "parameters" : [
367 {
368 "type" : "field",
369 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
370 },
371 {
372 "type" : "field",
373 "value" : ["ethernet", "ether_type"]
374 }
375 ],
376 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700377 }
378 ],
379 "transitions" : [
380 {
381 "value" : "0x9100",
382 "mask" : null,
383 "next_state" : "parse_vlan_tag"
384 },
385 {
386 "value" : "0x88a8",
387 "mask" : null,
388 "next_state" : "parse_vlan_tag"
389 },
390 {
391 "value" : "0x8100",
392 "mask" : null,
393 "next_state" : "parse_vlan_tag"
394 },
395 {
396 "value" : "0x8847",
397 "mask" : null,
398 "next_state" : "parse_mpls"
399 },
400 {
401 "value" : "0x0806",
402 "mask" : null,
403 "next_state" : "parse_arp"
404 },
405 {
406 "value" : "0x0800",
407 "mask" : null,
408 "next_state" : "parse_ipv4"
409 },
410 {
411 "value" : "0x86dd",
412 "mask" : null,
413 "next_state" : "parse_ipv6"
414 },
415 {
416 "value" : "default",
417 "mask" : null,
418 "next_state" : null
419 }
420 ],
421 "transition_key" : [
422 {
423 "type" : "field",
424 "value" : ["ethernet", "ether_type"]
425 }
426 ]
427 },
428 {
429 "name" : "parse_vlan_tag",
430 "id" : 3,
431 "parser_ops" : [
432 {
433 "parameters" : [
434 {
435 "type" : "regular",
436 "value" : "vlan_tag"
437 }
438 ],
439 "op" : "extract"
440 }
441 ],
442 "transitions" : [
443 {
444 "value" : "0x8100",
445 "mask" : null,
446 "next_state" : "parse_inner_vlan_tag"
447 },
448 {
449 "value" : "0x0806",
450 "mask" : null,
451 "next_state" : "parse_arp"
452 },
453 {
454 "value" : "0x0800",
455 "mask" : null,
456 "next_state" : "parse_ipv4"
457 },
458 {
459 "value" : "0x86dd",
460 "mask" : null,
461 "next_state" : "parse_ipv6"
462 },
463 {
464 "value" : "default",
465 "mask" : null,
466 "next_state" : null
467 }
468 ],
469 "transition_key" : [
470 {
471 "type" : "field",
472 "value" : ["vlan_tag", "ether_type"]
473 }
474 ]
475 },
476 {
477 "name" : "parse_inner_vlan_tag",
478 "id" : 4,
479 "parser_ops" : [
480 {
481 "parameters" : [
482 {
483 "type" : "regular",
484 "value" : "inner_vlan_tag"
485 }
486 ],
487 "op" : "extract"
488 }
489 ],
490 "transitions" : [
491 {
492 "value" : "0x0806",
493 "mask" : null,
494 "next_state" : "parse_arp"
495 },
496 {
497 "value" : "0x0800",
498 "mask" : null,
499 "next_state" : "parse_ipv4"
500 },
501 {
502 "value" : "0x86dd",
503 "mask" : null,
504 "next_state" : "parse_ipv6"
505 },
506 {
507 "value" : "default",
508 "mask" : null,
509 "next_state" : null
510 }
511 ],
512 "transition_key" : [
513 {
514 "type" : "field",
515 "value" : ["vlan_tag", "ether_type"]
516 }
517 ]
518 },
519 {
520 "name" : "parse_mpls",
521 "id" : 5,
522 "parser_ops" : [
523 {
524 "parameters" : [
525 {
526 "type" : "regular",
527 "value" : "mpls"
528 }
529 ],
530 "op" : "extract"
531 },
532 {
533 "parameters" : [
534 {
535 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800536 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700537 },
538 {
539 "type" : "lookahead",
540 "value" : [0, 161]
541 }
542 ],
543 "op" : "set"
544 },
545 {
546 "parameters" : [
547 {
548 "parameters" : [
549 {
550 "type" : "header",
Yi Tseng1d842672017-11-28 16:06:52 -0800551 "value" : "tmp"
Yi Tsengbe342052017-11-03 10:21:23 -0700552 }
553 ],
554 "op" : "add_header"
555 }
556 ],
557 "op" : "primitive"
558 },
559 {
560 "parameters" : [
561 {
562 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800563 "value" : ["tmp", "version"]
Yi Tsengbe342052017-11-03 10:21:23 -0700564 },
565 {
566 "type" : "expression",
567 "value" : {
568 "type" : "expression",
569 "value" : {
570 "op" : "&",
571 "left" : {
572 "type" : "expression",
573 "value" : {
574 "op" : "&",
575 "left" : {
576 "type" : "expression",
577 "value" : {
578 "op" : ">>",
579 "left" : {
580 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800581 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700582 },
583 "right" : {
584 "type" : "hexstr",
585 "value" : "0x9d"
586 }
587 }
588 },
589 "right" : {
590 "type" : "hexstr",
591 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
592 }
593 }
594 },
595 "right" : {
596 "type" : "hexstr",
597 "value" : "0x0f"
598 }
599 }
600 }
601 }
602 ],
603 "op" : "set"
604 },
605 {
606 "parameters" : [
607 {
608 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800609 "value" : ["tmp", "ihl"]
Yi Tsengbe342052017-11-03 10:21:23 -0700610 },
611 {
612 "type" : "expression",
613 "value" : {
614 "type" : "expression",
615 "value" : {
616 "op" : "&",
617 "left" : {
618 "type" : "expression",
619 "value" : {
620 "op" : "&",
621 "left" : {
622 "type" : "expression",
623 "value" : {
624 "op" : ">>",
625 "left" : {
626 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800627 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700628 },
629 "right" : {
630 "type" : "hexstr",
631 "value" : "0x99"
632 }
633 }
634 },
635 "right" : {
636 "type" : "hexstr",
637 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
638 }
639 }
640 },
641 "right" : {
642 "type" : "hexstr",
643 "value" : "0x0f"
644 }
645 }
646 }
647 }
648 ],
649 "op" : "set"
650 },
651 {
652 "parameters" : [
653 {
654 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800655 "value" : ["tmp", "diffserv"]
Yi Tsengbe342052017-11-03 10:21:23 -0700656 },
657 {
658 "type" : "expression",
659 "value" : {
660 "type" : "expression",
661 "value" : {
662 "op" : "&",
663 "left" : {
664 "type" : "expression",
665 "value" : {
666 "op" : "&",
667 "left" : {
668 "type" : "expression",
669 "value" : {
670 "op" : ">>",
671 "left" : {
672 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800673 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700674 },
675 "right" : {
676 "type" : "hexstr",
677 "value" : "0x91"
678 }
679 }
680 },
681 "right" : {
682 "type" : "hexstr",
683 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
684 }
685 }
686 },
687 "right" : {
688 "type" : "hexstr",
689 "value" : "0xff"
690 }
691 }
692 }
693 }
694 ],
695 "op" : "set"
696 },
697 {
698 "parameters" : [
699 {
700 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800701 "value" : ["tmp", "total_len"]
Yi Tsengbe342052017-11-03 10:21:23 -0700702 },
703 {
704 "type" : "expression",
705 "value" : {
706 "type" : "expression",
707 "value" : {
708 "op" : "&",
709 "left" : {
710 "type" : "expression",
711 "value" : {
712 "op" : "&",
713 "left" : {
714 "type" : "expression",
715 "value" : {
716 "op" : ">>",
717 "left" : {
718 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800719 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700720 },
721 "right" : {
722 "type" : "hexstr",
723 "value" : "0x81"
724 }
725 }
726 },
727 "right" : {
728 "type" : "hexstr",
729 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
730 }
731 }
732 },
733 "right" : {
734 "type" : "hexstr",
735 "value" : "0xffff"
736 }
737 }
738 }
739 }
740 ],
741 "op" : "set"
742 },
743 {
744 "parameters" : [
745 {
746 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800747 "value" : ["tmp", "identification"]
Yi Tsengbe342052017-11-03 10:21:23 -0700748 },
749 {
750 "type" : "expression",
751 "value" : {
752 "type" : "expression",
753 "value" : {
754 "op" : "&",
755 "left" : {
756 "type" : "expression",
757 "value" : {
758 "op" : "&",
759 "left" : {
760 "type" : "expression",
761 "value" : {
762 "op" : ">>",
763 "left" : {
764 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800765 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700766 },
767 "right" : {
768 "type" : "hexstr",
769 "value" : "0x71"
770 }
771 }
772 },
773 "right" : {
774 "type" : "hexstr",
775 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
776 }
777 }
778 },
779 "right" : {
780 "type" : "hexstr",
781 "value" : "0xffff"
782 }
783 }
784 }
785 }
786 ],
787 "op" : "set"
788 },
789 {
790 "parameters" : [
791 {
792 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800793 "value" : ["tmp", "flags"]
Yi Tsengbe342052017-11-03 10:21:23 -0700794 },
795 {
796 "type" : "expression",
797 "value" : {
798 "type" : "expression",
799 "value" : {
800 "op" : "&",
801 "left" : {
802 "type" : "expression",
803 "value" : {
804 "op" : "&",
805 "left" : {
806 "type" : "expression",
807 "value" : {
808 "op" : ">>",
809 "left" : {
810 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800811 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700812 },
813 "right" : {
814 "type" : "hexstr",
815 "value" : "0x6e"
816 }
817 }
818 },
819 "right" : {
820 "type" : "hexstr",
821 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
822 }
823 }
824 },
825 "right" : {
826 "type" : "hexstr",
827 "value" : "0x07"
828 }
829 }
830 }
831 }
832 ],
833 "op" : "set"
834 },
835 {
836 "parameters" : [
837 {
838 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800839 "value" : ["tmp", "frag_offset"]
Yi Tsengbe342052017-11-03 10:21:23 -0700840 },
841 {
842 "type" : "expression",
843 "value" : {
844 "type" : "expression",
845 "value" : {
846 "op" : "&",
847 "left" : {
848 "type" : "expression",
849 "value" : {
850 "op" : "&",
851 "left" : {
852 "type" : "expression",
853 "value" : {
854 "op" : ">>",
855 "left" : {
856 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800857 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700858 },
859 "right" : {
860 "type" : "hexstr",
861 "value" : "0x61"
862 }
863 }
864 },
865 "right" : {
866 "type" : "hexstr",
867 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
868 }
869 }
870 },
871 "right" : {
872 "type" : "hexstr",
873 "value" : "0x1fff"
874 }
875 }
876 }
877 }
878 ],
879 "op" : "set"
880 },
881 {
882 "parameters" : [
883 {
884 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800885 "value" : ["tmp", "ttl"]
Yi Tsengbe342052017-11-03 10:21:23 -0700886 },
887 {
888 "type" : "expression",
889 "value" : {
890 "type" : "expression",
891 "value" : {
892 "op" : "&",
893 "left" : {
894 "type" : "expression",
895 "value" : {
896 "op" : "&",
897 "left" : {
898 "type" : "expression",
899 "value" : {
900 "op" : ">>",
901 "left" : {
902 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800903 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700904 },
905 "right" : {
906 "type" : "hexstr",
907 "value" : "0x59"
908 }
909 }
910 },
911 "right" : {
912 "type" : "hexstr",
913 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
914 }
915 }
916 },
917 "right" : {
918 "type" : "hexstr",
919 "value" : "0xff"
920 }
921 }
922 }
923 }
924 ],
925 "op" : "set"
926 },
927 {
928 "parameters" : [
929 {
930 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800931 "value" : ["tmp", "protocol"]
Yi Tsengbe342052017-11-03 10:21:23 -0700932 },
933 {
934 "type" : "expression",
935 "value" : {
936 "type" : "expression",
937 "value" : {
938 "op" : "&",
939 "left" : {
940 "type" : "expression",
941 "value" : {
942 "op" : "&",
943 "left" : {
944 "type" : "expression",
945 "value" : {
946 "op" : ">>",
947 "left" : {
948 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800949 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700950 },
951 "right" : {
952 "type" : "hexstr",
953 "value" : "0x51"
954 }
955 }
956 },
957 "right" : {
958 "type" : "hexstr",
959 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
960 }
961 }
962 },
963 "right" : {
964 "type" : "hexstr",
965 "value" : "0xff"
966 }
967 }
968 }
969 }
970 ],
971 "op" : "set"
972 },
973 {
974 "parameters" : [
975 {
976 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800977 "value" : ["tmp", "hdr_checksum"]
Yi Tsengbe342052017-11-03 10:21:23 -0700978 },
979 {
980 "type" : "expression",
981 "value" : {
982 "type" : "expression",
983 "value" : {
984 "op" : "&",
985 "left" : {
986 "type" : "expression",
987 "value" : {
988 "op" : "&",
989 "left" : {
990 "type" : "expression",
991 "value" : {
992 "op" : ">>",
993 "left" : {
994 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -0800995 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700996 },
997 "right" : {
998 "type" : "hexstr",
999 "value" : "0x41"
1000 }
1001 }
1002 },
1003 "right" : {
1004 "type" : "hexstr",
1005 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
1006 }
1007 }
1008 },
1009 "right" : {
1010 "type" : "hexstr",
1011 "value" : "0xffff"
1012 }
1013 }
1014 }
1015 }
1016 ],
1017 "op" : "set"
1018 },
1019 {
1020 "parameters" : [
1021 {
1022 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08001023 "value" : ["tmp", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07001024 },
1025 {
1026 "type" : "expression",
1027 "value" : {
1028 "type" : "expression",
1029 "value" : {
1030 "op" : "&",
1031 "left" : {
1032 "type" : "expression",
1033 "value" : {
1034 "op" : "&",
1035 "left" : {
1036 "type" : "expression",
1037 "value" : {
1038 "op" : ">>",
1039 "left" : {
1040 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08001041 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07001042 },
1043 "right" : {
1044 "type" : "hexstr",
1045 "value" : "0x21"
1046 }
1047 }
1048 },
1049 "right" : {
1050 "type" : "hexstr",
1051 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
1052 }
1053 }
1054 },
1055 "right" : {
1056 "type" : "hexstr",
1057 "value" : "0xffffffff"
1058 }
1059 }
1060 }
1061 }
1062 ],
1063 "op" : "set"
1064 },
1065 {
1066 "parameters" : [
1067 {
1068 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08001069 "value" : ["tmp", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07001070 },
1071 {
1072 "type" : "expression",
1073 "value" : {
1074 "type" : "expression",
1075 "value" : {
1076 "op" : "&",
1077 "left" : {
1078 "type" : "expression",
1079 "value" : {
1080 "op" : "&",
1081 "left" : {
1082 "type" : "expression",
1083 "value" : {
1084 "op" : ">>",
1085 "left" : {
1086 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08001087 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07001088 },
1089 "right" : {
1090 "type" : "hexstr",
1091 "value" : "0x1"
1092 }
1093 }
1094 },
1095 "right" : {
1096 "type" : "hexstr",
1097 "value" : "0x01ffffffffffffffffffffffffffffffffffffffff"
1098 }
1099 }
1100 },
1101 "right" : {
1102 "type" : "hexstr",
1103 "value" : "0xffffffff"
1104 }
1105 }
1106 }
1107 }
1108 ],
1109 "op" : "set"
1110 },
1111 {
1112 "parameters" : [
1113 {
1114 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08001115 "value" : ["tmp", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07001116 },
1117 {
1118 "type" : "expression",
1119 "value" : {
1120 "type" : "expression",
1121 "value" : {
1122 "op" : "&",
1123 "left" : {
1124 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08001125 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07001126 },
1127 "right" : {
1128 "type" : "hexstr",
1129 "value" : "0x01"
1130 }
1131 }
1132 }
1133 }
1134 ],
1135 "op" : "set"
1136 }
1137 ],
1138 "transitions" : [
1139 {
1140 "value" : "0x04",
1141 "mask" : null,
1142 "next_state" : "parse_ipv4"
1143 },
1144 {
1145 "value" : "0x06",
1146 "mask" : null,
1147 "next_state" : "parse_ipv6"
1148 },
1149 {
1150 "value" : "default",
1151 "mask" : null,
1152 "next_state" : "parse_ethernet"
1153 }
1154 ],
1155 "transition_key" : [
1156 {
1157 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08001158 "value" : ["tmp", "version"]
Yi Tsengbe342052017-11-03 10:21:23 -07001159 }
1160 ]
1161 },
1162 {
1163 "name" : "parse_ipv4",
1164 "id" : 6,
1165 "parser_ops" : [
1166 {
1167 "parameters" : [
1168 {
1169 "type" : "regular",
1170 "value" : "ipv4"
1171 }
1172 ],
1173 "op" : "extract"
1174 },
1175 {
1176 "parameters" : [
1177 {
1178 "type" : "field",
1179 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
1180 },
1181 {
1182 "type" : "field",
1183 "value" : ["ipv4", "protocol"]
1184 }
1185 ],
1186 "op" : "set"
1187 }
1188 ],
1189 "transitions" : [
1190 {
1191 "value" : "0x06",
1192 "mask" : null,
1193 "next_state" : "parse_tcp"
1194 },
1195 {
1196 "value" : "0x11",
1197 "mask" : null,
1198 "next_state" : "parse_udp"
1199 },
1200 {
1201 "value" : "0x01",
1202 "mask" : null,
1203 "next_state" : "parse_icmp"
1204 },
1205 {
1206 "value" : "default",
1207 "mask" : null,
1208 "next_state" : null
1209 }
1210 ],
1211 "transition_key" : [
1212 {
1213 "type" : "field",
1214 "value" : ["ipv4", "protocol"]
1215 }
1216 ]
1217 },
1218 {
1219 "name" : "parse_ipv6",
1220 "id" : 7,
1221 "parser_ops" : [
1222 {
1223 "parameters" : [
1224 {
1225 "type" : "regular",
1226 "value" : "ipv6"
1227 }
1228 ],
1229 "op" : "extract"
1230 },
1231 {
1232 "parameters" : [
1233 {
1234 "type" : "field",
1235 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
1236 },
1237 {
1238 "type" : "field",
1239 "value" : ["ipv6", "next_hdr"]
1240 }
1241 ],
1242 "op" : "set"
1243 }
1244 ],
1245 "transitions" : [
1246 {
1247 "value" : "0x06",
1248 "mask" : null,
1249 "next_state" : "parse_tcp"
1250 },
1251 {
1252 "value" : "0x11",
1253 "mask" : null,
1254 "next_state" : "parse_udp"
1255 },
1256 {
1257 "value" : "0x3a",
1258 "mask" : null,
1259 "next_state" : "parse_icmp"
1260 },
1261 {
1262 "value" : "default",
1263 "mask" : null,
1264 "next_state" : null
1265 }
1266 ],
1267 "transition_key" : [
1268 {
1269 "type" : "field",
1270 "value" : ["ipv6", "next_hdr"]
1271 }
1272 ]
1273 },
1274 {
1275 "name" : "parse_arp",
1276 "id" : 8,
1277 "parser_ops" : [
1278 {
1279 "parameters" : [
1280 {
1281 "type" : "regular",
1282 "value" : "arp"
1283 }
1284 ],
1285 "op" : "extract"
1286 }
1287 ],
1288 "transitions" : [
1289 {
1290 "value" : "default",
1291 "mask" : null,
1292 "next_state" : null
1293 }
1294 ],
1295 "transition_key" : []
1296 },
1297 {
1298 "name" : "parse_tcp",
1299 "id" : 9,
1300 "parser_ops" : [
1301 {
1302 "parameters" : [
1303 {
1304 "type" : "regular",
1305 "value" : "tcp"
1306 }
1307 ],
1308 "op" : "extract"
1309 },
1310 {
1311 "parameters" : [
1312 {
1313 "type" : "field",
1314 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
1315 },
1316 {
1317 "type" : "field",
1318 "value" : ["tcp", "src_port"]
1319 }
1320 ],
1321 "op" : "set"
1322 },
1323 {
1324 "parameters" : [
1325 {
1326 "type" : "field",
1327 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
1328 },
1329 {
1330 "type" : "field",
1331 "value" : ["tcp", "dst_port"]
1332 }
1333 ],
1334 "op" : "set"
1335 }
1336 ],
1337 "transitions" : [
1338 {
1339 "value" : "default",
1340 "mask" : null,
1341 "next_state" : null
1342 }
1343 ],
1344 "transition_key" : []
1345 },
1346 {
1347 "name" : "parse_udp",
1348 "id" : 10,
1349 "parser_ops" : [
1350 {
1351 "parameters" : [
1352 {
1353 "type" : "regular",
1354 "value" : "udp"
1355 }
1356 ],
1357 "op" : "extract"
1358 },
1359 {
1360 "parameters" : [
1361 {
1362 "type" : "field",
1363 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
1364 },
1365 {
1366 "type" : "field",
1367 "value" : ["udp", "src_port"]
1368 }
1369 ],
1370 "op" : "set"
1371 },
1372 {
1373 "parameters" : [
1374 {
1375 "type" : "field",
1376 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
1377 },
1378 {
1379 "type" : "field",
1380 "value" : ["udp", "dst_port"]
1381 }
1382 ],
1383 "op" : "set"
1384 }
1385 ],
1386 "transitions" : [
1387 {
1388 "value" : "default",
1389 "mask" : null,
1390 "next_state" : null
1391 }
1392 ],
1393 "transition_key" : []
1394 },
1395 {
1396 "name" : "parse_icmp",
1397 "id" : 11,
1398 "parser_ops" : [
1399 {
1400 "parameters" : [
1401 {
1402 "type" : "regular",
1403 "value" : "icmp"
1404 }
1405 ],
1406 "op" : "extract"
1407 }
1408 ],
1409 "transitions" : [
1410 {
1411 "value" : "default",
1412 "mask" : null,
1413 "next_state" : null
1414 }
1415 ],
1416 "transition_key" : []
1417 }
1418 ]
1419 }
1420 ],
1421 "deparsers" : [
1422 {
1423 "name" : "deparser",
1424 "id" : 0,
1425 "source_info" : {
1426 "filename" : "./include/parser.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001427 "line" : 135,
Yi Tsengbe342052017-11-03 10:21:23 -07001428 "column" : 8,
1429 "source_fragment" : "FabricDeparser"
1430 },
Yi Tsengf73a5532017-11-17 15:58:57 -08001431 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -07001432 }
1433 ],
1434 "meter_arrays" : [],
1435 "counter_arrays" : [
1436 {
Yi Tsengbe342052017-11-03 10:21:23 -07001437 "name" : "port_counters_control.egress_port_counter",
Yi Tseng1d842672017-11-28 16:06:52 -08001438 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07001439 "source_info" : {
1440 "filename" : "./include/control/port_counter.p4",
1441 "line" : 23,
1442 "column" : 38,
1443 "source_fragment" : "egress_port_counter"
1444 },
1445 "size" : 511,
1446 "is_direct" : false
1447 },
1448 {
1449 "name" : "port_counters_control.ingress_port_counter",
Yi Tseng1d842672017-11-28 16:06:52 -08001450 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07001451 "source_info" : {
1452 "filename" : "./include/control/port_counter.p4",
1453 "line" : 24,
1454 "column" : 38,
1455 "source_fragment" : "ingress_port_counter"
1456 },
1457 "size" : 511,
1458 "is_direct" : false
1459 }
1460 ],
1461 "register_arrays" : [],
1462 "calculations" : [
1463 {
1464 "name" : "calc",
1465 "id" : 0,
1466 "source_info" : {
1467 "filename" : "./include/checksum.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001468 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07001469 "column" : 8,
1470 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
1471 },
1472 "algo" : "csum16",
1473 "input" : [
1474 {
1475 "type" : "field",
1476 "value" : ["ipv4", "version"]
1477 },
1478 {
1479 "type" : "field",
1480 "value" : ["ipv4", "ihl"]
1481 },
1482 {
1483 "type" : "field",
1484 "value" : ["ipv4", "diffserv"]
1485 },
1486 {
1487 "type" : "field",
1488 "value" : ["ipv4", "total_len"]
1489 },
1490 {
1491 "type" : "field",
1492 "value" : ["ipv4", "identification"]
1493 },
1494 {
1495 "type" : "field",
1496 "value" : ["ipv4", "flags"]
1497 },
1498 {
1499 "type" : "field",
1500 "value" : ["ipv4", "frag_offset"]
1501 },
1502 {
1503 "type" : "field",
1504 "value" : ["ipv4", "ttl"]
1505 },
1506 {
1507 "type" : "field",
1508 "value" : ["ipv4", "protocol"]
1509 },
1510 {
1511 "type" : "field",
1512 "value" : ["ipv4", "src_addr"]
1513 },
1514 {
1515 "type" : "field",
1516 "value" : ["ipv4", "dst_addr"]
1517 }
1518 ]
1519 },
1520 {
1521 "name" : "calc_0",
1522 "id" : 1,
1523 "source_info" : {
1524 "filename" : "./include/checksum.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001525 "line" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001526 "column" : 8,
1527 "source_fragment" : "update_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 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001576 }
1577 ],
1578 "learn_lists" : [],
1579 "actions" : [
1580 {
1581 "name" : "nop",
1582 "id" : 0,
1583 "runtime_data" : [],
1584 "primitives" : []
1585 },
1586 {
1587 "name" : "nop",
1588 "id" : 1,
1589 "runtime_data" : [],
1590 "primitives" : []
1591 },
1592 {
Yi Tseng1d842672017-11-28 16:06:52 -08001593 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001594 "id" : 2,
1595 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001596 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001597 },
1598 {
Yi Tseng1d842672017-11-28 16:06:52 -08001599 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001600 "id" : 3,
1601 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001602 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001603 },
1604 {
1605 "name" : "NoAction",
1606 "id" : 4,
1607 "runtime_data" : [],
1608 "primitives" : []
1609 },
1610 {
1611 "name" : "NoAction",
1612 "id" : 5,
1613 "runtime_data" : [],
1614 "primitives" : []
1615 },
1616 {
1617 "name" : "NoAction",
1618 "id" : 6,
1619 "runtime_data" : [],
1620 "primitives" : []
1621 },
1622 {
1623 "name" : "NoAction",
1624 "id" : 7,
1625 "runtime_data" : [],
1626 "primitives" : []
1627 },
1628 {
1629 "name" : "NoAction",
1630 "id" : 8,
1631 "runtime_data" : [],
1632 "primitives" : []
1633 },
1634 {
1635 "name" : "NoAction",
1636 "id" : 9,
1637 "runtime_data" : [],
1638 "primitives" : []
1639 },
1640 {
1641 "name" : "NoAction",
1642 "id" : 10,
1643 "runtime_data" : [],
1644 "primitives" : []
1645 },
1646 {
Yi Tseng1d842672017-11-28 16:06:52 -08001647 "name" : "filtering.drop",
Yi Tsengbe342052017-11-03 10:21:23 -07001648 "id" : 11,
1649 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001650 "primitives" : [
1651 {
1652 "op" : "drop",
1653 "parameters" : [],
1654 "source_info" : {
1655 "filename" : "./include/control/filtering.p4",
1656 "line" : 29,
1657 "column" : 8,
1658 "source_fragment" : "mark_to_drop()"
1659 }
1660 }
1661 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001662 },
1663 {
Yi Tsengbe342052017-11-03 10:21:23 -07001664 "name" : "filtering.set_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001665 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001666 "runtime_data" : [
1667 {
1668 "name" : "new_vlan_id",
1669 "bitwidth" : 12
1670 }
1671 ],
1672 "primitives" : [
1673 {
1674 "op" : "assign",
1675 "parameters" : [
1676 {
1677 "type" : "field",
1678 "value" : ["vlan_tag", "vlan_id"]
1679 },
1680 {
1681 "type" : "runtime_data",
1682 "value" : 0
1683 }
1684 ],
1685 "source_info" : {
1686 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001687 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001688 "column" : 8,
1689 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1690 }
1691 }
1692 ]
1693 },
1694 {
1695 "name" : "filtering.push_internal_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001696 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07001697 "runtime_data" : [
1698 {
1699 "name" : "new_vlan_id",
1700 "bitwidth" : 12
1701 }
1702 ],
1703 "primitives" : [
1704 {
1705 "op" : "add_header",
1706 "parameters" : [
1707 {
1708 "type" : "header",
1709 "value" : "vlan_tag"
1710 }
1711 ],
1712 "source_info" : {
1713 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001714 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07001715 "column" : 8,
1716 "source_fragment" : "hdr.vlan_tag.setValid()"
1717 }
1718 },
1719 {
1720 "op" : "assign",
1721 "parameters" : [
1722 {
1723 "type" : "field",
1724 "value" : ["vlan_tag", "cfi"]
1725 },
1726 {
1727 "type" : "hexstr",
1728 "value" : "0x00"
1729 }
1730 ],
1731 "source_info" : {
1732 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001733 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001734 "column" : 8,
1735 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1736 }
1737 },
1738 {
1739 "op" : "assign",
1740 "parameters" : [
1741 {
1742 "type" : "field",
1743 "value" : ["vlan_tag", "pri"]
1744 },
1745 {
1746 "type" : "hexstr",
1747 "value" : "0x00"
1748 }
1749 ],
1750 "source_info" : {
1751 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001752 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001753 "column" : 8,
1754 "source_fragment" : "hdr.vlan_tag.pri = 0"
1755 }
1756 },
1757 {
1758 "op" : "assign",
1759 "parameters" : [
1760 {
1761 "type" : "field",
1762 "value" : ["vlan_tag", "ether_type"]
1763 },
1764 {
Yi Tseng1d842672017-11-28 16:06:52 -08001765 "type" : "field",
1766 "value" : ["ethernet", "ether_type"]
1767 }
1768 ],
1769 "source_info" : {
1770 "filename" : "./include/control/filtering.p4",
1771 "line" : 42,
1772 "column" : 8,
1773 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1774 }
1775 },
1776 {
1777 "op" : "assign",
1778 "parameters" : [
1779 {
1780 "type" : "field",
1781 "value" : ["ethernet", "ether_type"]
1782 },
1783 {
Yi Tsengbe342052017-11-03 10:21:23 -07001784 "type" : "hexstr",
1785 "value" : "0x8100"
1786 }
1787 ],
1788 "source_info" : {
1789 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001790 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001791 "column" : 31,
1792 "source_fragment" : "0x8100; ..."
1793 }
1794 },
1795 {
1796 "op" : "assign",
1797 "parameters" : [
1798 {
1799 "type" : "field",
1800 "value" : ["vlan_tag", "vlan_id"]
1801 },
1802 {
1803 "type" : "runtime_data",
1804 "value" : 0
1805 }
1806 ],
1807 "source_info" : {
1808 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001809 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001810 "column" : 8,
1811 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1812 }
1813 },
1814 {
1815 "op" : "assign",
1816 "parameters" : [
1817 {
1818 "type" : "field",
1819 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1820 },
1821 {
1822 "type" : "expression",
1823 "value" : {
1824 "type" : "expression",
1825 "value" : {
1826 "op" : "b2d",
1827 "left" : null,
1828 "right" : {
1829 "type" : "bool",
1830 "value" : true
1831 }
1832 }
1833 }
1834 }
1835 ],
1836 "source_info" : {
1837 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001838 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07001839 "column" : 8,
1840 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1841 }
1842 }
1843 ]
1844 },
1845 {
1846 "name" : "filtering.set_forwarding_type",
Yi Tseng1d842672017-11-28 16:06:52 -08001847 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07001848 "runtime_data" : [
1849 {
1850 "name" : "fwd_type",
1851 "bitwidth" : 3
1852 }
1853 ],
1854 "primitives" : [
1855 {
1856 "op" : "assign",
1857 "parameters" : [
1858 {
1859 "type" : "field",
1860 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1861 },
1862 {
1863 "type" : "runtime_data",
1864 "value" : 0
1865 }
1866 ],
1867 "source_info" : {
1868 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001869 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07001870 "column" : 8,
1871 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1872 }
1873 }
1874 ]
1875 },
1876 {
Yi Tseng1d842672017-11-28 16:06:52 -08001877 "name" : "forwarding.drop",
1878 "id" : 15,
1879 "runtime_data" : [],
1880 "primitives" : [
1881 {
1882 "op" : "drop",
1883 "parameters" : [],
1884 "source_info" : {
1885 "filename" : "./include/control/forwarding.p4",
1886 "line" : 31,
1887 "column" : 8,
1888 "source_fragment" : "mark_to_drop()"
1889 }
1890 }
1891 ]
1892 },
1893 {
Yi Tsengbe342052017-11-03 10:21:23 -07001894 "name" : "forwarding.set_next_id",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001895 "id" : 16,
1896 "runtime_data" : [
1897 {
1898 "name" : "next_id",
1899 "bitwidth" : 32
1900 }
1901 ],
1902 "primitives" : [
1903 {
1904 "op" : "assign",
1905 "parameters" : [
1906 {
1907 "type" : "field",
1908 "value" : ["scalars", "fabric_metadata_t.next_id"]
1909 },
1910 {
1911 "type" : "runtime_data",
1912 "value" : 0
1913 }
1914 ],
1915 "source_info" : {
1916 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001917 "line" : 35,
Yi Tsengf55eaa82017-11-29 15:51:28 -08001918 "column" : 8,
1919 "source_fragment" : "fabric_metadata.next_id = next_id"
1920 }
1921 }
1922 ]
1923 },
1924 {
1925 "name" : "forwarding.set_next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07001926 "id" : 17,
1927 "runtime_data" : [
1928 {
1929 "name" : "next_id",
1930 "bitwidth" : 32
1931 }
1932 ],
1933 "primitives" : [
1934 {
1935 "op" : "assign",
1936 "parameters" : [
1937 {
1938 "type" : "field",
1939 "value" : ["scalars", "fabric_metadata_t.next_id"]
1940 },
1941 {
1942 "type" : "runtime_data",
1943 "value" : 0
1944 }
1945 ],
1946 "source_info" : {
1947 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001948 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001949 "column" : 8,
1950 "source_fragment" : "fabric_metadata.next_id = next_id"
1951 }
1952 }
1953 ]
1954 },
1955 {
1956 "name" : "forwarding.set_next_id",
1957 "id" : 18,
1958 "runtime_data" : [
1959 {
1960 "name" : "next_id",
1961 "bitwidth" : 32
1962 }
1963 ],
1964 "primitives" : [
1965 {
1966 "op" : "assign",
1967 "parameters" : [
1968 {
1969 "type" : "field",
1970 "value" : ["scalars", "fabric_metadata_t.next_id"]
1971 },
1972 {
1973 "type" : "runtime_data",
1974 "value" : 0
1975 }
1976 ],
1977 "source_info" : {
1978 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001979 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001980 "column" : 8,
1981 "source_fragment" : "fabric_metadata.next_id = next_id"
1982 }
1983 }
1984 ]
1985 },
1986 {
1987 "name" : "forwarding.set_next_id",
1988 "id" : 19,
1989 "runtime_data" : [
1990 {
1991 "name" : "next_id",
1992 "bitwidth" : 32
1993 }
1994 ],
1995 "primitives" : [
1996 {
1997 "op" : "assign",
1998 "parameters" : [
1999 {
2000 "type" : "field",
2001 "value" : ["scalars", "fabric_metadata_t.next_id"]
2002 },
2003 {
2004 "type" : "runtime_data",
2005 "value" : 0
2006 }
2007 ],
2008 "source_info" : {
2009 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002010 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07002011 "column" : 8,
2012 "source_fragment" : "fabric_metadata.next_id = next_id"
2013 }
2014 }
2015 ]
2016 },
2017 {
2018 "name" : "forwarding.set_next_id",
2019 "id" : 20,
2020 "runtime_data" : [
2021 {
2022 "name" : "next_id",
2023 "bitwidth" : 32
2024 }
2025 ],
2026 "primitives" : [
2027 {
2028 "op" : "assign",
2029 "parameters" : [
2030 {
2031 "type" : "field",
2032 "value" : ["scalars", "fabric_metadata_t.next_id"]
2033 },
2034 {
2035 "type" : "runtime_data",
2036 "value" : 0
2037 }
2038 ],
2039 "source_info" : {
2040 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002041 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07002042 "column" : 8,
2043 "source_fragment" : "fabric_metadata.next_id = next_id"
2044 }
2045 }
2046 ]
2047 },
2048 {
2049 "name" : "forwarding.set_next_id",
2050 "id" : 21,
2051 "runtime_data" : [
2052 {
2053 "name" : "next_id",
2054 "bitwidth" : 32
2055 }
2056 ],
2057 "primitives" : [
2058 {
2059 "op" : "assign",
2060 "parameters" : [
2061 {
2062 "type" : "field",
2063 "value" : ["scalars", "fabric_metadata_t.next_id"]
2064 },
2065 {
2066 "type" : "runtime_data",
2067 "value" : 0
2068 }
2069 ],
2070 "source_info" : {
2071 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002072 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07002073 "column" : 8,
2074 "source_fragment" : "fabric_metadata.next_id = next_id"
2075 }
2076 }
2077 ]
2078 },
2079 {
Yi Tsengbe342052017-11-03 10:21:23 -07002080 "name" : "forwarding.pop_mpls_and_next",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002081 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07002082 "runtime_data" : [
2083 {
2084 "name" : "next_id",
2085 "bitwidth" : 32
2086 }
2087 ],
2088 "primitives" : [
2089 {
2090 "op" : "remove_header",
2091 "parameters" : [
2092 {
2093 "type" : "header",
2094 "value" : "mpls"
2095 }
2096 ],
2097 "source_info" : {
2098 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002099 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07002100 "column" : 8,
2101 "source_fragment" : "hdr.mpls.setInvalid()"
2102 }
2103 },
2104 {
2105 "op" : "assign",
2106 "parameters" : [
2107 {
2108 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07002109 "value" : ["scalars", "fabric_metadata_t.next_id"]
2110 },
2111 {
2112 "type" : "runtime_data",
2113 "value" : 0
2114 }
2115 ],
2116 "source_info" : {
2117 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002118 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07002119 "column" : 8,
2120 "source_fragment" : "fabric_metadata.next_id = next_id"
2121 }
2122 }
2123 ]
2124 },
2125 {
Yi Tsengbe342052017-11-03 10:21:23 -07002126 "name" : "forwarding.duplicate_to_controller",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002127 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07002128 "runtime_data" : [],
2129 "primitives" : [
2130 {
2131 "op" : "assign",
2132 "parameters" : [
2133 {
2134 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07002135 "value" : ["standard_metadata", "egress_spec"]
2136 },
2137 {
2138 "type" : "hexstr",
2139 "value" : "0x00ff"
2140 }
2141 ],
2142 "source_info" : {
2143 "filename" : "./include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002144 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07002145 "column" : 28,
2146 "source_fragment" : "255; ..."
2147 }
2148 }
2149 ]
2150 },
2151 {
Yi Tsengbe342052017-11-03 10:21:23 -07002152 "name" : "next.output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002153 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07002154 "runtime_data" : [
2155 {
2156 "name" : "port_num",
2157 "bitwidth" : 9
2158 }
2159 ],
2160 "primitives" : [
2161 {
2162 "op" : "assign",
2163 "parameters" : [
2164 {
2165 "type" : "field",
2166 "value" : ["standard_metadata", "egress_spec"]
2167 },
2168 {
2169 "type" : "runtime_data",
2170 "value" : 0
2171 }
2172 ],
2173 "source_info" : {
2174 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002175 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07002176 "column" : 8,
2177 "source_fragment" : "standard_metadata.egress_spec = port_num"
2178 }
Yi Tsengbe342052017-11-03 10:21:23 -07002179 }
2180 ]
2181 },
2182 {
2183 "name" : "next.set_vlan_output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002184 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07002185 "runtime_data" : [
2186 {
2187 "name" : "new_vlan_id",
2188 "bitwidth" : 12
2189 },
2190 {
2191 "name" : "port_num",
2192 "bitwidth" : 9
2193 }
2194 ],
2195 "primitives" : [
2196 {
2197 "op" : "assign",
2198 "parameters" : [
2199 {
2200 "type" : "field",
2201 "value" : ["vlan_tag", "vlan_id"]
2202 },
2203 {
2204 "type" : "runtime_data",
2205 "value" : 0
2206 }
2207 ],
2208 "source_info" : {
2209 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002210 "line" : 34,
Yi Tsengbe342052017-11-03 10:21:23 -07002211 "column" : 8,
2212 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
2213 }
2214 },
2215 {
2216 "op" : "assign",
2217 "parameters" : [
2218 {
2219 "type" : "field",
2220 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
2221 },
2222 {
2223 "type" : "expression",
2224 "value" : {
2225 "type" : "expression",
2226 "value" : {
2227 "op" : "b2d",
2228 "left" : null,
2229 "right" : {
2230 "type" : "bool",
2231 "value" : false
2232 }
2233 }
2234 }
2235 }
2236 ],
2237 "source_info" : {
2238 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002239 "line" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07002240 "column" : 8,
2241 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
2242 }
2243 },
2244 {
2245 "op" : "assign",
2246 "parameters" : [
2247 {
2248 "type" : "field",
2249 "value" : ["standard_metadata", "egress_spec"]
2250 },
2251 {
2252 "type" : "runtime_data",
2253 "value" : 1
2254 }
2255 ],
2256 "source_info" : {
2257 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002258 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07002259 "column" : 8,
2260 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2261 }
Yi Tsengbe342052017-11-03 10:21:23 -07002262 }
2263 ]
2264 },
2265 {
2266 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002267 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07002268 "runtime_data" : [
2269 {
2270 "name" : "port_num",
2271 "bitwidth" : 9
2272 },
2273 {
2274 "name" : "smac",
2275 "bitwidth" : 48
2276 },
2277 {
2278 "name" : "dmac",
2279 "bitwidth" : 48
2280 }
2281 ],
2282 "primitives" : [
2283 {
2284 "op" : "assign",
2285 "parameters" : [
2286 {
2287 "type" : "field",
2288 "value" : ["ethernet", "src_addr"]
2289 },
2290 {
2291 "type" : "runtime_data",
2292 "value" : 1
2293 }
2294 ],
2295 "source_info" : {
2296 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002297 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07002298 "column" : 8,
2299 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2300 }
2301 },
2302 {
2303 "op" : "assign",
2304 "parameters" : [
2305 {
2306 "type" : "field",
2307 "value" : ["ethernet", "dst_addr"]
2308 },
2309 {
2310 "type" : "runtime_data",
2311 "value" : 2
2312 }
2313 ],
2314 "source_info" : {
2315 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002316 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002317 "column" : 8,
2318 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2319 }
2320 },
2321 {
2322 "op" : "assign",
2323 "parameters" : [
2324 {
2325 "type" : "field",
2326 "value" : ["standard_metadata", "egress_spec"]
2327 },
2328 {
2329 "type" : "runtime_data",
2330 "value" : 0
2331 }
2332 ],
2333 "source_info" : {
2334 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002335 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07002336 "column" : 8,
2337 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2338 }
Yi Tsengbe342052017-11-03 10:21:23 -07002339 }
2340 ]
2341 },
2342 {
2343 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002344 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07002345 "runtime_data" : [
2346 {
2347 "name" : "port_num",
2348 "bitwidth" : 9
2349 },
2350 {
2351 "name" : "smac",
2352 "bitwidth" : 48
2353 },
2354 {
2355 "name" : "dmac",
2356 "bitwidth" : 48
2357 }
2358 ],
2359 "primitives" : [
2360 {
2361 "op" : "assign",
2362 "parameters" : [
2363 {
2364 "type" : "field",
2365 "value" : ["ethernet", "src_addr"]
2366 },
2367 {
2368 "type" : "runtime_data",
2369 "value" : 1
2370 }
2371 ],
2372 "source_info" : {
2373 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002374 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07002375 "column" : 8,
2376 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2377 }
2378 },
2379 {
2380 "op" : "assign",
2381 "parameters" : [
2382 {
2383 "type" : "field",
2384 "value" : ["ethernet", "dst_addr"]
2385 },
2386 {
2387 "type" : "runtime_data",
2388 "value" : 2
2389 }
2390 ],
2391 "source_info" : {
2392 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002393 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002394 "column" : 8,
2395 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2396 }
2397 },
2398 {
2399 "op" : "assign",
2400 "parameters" : [
2401 {
2402 "type" : "field",
2403 "value" : ["standard_metadata", "egress_spec"]
2404 },
2405 {
2406 "type" : "runtime_data",
2407 "value" : 0
2408 }
2409 ],
2410 "source_info" : {
2411 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002412 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07002413 "column" : 8,
2414 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2415 }
Yi Tsengbe342052017-11-03 10:21:23 -07002416 }
2417 ]
2418 },
2419 {
2420 "name" : "next.set_mcast_group",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002421 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002422 "runtime_data" : [
2423 {
2424 "name" : "gid",
2425 "bitwidth" : 16
2426 },
2427 {
2428 "name" : "smac",
2429 "bitwidth" : 48
2430 }
2431 ],
2432 "primitives" : [
2433 {
2434 "op" : "assign",
2435 "parameters" : [
2436 {
2437 "type" : "field",
2438 "value" : ["standard_metadata", "mcast_grp"]
2439 },
2440 {
2441 "type" : "runtime_data",
2442 "value" : 0
2443 }
2444 ],
2445 "source_info" : {
2446 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002447 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -07002448 "column" : 8,
2449 "source_fragment" : "standard_metadata.mcast_grp = gid"
2450 }
2451 },
2452 {
2453 "op" : "assign",
2454 "parameters" : [
2455 {
2456 "type" : "field",
2457 "value" : ["ethernet", "src_addr"]
2458 },
2459 {
2460 "type" : "runtime_data",
2461 "value" : 1
2462 }
2463 ],
2464 "source_info" : {
2465 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002466 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07002467 "column" : 8,
2468 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2469 }
2470 }
2471 ]
2472 },
2473 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002474 "name" : "next.mpls_routing_v4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002475 "id" : 29,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002476 "runtime_data" : [
2477 {
2478 "name" : "port_num",
2479 "bitwidth" : 9
2480 },
2481 {
2482 "name" : "smac",
2483 "bitwidth" : 48
2484 },
2485 {
2486 "name" : "dmac",
2487 "bitwidth" : 48
2488 },
2489 {
2490 "name" : "label",
2491 "bitwidth" : 20
2492 }
2493 ],
2494 "primitives" : [
2495 {
2496 "op" : "assign",
2497 "parameters" : [
2498 {
2499 "type" : "field",
2500 "value" : ["ethernet", "src_addr"]
2501 },
2502 {
2503 "type" : "runtime_data",
2504 "value" : 1
2505 }
2506 ],
2507 "source_info" : {
2508 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002509 "line" : 42,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002510 "column" : 8,
2511 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2512 }
2513 },
2514 {
2515 "op" : "assign",
2516 "parameters" : [
2517 {
2518 "type" : "field",
2519 "value" : ["ethernet", "dst_addr"]
2520 },
2521 {
2522 "type" : "runtime_data",
2523 "value" : 2
2524 }
2525 ],
2526 "source_info" : {
2527 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002528 "line" : 46,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002529 "column" : 8,
2530 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2531 }
2532 },
2533 {
2534 "op" : "assign",
2535 "parameters" : [
2536 {
2537 "type" : "field",
2538 "value" : ["standard_metadata", "egress_spec"]
2539 },
2540 {
2541 "type" : "runtime_data",
2542 "value" : 0
2543 }
2544 ],
2545 "source_info" : {
2546 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002547 "line" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002548 "column" : 8,
2549 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2550 }
2551 },
2552 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002553 "op" : "add_header",
2554 "parameters" : [
2555 {
2556 "type" : "header",
2557 "value" : "mpls"
2558 }
2559 ],
2560 "source_info" : {
2561 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002562 "line" : 62,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002563 "column" : 8,
2564 "source_fragment" : "hdr.mpls.setValid()"
2565 }
2566 },
2567 {
2568 "op" : "assign",
2569 "parameters" : [
2570 {
2571 "type" : "field",
2572 "value" : ["ethernet", "ether_type"]
2573 },
2574 {
2575 "type" : "hexstr",
2576 "value" : "0x8847"
2577 }
2578 ],
2579 "source_info" : {
2580 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002581 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002582 "column" : 31,
2583 "source_fragment" : "0x8847; ..."
2584 }
2585 },
2586 {
2587 "op" : "assign",
2588 "parameters" : [
2589 {
2590 "type" : "field",
2591 "value" : ["mpls", "label"]
2592 },
2593 {
2594 "type" : "runtime_data",
2595 "value" : 3
2596 }
2597 ],
2598 "source_info" : {
2599 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002600 "line" : 64,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002601 "column" : 8,
2602 "source_fragment" : "hdr.mpls.label = label; ..."
2603 }
2604 },
2605 {
2606 "op" : "assign",
2607 "parameters" : [
2608 {
2609 "type" : "field",
2610 "value" : ["mpls", "tc"]
2611 },
2612 {
Yi Tseng1d842672017-11-28 16:06:52 -08002613 "type" : "hexstr",
2614 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002615 }
2616 ],
2617 "source_info" : {
2618 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002619 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002620 "column" : 8,
2621 "source_fragment" : "hdr.mpls.tc = tc; ..."
2622 }
2623 },
2624 {
2625 "op" : "assign",
2626 "parameters" : [
2627 {
2628 "type" : "field",
2629 "value" : ["mpls", "bos"]
2630 },
2631 {
2632 "type" : "hexstr",
2633 "value" : "0x01"
2634 }
2635 ],
2636 "source_info" : {
2637 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002638 "line" : 66,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002639 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002640 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002641 }
2642 },
2643 {
2644 "op" : "assign",
2645 "parameters" : [
2646 {
2647 "type" : "field",
2648 "value" : ["mpls", "ttl"]
2649 },
2650 {
2651 "type" : "hexstr",
2652 "value" : "0x40"
2653 }
2654 ],
2655 "source_info" : {
2656 "filename" : "./include/control/../header.p4",
2657 "line" : 19,
2658 "column" : 32,
2659 "source_fragment" : "64; ..."
2660 }
2661 }
2662 ]
2663 },
2664 {
2665 "name" : "next.mpls_routing_v6",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002666 "id" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002667 "runtime_data" : [
2668 {
2669 "name" : "port_num",
2670 "bitwidth" : 9
2671 },
2672 {
2673 "name" : "smac",
2674 "bitwidth" : 48
2675 },
2676 {
2677 "name" : "dmac",
2678 "bitwidth" : 48
2679 },
2680 {
2681 "name" : "label",
2682 "bitwidth" : 20
2683 }
2684 ],
2685 "primitives" : [
2686 {
2687 "op" : "assign",
2688 "parameters" : [
2689 {
2690 "type" : "field",
2691 "value" : ["ethernet", "src_addr"]
2692 },
2693 {
2694 "type" : "runtime_data",
2695 "value" : 1
2696 }
2697 ],
2698 "source_info" : {
2699 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002700 "line" : 42,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002701 "column" : 8,
2702 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2703 }
2704 },
2705 {
2706 "op" : "assign",
2707 "parameters" : [
2708 {
2709 "type" : "field",
2710 "value" : ["ethernet", "dst_addr"]
2711 },
2712 {
2713 "type" : "runtime_data",
2714 "value" : 2
2715 }
2716 ],
2717 "source_info" : {
2718 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002719 "line" : 46,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002720 "column" : 8,
2721 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2722 }
2723 },
2724 {
2725 "op" : "assign",
2726 "parameters" : [
2727 {
2728 "type" : "field",
2729 "value" : ["standard_metadata", "egress_spec"]
2730 },
2731 {
2732 "type" : "runtime_data",
2733 "value" : 0
2734 }
2735 ],
2736 "source_info" : {
2737 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002738 "line" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002739 "column" : 8,
2740 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2741 }
2742 },
2743 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002744 "op" : "add_header",
2745 "parameters" : [
2746 {
2747 "type" : "header",
2748 "value" : "mpls"
2749 }
2750 ],
2751 "source_info" : {
2752 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002753 "line" : 62,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002754 "column" : 8,
2755 "source_fragment" : "hdr.mpls.setValid()"
2756 }
2757 },
2758 {
2759 "op" : "assign",
2760 "parameters" : [
2761 {
2762 "type" : "field",
2763 "value" : ["ethernet", "ether_type"]
2764 },
2765 {
2766 "type" : "hexstr",
2767 "value" : "0x8847"
2768 }
2769 ],
2770 "source_info" : {
2771 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002772 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002773 "column" : 31,
2774 "source_fragment" : "0x8847; ..."
2775 }
2776 },
2777 {
2778 "op" : "assign",
2779 "parameters" : [
2780 {
2781 "type" : "field",
2782 "value" : ["mpls", "label"]
2783 },
2784 {
2785 "type" : "runtime_data",
2786 "value" : 3
2787 }
2788 ],
2789 "source_info" : {
2790 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002791 "line" : 64,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002792 "column" : 8,
2793 "source_fragment" : "hdr.mpls.label = label; ..."
2794 }
2795 },
2796 {
2797 "op" : "assign",
2798 "parameters" : [
2799 {
2800 "type" : "field",
2801 "value" : ["mpls", "tc"]
2802 },
2803 {
Yi Tseng1d842672017-11-28 16:06:52 -08002804 "type" : "hexstr",
2805 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002806 }
2807 ],
2808 "source_info" : {
2809 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002810 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002811 "column" : 8,
2812 "source_fragment" : "hdr.mpls.tc = tc; ..."
2813 }
2814 },
2815 {
2816 "op" : "assign",
2817 "parameters" : [
2818 {
2819 "type" : "field",
2820 "value" : ["mpls", "bos"]
2821 },
2822 {
2823 "type" : "hexstr",
2824 "value" : "0x01"
2825 }
2826 ],
2827 "source_info" : {
2828 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002829 "line" : 66,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002830 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002831 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002832 }
2833 },
2834 {
2835 "op" : "assign",
2836 "parameters" : [
2837 {
2838 "type" : "field",
2839 "value" : ["mpls", "ttl"]
2840 },
2841 {
2842 "type" : "hexstr",
2843 "value" : "0x40"
2844 }
2845 ],
2846 "source_info" : {
2847 "filename" : "./include/control/../header.p4",
2848 "line" : 19,
2849 "column" : 32,
2850 "source_fragment" : "64; ..."
2851 }
2852 }
2853 ]
2854 },
2855 {
Yi Tsengbe342052017-11-03 10:21:23 -07002856 "name" : "act",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002857 "id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07002858 "runtime_data" : [],
2859 "primitives" : [
2860 {
2861 "op" : "assign",
2862 "parameters" : [
2863 {
2864 "type" : "field",
2865 "value" : ["standard_metadata", "egress_spec"]
2866 },
2867 {
2868 "type" : "field",
2869 "value" : ["packet_out", "egress_port"]
2870 }
2871 ],
2872 "source_info" : {
2873 "filename" : "./include/control/packetio.p4",
2874 "line" : 26,
2875 "column" : 12,
2876 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2877 }
Yi Tseng1d842672017-11-28 16:06:52 -08002878 },
2879 {
2880 "op" : "remove_header",
2881 "parameters" : [
2882 {
2883 "type" : "header",
2884 "value" : "packet_out"
2885 }
2886 ],
2887 "source_info" : {
2888 "filename" : "./include/control/packetio.p4",
2889 "line" : 27,
2890 "column" : 12,
2891 "source_fragment" : "hdr.packet_out.setInvalid()"
2892 }
Yi Tsengbe342052017-11-03 10:21:23 -07002893 }
2894 ]
2895 },
2896 {
2897 "name" : "act_0",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002898 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002899 "runtime_data" : [],
2900 "primitives" : [
2901 {
2902 "op" : "assign",
2903 "parameters" : [
2904 {
2905 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002906 "value" : ["ethernet", "ether_type"]
2907 },
2908 {
2909 "type" : "hexstr",
2910 "value" : "0x0800"
2911 }
2912 ],
2913 "source_info" : {
2914 "filename" : "./include/control/../define.p4",
2915 "line" : 35,
2916 "column" : 31,
2917 "source_fragment" : "0x0800; ..."
2918 }
2919 },
2920 {
2921 "op" : "assign",
2922 "parameters" : [
2923 {
2924 "type" : "field",
2925 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2926 },
2927 {
2928 "type" : "hexstr",
2929 "value" : "0x0800"
2930 }
2931 ],
2932 "source_info" : {
2933 "filename" : "./include/control/../define.p4",
2934 "line" : 35,
2935 "column" : 31,
2936 "source_fragment" : "0x0800; ..."
2937 }
2938 }
2939 ]
2940 },
2941 {
2942 "name" : "act_1",
2943 "id" : 33,
2944 "runtime_data" : [],
2945 "primitives" : [
2946 {
2947 "op" : "assign",
2948 "parameters" : [
2949 {
2950 "type" : "field",
2951 "value" : ["ethernet", "ether_type"]
2952 },
2953 {
2954 "type" : "hexstr",
2955 "value" : "0x86dd"
2956 }
2957 ],
2958 "source_info" : {
2959 "filename" : "./include/control/../define.p4",
2960 "line" : 36,
2961 "column" : 31,
2962 "source_fragment" : "0x86dd; ..."
2963 }
2964 },
2965 {
2966 "op" : "assign",
2967 "parameters" : [
2968 {
2969 "type" : "field",
2970 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2971 },
2972 {
2973 "type" : "hexstr",
2974 "value" : "0x86dd"
2975 }
2976 ],
2977 "source_info" : {
2978 "filename" : "./include/control/../define.p4",
2979 "line" : 36,
2980 "column" : 31,
2981 "source_fragment" : "0x86dd; ..."
2982 }
2983 }
2984 ]
2985 },
2986 {
2987 "name" : "act_2",
2988 "id" : 34,
2989 "runtime_data" : [],
2990 "primitives" : [
2991 {
2992 "op" : "assign",
2993 "parameters" : [
2994 {
2995 "type" : "field",
2996 "value" : ["scalars", "next_tmp_0"]
2997 },
2998 {
2999 "type" : "expression",
3000 "value" : {
3001 "type" : "expression",
3002 "value" : {
3003 "op" : "b2d",
3004 "left" : null,
3005 "right" : {
3006 "type" : "bool",
3007 "value" : true
3008 }
3009 }
3010 }
3011 }
3012 ]
3013 }
3014 ]
3015 },
3016 {
3017 "name" : "act_3",
3018 "id" : 35,
3019 "runtime_data" : [],
3020 "primitives" : [
3021 {
3022 "op" : "assign",
3023 "parameters" : [
3024 {
3025 "type" : "field",
3026 "value" : ["scalars", "next_tmp_0"]
3027 },
3028 {
3029 "type" : "expression",
3030 "value" : {
3031 "type" : "expression",
3032 "value" : {
3033 "op" : "b2d",
3034 "left" : null,
3035 "right" : {
3036 "type" : "bool",
3037 "value" : false
3038 }
3039 }
3040 }
3041 }
3042 ]
3043 }
3044 ]
3045 },
3046 {
3047 "name" : "act_4",
3048 "id" : 36,
3049 "runtime_data" : [],
3050 "primitives" : [
3051 {
3052 "op" : "assign",
3053 "parameters" : [
3054 {
3055 "type" : "field",
3056 "value" : ["ipv4", "ttl"]
3057 },
3058 {
3059 "type" : "expression",
3060 "value" : {
3061 "type" : "expression",
3062 "value" : {
3063 "op" : "&",
3064 "left" : {
3065 "type" : "expression",
3066 "value" : {
3067 "op" : "+",
3068 "left" : {
3069 "type" : "field",
3070 "value" : ["ipv4", "ttl"]
3071 },
3072 "right" : {
3073 "type" : "hexstr",
3074 "value" : "0xff"
3075 }
3076 }
3077 },
3078 "right" : {
3079 "type" : "hexstr",
3080 "value" : "0xff"
3081 }
3082 }
3083 }
3084 }
3085 ],
3086 "source_info" : {
3087 "filename" : "./include/control/next.p4",
3088 "line" : 133,
3089 "column" : 20,
3090 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
3091 }
3092 }
3093 ]
3094 },
3095 {
3096 "name" : "act_5",
3097 "id" : 37,
3098 "runtime_data" : [],
3099 "primitives" : [
3100 {
3101 "op" : "assign",
3102 "parameters" : [
3103 {
3104 "type" : "field",
3105 "value" : ["ipv6", "hop_limit"]
3106 },
3107 {
3108 "type" : "expression",
3109 "value" : {
3110 "type" : "expression",
3111 "value" : {
3112 "op" : "&",
3113 "left" : {
3114 "type" : "expression",
3115 "value" : {
3116 "op" : "+",
3117 "left" : {
3118 "type" : "field",
3119 "value" : ["ipv6", "hop_limit"]
3120 },
3121 "right" : {
3122 "type" : "hexstr",
3123 "value" : "0xff"
3124 }
3125 }
3126 },
3127 "right" : {
3128 "type" : "hexstr",
3129 "value" : "0xff"
3130 }
3131 }
3132 }
3133 }
3134 ],
3135 "source_info" : {
3136 "filename" : "./include/control/next.p4",
3137 "line" : 136,
3138 "column" : 20,
3139 "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
3140 }
3141 }
3142 ]
3143 },
3144 {
3145 "name" : "act_6",
3146 "id" : 38,
3147 "runtime_data" : [],
3148 "primitives" : [
3149 {
3150 "op" : "assign",
3151 "parameters" : [
3152 {
3153 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07003154 "value" : ["scalars", "tmp_1"]
3155 },
3156 {
3157 "type" : "expression",
3158 "value" : {
3159 "type" : "expression",
3160 "value" : {
3161 "op" : "&",
3162 "left" : {
3163 "type" : "field",
3164 "value" : ["standard_metadata", "egress_spec"]
3165 },
3166 "right" : {
3167 "type" : "hexstr",
3168 "value" : "0xffffffff"
3169 }
3170 }
3171 }
3172 }
3173 ]
3174 },
3175 {
3176 "op" : "count",
3177 "parameters" : [
3178 {
3179 "type" : "counter_array",
3180 "value" : "port_counters_control.egress_port_counter"
3181 },
3182 {
3183 "type" : "field",
3184 "value" : ["scalars", "tmp_1"]
3185 }
3186 ],
3187 "source_info" : {
3188 "filename" : "./include/control/port_counter.p4",
3189 "line" : 28,
3190 "column" : 12,
3191 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
3192 }
3193 }
3194 ]
3195 },
3196 {
Yi Tseng1d842672017-11-28 16:06:52 -08003197 "name" : "act_7",
3198 "id" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07003199 "runtime_data" : [],
3200 "primitives" : [
3201 {
3202 "op" : "assign",
3203 "parameters" : [
3204 {
3205 "type" : "field",
3206 "value" : ["scalars", "tmp_2"]
3207 },
3208 {
3209 "type" : "expression",
3210 "value" : {
3211 "type" : "expression",
3212 "value" : {
3213 "op" : "&",
3214 "left" : {
3215 "type" : "field",
3216 "value" : ["standard_metadata", "ingress_port"]
3217 },
3218 "right" : {
3219 "type" : "hexstr",
3220 "value" : "0xffffffff"
3221 }
3222 }
3223 }
3224 }
3225 ]
3226 },
3227 {
3228 "op" : "count",
3229 "parameters" : [
3230 {
3231 "type" : "counter_array",
3232 "value" : "port_counters_control.ingress_port_counter"
3233 },
3234 {
3235 "type" : "field",
3236 "value" : ["scalars", "tmp_2"]
3237 }
3238 ],
3239 "source_info" : {
3240 "filename" : "./include/control/port_counter.p4",
3241 "line" : 31,
3242 "column" : 12,
3243 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
3244 }
3245 }
3246 ]
3247 },
3248 {
Yi Tseng1d842672017-11-28 16:06:52 -08003249 "name" : "act_8",
3250 "id" : 40,
3251 "runtime_data" : [],
3252 "primitives" : [
3253 {
3254 "op" : "assign",
3255 "parameters" : [
3256 {
3257 "type" : "field",
3258 "value" : ["ethernet", "ether_type"]
3259 },
3260 {
3261 "type" : "hexstr",
3262 "value" : "0x8847"
3263 }
3264 ],
3265 "source_info" : {
3266 "filename" : "./include/control/../define.p4",
3267 "line" : 33,
3268 "column" : 31,
3269 "source_fragment" : "0x8847; ..."
3270 }
3271 }
3272 ]
3273 },
3274 {
3275 "name" : "act_9",
3276 "id" : 41,
3277 "runtime_data" : [],
3278 "primitives" : [
3279 {
3280 "op" : "assign",
3281 "parameters" : [
3282 {
3283 "type" : "field",
3284 "value" : ["ethernet", "ether_type"]
3285 },
3286 {
3287 "type" : "field",
3288 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
3289 }
3290 ],
3291 "source_info" : {
3292 "filename" : "./include/control/next.p4",
3293 "line" : 156,
3294 "column" : 16,
3295 "source_fragment" : "hdr.ethernet.ether_type = fabric_metadata.original_ether_type"
3296 }
3297 }
3298 ]
3299 },
3300 {
3301 "name" : "act_10",
3302 "id" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07003303 "runtime_data" : [],
3304 "primitives" : [
3305 {
3306 "op" : "remove_header",
3307 "parameters" : [
3308 {
3309 "type" : "header",
3310 "value" : "vlan_tag"
3311 }
3312 ],
3313 "source_info" : {
3314 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003315 "line" : 158,
Yi Tsengbe342052017-11-03 10:21:23 -07003316 "column" : 12,
3317 "source_fragment" : "hdr.vlan_tag.setInvalid()"
3318 }
3319 }
3320 ]
3321 },
3322 {
Yi Tseng1d842672017-11-28 16:06:52 -08003323 "name" : "act_11",
3324 "id" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07003325 "runtime_data" : [],
3326 "primitives" : [
3327 {
3328 "op" : "add_header",
3329 "parameters" : [
3330 {
3331 "type" : "header",
3332 "value" : "packet_in"
3333 }
3334 ],
3335 "source_info" : {
3336 "filename" : "./include/control/packetio.p4",
3337 "line" : 39,
3338 "column" : 12,
3339 "source_fragment" : "hdr.packet_in.setValid()"
3340 }
3341 },
3342 {
3343 "op" : "assign",
3344 "parameters" : [
3345 {
3346 "type" : "field",
3347 "value" : ["packet_in", "ingress_port"]
3348 },
3349 {
3350 "type" : "field",
3351 "value" : ["standard_metadata", "ingress_port"]
3352 }
3353 ],
3354 "source_info" : {
3355 "filename" : "./include/control/packetio.p4",
3356 "line" : 40,
3357 "column" : 12,
3358 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
3359 }
3360 }
3361 ]
Yi Tsengbe342052017-11-03 10:21:23 -07003362 }
3363 ],
3364 "pipelines" : [
3365 {
3366 "name" : "ingress",
3367 "id" : 0,
3368 "source_info" : {
3369 "filename" : "fabric.p4",
3370 "line" : 29,
3371 "column" : 8,
3372 "source_fragment" : "FabricIngress"
3373 },
3374 "init_table" : "node_2",
3375 "tables" : [
3376 {
3377 "name" : "tbl_act",
3378 "id" : 0,
3379 "key" : [],
3380 "match_type" : "exact",
3381 "type" : "simple",
3382 "max_size" : 1024,
3383 "with_counters" : false,
3384 "support_timeout" : false,
3385 "direct_meters" : null,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003386 "action_ids" : [31],
Yi Tsengbe342052017-11-03 10:21:23 -07003387 "actions" : ["act"],
3388 "base_default_next" : null,
3389 "next_tables" : {
3390 "act" : null
3391 },
3392 "default_entry" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003393 "action_id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07003394 "action_const" : true,
3395 "action_data" : [],
3396 "action_entry_const" : true
3397 }
3398 },
3399 {
3400 "name" : "filtering.ingress_port_vlan",
3401 "id" : 1,
3402 "source_info" : {
3403 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003404 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07003405 "column" : 10,
3406 "source_fragment" : "ingress_port_vlan"
3407 },
3408 "key" : [
3409 {
3410 "match_type" : "exact",
3411 "target" : ["standard_metadata", "ingress_port"],
3412 "mask" : null
3413 },
3414 {
3415 "match_type" : "exact",
3416 "target" : ["vlan_tag", "$valid$"],
3417 "mask" : null
3418 },
3419 {
3420 "match_type" : "ternary",
3421 "target" : ["vlan_tag", "vlan_id"],
3422 "mask" : null
3423 }
3424 ],
3425 "match_type" : "ternary",
3426 "type" : "simple",
3427 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003428 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003429 "support_timeout" : false,
3430 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003431 "action_ids" : [13, 12, 0, 11],
3432 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "filtering.drop"],
Yi Tsengbe342052017-11-03 10:21:23 -07003433 "base_default_next" : "filtering.fwd_classifier",
3434 "next_tables" : {
3435 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
3436 "filtering.set_vlan" : "filtering.fwd_classifier",
3437 "nop" : "filtering.fwd_classifier",
Yi Tseng1d842672017-11-28 16:06:52 -08003438 "filtering.drop" : "filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07003439 },
3440 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003441 "action_id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003442 "action_const" : true,
3443 "action_data" : [],
3444 "action_entry_const" : true
3445 }
3446 },
3447 {
3448 "name" : "filtering.fwd_classifier",
3449 "id" : 2,
3450 "source_info" : {
3451 "filename" : "./include/control/filtering.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003452 "line" : 72,
Yi Tsengbe342052017-11-03 10:21:23 -07003453 "column" : 10,
3454 "source_fragment" : "fwd_classifier"
3455 },
3456 "key" : [
3457 {
3458 "match_type" : "exact",
3459 "target" : ["standard_metadata", "ingress_port"],
3460 "mask" : null
3461 },
3462 {
3463 "match_type" : "exact",
3464 "target" : ["ethernet", "dst_addr"],
3465 "mask" : null
3466 },
3467 {
3468 "match_type" : "exact",
Yi Tseng1d842672017-11-28 16:06:52 -08003469 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07003470 "mask" : null
3471 }
3472 ],
3473 "match_type" : "exact",
3474 "type" : "simple",
3475 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003476 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003477 "support_timeout" : false,
3478 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003479 "action_ids" : [14],
Yi Tsengbe342052017-11-03 10:21:23 -07003480 "actions" : ["filtering.set_forwarding_type"],
3481 "base_default_next" : "node_6",
3482 "next_tables" : {
3483 "filtering.set_forwarding_type" : "node_6"
3484 },
3485 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003486 "action_id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07003487 "action_const" : true,
3488 "action_data" : ["0x0"],
3489 "action_entry_const" : true
3490 }
3491 },
3492 {
3493 "name" : "forwarding.bridging",
3494 "id" : 3,
3495 "source_info" : {
3496 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003497 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07003498 "column" : 10,
3499 "source_fragment" : "bridging"
3500 },
3501 "key" : [
3502 {
3503 "match_type" : "exact",
3504 "target" : ["vlan_tag", "vlan_id"],
3505 "mask" : null
3506 },
3507 {
3508 "match_type" : "ternary",
3509 "target" : ["ethernet", "dst_addr"],
3510 "mask" : null
3511 }
3512 ],
3513 "match_type" : "ternary",
3514 "type" : "simple",
3515 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003516 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003517 "support_timeout" : false,
3518 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003519 "action_ids" : [16, 2],
3520 "actions" : ["forwarding.set_next_id", "NoAction"],
3521 "base_default_next" : "forwarding.acl",
3522 "next_tables" : {
3523 "forwarding.set_next_id" : "forwarding.acl",
3524 "NoAction" : "forwarding.acl"
3525 },
3526 "default_entry" : {
3527 "action_id" : 2,
3528 "action_const" : false,
3529 "action_data" : [],
3530 "action_entry_const" : false
3531 }
3532 },
3533 {
3534 "name" : "forwarding.mpls",
3535 "id" : 4,
3536 "source_info" : {
3537 "filename" : "./include/control/forwarding.p4",
3538 "line" : 58,
3539 "column" : 10,
3540 "source_fragment" : "mpls"
3541 },
3542 "key" : [
3543 {
3544 "match_type" : "exact",
3545 "target" : ["mpls", "label"],
3546 "mask" : null
3547 }
3548 ],
3549 "match_type" : "exact",
3550 "type" : "simple",
3551 "max_size" : 1024,
3552 "with_counters" : false,
3553 "support_timeout" : false,
3554 "direct_meters" : null,
3555 "action_ids" : [22, 3],
3556 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
3557 "base_default_next" : "node_10",
3558 "next_tables" : {
3559 "forwarding.pop_mpls_and_next" : "node_10",
3560 "NoAction" : "node_10"
3561 },
3562 "default_entry" : {
3563 "action_id" : 3,
3564 "action_const" : false,
3565 "action_data" : [],
3566 "action_entry_const" : false
3567 }
3568 },
3569 {
3570 "name" : "tbl_act_0",
3571 "id" : 5,
3572 "key" : [],
3573 "match_type" : "exact",
3574 "type" : "simple",
3575 "max_size" : 1024,
3576 "with_counters" : false,
3577 "support_timeout" : false,
3578 "direct_meters" : null,
3579 "action_ids" : [32],
3580 "actions" : ["act_0"],
3581 "base_default_next" : "forwarding.acl",
3582 "next_tables" : {
3583 "act_0" : "forwarding.acl"
3584 },
3585 "default_entry" : {
3586 "action_id" : 32,
3587 "action_const" : true,
3588 "action_data" : [],
3589 "action_entry_const" : true
3590 }
3591 },
3592 {
3593 "name" : "tbl_act_1",
3594 "id" : 6,
3595 "key" : [],
3596 "match_type" : "exact",
3597 "type" : "simple",
3598 "max_size" : 1024,
3599 "with_counters" : false,
3600 "support_timeout" : false,
3601 "direct_meters" : null,
3602 "action_ids" : [33],
3603 "actions" : ["act_1"],
3604 "base_default_next" : "forwarding.acl",
3605 "next_tables" : {
3606 "act_1" : "forwarding.acl"
3607 },
3608 "default_entry" : {
3609 "action_id" : 33,
3610 "action_const" : true,
3611 "action_data" : [],
3612 "action_entry_const" : true
3613 }
3614 },
3615 {
3616 "name" : "forwarding.unicast_v4",
3617 "id" : 7,
3618 "source_info" : {
3619 "filename" : "./include/control/forwarding.p4",
3620 "line" : 68,
3621 "column" : 10,
3622 "source_fragment" : "unicast_v4"
3623 },
3624 "key" : [
3625 {
3626 "match_type" : "lpm",
3627 "target" : ["ipv4", "dst_addr"],
3628 "mask" : null
3629 }
3630 ],
3631 "match_type" : "lpm",
3632 "type" : "simple",
3633 "max_size" : 1024,
3634 "with_counters" : false,
3635 "support_timeout" : false,
3636 "direct_meters" : null,
3637 "action_ids" : [17, 4],
Yi Tsengbe342052017-11-03 10:21:23 -07003638 "actions" : ["forwarding.set_next_id", "NoAction"],
3639 "base_default_next" : "forwarding.acl",
3640 "next_tables" : {
3641 "forwarding.set_next_id" : "forwarding.acl",
3642 "NoAction" : "forwarding.acl"
3643 },
3644 "default_entry" : {
3645 "action_id" : 4,
3646 "action_const" : false,
3647 "action_data" : [],
3648 "action_entry_const" : false
3649 }
3650 },
3651 {
Yi Tsengbe342052017-11-03 10:21:23 -07003652 "name" : "forwarding.multicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08003653 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003654 "source_info" : {
3655 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003656 "line" : 78,
Yi Tsengbe342052017-11-03 10:21:23 -07003657 "column" : 10,
3658 "source_fragment" : "multicast_v4"
3659 },
3660 "key" : [
3661 {
3662 "match_type" : "exact",
3663 "target" : ["vlan_tag", "vlan_id"],
3664 "mask" : null
3665 },
3666 {
3667 "match_type" : "lpm",
3668 "target" : ["ipv4", "dst_addr"],
3669 "mask" : null
3670 }
3671 ],
3672 "match_type" : "lpm",
3673 "type" : "simple",
3674 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003675 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003676 "support_timeout" : false,
3677 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003678 "action_ids" : [18, 5],
Yi Tsengbe342052017-11-03 10:21:23 -07003679 "actions" : ["forwarding.set_next_id", "NoAction"],
3680 "base_default_next" : "forwarding.acl",
3681 "next_tables" : {
3682 "forwarding.set_next_id" : "forwarding.acl",
3683 "NoAction" : "forwarding.acl"
3684 },
3685 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003686 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003687 "action_const" : false,
3688 "action_data" : [],
3689 "action_entry_const" : false
3690 }
3691 },
3692 {
3693 "name" : "forwarding.unicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08003694 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003695 "source_info" : {
3696 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003697 "line" : 89,
Yi Tsengbe342052017-11-03 10:21:23 -07003698 "column" : 10,
3699 "source_fragment" : "unicast_v6"
3700 },
3701 "key" : [
3702 {
3703 "match_type" : "lpm",
3704 "target" : ["ipv6", "dst_addr"],
3705 "mask" : null
3706 }
3707 ],
3708 "match_type" : "lpm",
3709 "type" : "simple",
3710 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003711 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003712 "support_timeout" : false,
3713 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003714 "action_ids" : [19, 6],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003715 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07003716 "base_default_next" : "forwarding.acl",
3717 "next_tables" : {
3718 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003719 "NoAction" : "forwarding.acl"
3720 },
3721 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003722 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003723 "action_const" : false,
3724 "action_data" : [],
3725 "action_entry_const" : false
3726 }
3727 },
3728 {
3729 "name" : "forwarding.multicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08003730 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003731 "source_info" : {
3732 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003733 "line" : 99,
Yi Tsengbe342052017-11-03 10:21:23 -07003734 "column" : 10,
3735 "source_fragment" : "multicast_v6"
3736 },
3737 "key" : [
3738 {
3739 "match_type" : "exact",
3740 "target" : ["vlan_tag", "vlan_id"],
3741 "mask" : null
3742 },
3743 {
3744 "match_type" : "lpm",
3745 "target" : ["ipv6", "dst_addr"],
3746 "mask" : null
3747 }
3748 ],
3749 "match_type" : "lpm",
3750 "type" : "simple",
3751 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003752 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003753 "support_timeout" : false,
3754 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003755 "action_ids" : [20, 7],
Yi Tsengbe342052017-11-03 10:21:23 -07003756 "actions" : ["forwarding.set_next_id", "NoAction"],
3757 "base_default_next" : "forwarding.acl",
3758 "next_tables" : {
3759 "forwarding.set_next_id" : "forwarding.acl",
3760 "NoAction" : "forwarding.acl"
3761 },
3762 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003763 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003764 "action_const" : false,
3765 "action_data" : [],
3766 "action_entry_const" : false
3767 }
3768 },
3769 {
3770 "name" : "forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003771 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003772 "source_info" : {
3773 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003774 "line" : 110,
Yi Tsengbe342052017-11-03 10:21:23 -07003775 "column" : 10,
3776 "source_fragment" : "acl"
3777 },
3778 "key" : [
3779 {
3780 "match_type" : "ternary",
3781 "target" : ["standard_metadata", "ingress_port"],
3782 "mask" : null
3783 },
3784 {
3785 "match_type" : "ternary",
3786 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3787 "mask" : null
3788 },
3789 {
3790 "match_type" : "ternary",
Yi Tseng1d842672017-11-28 16:06:52 -08003791 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3792 "mask" : null
3793 },
3794 {
3795 "match_type" : "ternary",
3796 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3797 "mask" : null
3798 },
3799 {
3800 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003801 "target" : ["ethernet", "dst_addr"],
3802 "mask" : null
3803 },
3804 {
3805 "match_type" : "ternary",
3806 "target" : ["ethernet", "src_addr"],
3807 "mask" : null
3808 },
3809 {
3810 "match_type" : "ternary",
Yi Tseng1d842672017-11-28 16:06:52 -08003811 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07003812 "mask" : null
3813 },
3814 {
3815 "match_type" : "ternary",
3816 "target" : ["vlan_tag", "vlan_id"],
3817 "mask" : null
3818 },
3819 {
3820 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003821 "target" : ["mpls", "bos"],
3822 "mask" : null
3823 },
3824 {
3825 "match_type" : "ternary",
3826 "target" : ["mpls", "label"],
3827 "mask" : null
3828 },
3829 {
3830 "match_type" : "ternary",
3831 "target" : ["ipv4", "src_addr"],
3832 "mask" : null
3833 },
3834 {
3835 "match_type" : "ternary",
3836 "target" : ["ipv4", "dst_addr"],
3837 "mask" : null
3838 },
3839 {
3840 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003841 "target" : ["ipv6", "src_addr"],
3842 "mask" : null
3843 },
3844 {
3845 "match_type" : "ternary",
3846 "target" : ["ipv6", "dst_addr"],
3847 "mask" : null
3848 },
3849 {
3850 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003851 "target" : ["icmp", "icmp_type"],
3852 "mask" : null
3853 },
3854 {
3855 "match_type" : "ternary",
3856 "target" : ["icmp", "icmp_code"],
3857 "mask" : null
3858 }
3859 ],
3860 "match_type" : "ternary",
3861 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003862 "max_size" : 256,
3863 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003864 "support_timeout" : false,
3865 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003866 "action_ids" : [21, 23, 15, 1],
3867 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "forwarding.drop", "nop"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003868 "base_default_next" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07003869 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003870 "forwarding.set_next_id" : "next.simple",
3871 "forwarding.duplicate_to_controller" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003872 "forwarding.drop" : "next.simple",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003873 "nop" : "next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07003874 },
3875 "default_entry" : {
3876 "action_id" : 1,
3877 "action_const" : true,
3878 "action_data" : [],
3879 "action_entry_const" : true
3880 }
3881 },
3882 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003883 "name" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003884 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003885 "source_info" : {
3886 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08003887 "line" : 86,
Yi Tsengbe342052017-11-03 10:21:23 -07003888 "column" : 10,
3889 "source_fragment" : "simple"
3890 },
3891 "key" : [
3892 {
3893 "match_type" : "exact",
3894 "target" : ["scalars", "fabric_metadata_t.next_id"],
3895 "mask" : null
3896 }
3897 ],
3898 "match_type" : "exact",
3899 "type" : "simple",
3900 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003901 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003902 "support_timeout" : false,
3903 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003904 "action_ids" : [24, 25, 26, 8],
Yi Tsengbe342052017-11-03 10:21:23 -07003905 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003906 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003907 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003908 "__HIT__" : "tbl_act_2",
3909 "__MISS__" : "tbl_act_3"
Yi Tsengbe342052017-11-03 10:21:23 -07003910 },
3911 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003912 "action_id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003913 "action_const" : false,
3914 "action_data" : [],
3915 "action_entry_const" : false
3916 }
3917 },
3918 {
Yi Tseng1d842672017-11-28 16:06:52 -08003919 "name" : "tbl_act_2",
3920 "id" : 13,
3921 "key" : [],
3922 "match_type" : "exact",
3923 "type" : "simple",
3924 "max_size" : 1024,
3925 "with_counters" : false,
3926 "support_timeout" : false,
3927 "direct_meters" : null,
3928 "action_ids" : [34],
3929 "actions" : ["act_2"],
3930 "base_default_next" : "node_25",
3931 "next_tables" : {
3932 "act_2" : "node_25"
3933 },
3934 "default_entry" : {
3935 "action_id" : 34,
3936 "action_const" : true,
3937 "action_data" : [],
3938 "action_entry_const" : true
3939 }
3940 },
3941 {
3942 "name" : "tbl_act_3",
3943 "id" : 14,
3944 "key" : [],
3945 "match_type" : "exact",
3946 "type" : "simple",
3947 "max_size" : 1024,
3948 "with_counters" : false,
3949 "support_timeout" : false,
3950 "direct_meters" : null,
3951 "action_ids" : [35],
3952 "actions" : ["act_3"],
3953 "base_default_next" : "node_25",
3954 "next_tables" : {
3955 "act_3" : "node_25"
3956 },
3957 "default_entry" : {
3958 "action_id" : 35,
3959 "action_const" : true,
3960 "action_data" : [],
3961 "action_entry_const" : true
3962 }
3963 },
3964 {
3965 "name" : "tbl_act_4",
3966 "id" : 15,
3967 "key" : [],
3968 "match_type" : "exact",
3969 "type" : "simple",
3970 "max_size" : 1024,
3971 "with_counters" : false,
3972 "support_timeout" : false,
3973 "direct_meters" : null,
3974 "action_ids" : [36],
3975 "actions" : ["act_4"],
3976 "base_default_next" : "next.hashed",
3977 "next_tables" : {
3978 "act_4" : "next.hashed"
3979 },
3980 "default_entry" : {
3981 "action_id" : 36,
3982 "action_const" : true,
3983 "action_data" : [],
3984 "action_entry_const" : true
3985 }
3986 },
3987 {
3988 "name" : "tbl_act_5",
3989 "id" : 16,
3990 "key" : [],
3991 "match_type" : "exact",
3992 "type" : "simple",
3993 "max_size" : 1024,
3994 "with_counters" : false,
3995 "support_timeout" : false,
3996 "direct_meters" : null,
3997 "action_ids" : [37],
3998 "actions" : ["act_5"],
3999 "base_default_next" : "next.hashed",
4000 "next_tables" : {
4001 "act_5" : "next.hashed"
4002 },
4003 "default_entry" : {
4004 "action_id" : 37,
4005 "action_const" : true,
4006 "action_data" : [],
4007 "action_entry_const" : true
4008 }
4009 },
4010 {
Yi Tsengbe342052017-11-03 10:21:23 -07004011 "name" : "next.hashed",
Yi Tseng1d842672017-11-28 16:06:52 -08004012 "id" : 17,
Yi Tsengbe342052017-11-03 10:21:23 -07004013 "source_info" : {
4014 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004015 "line" : 98,
Yi Tsengbe342052017-11-03 10:21:23 -07004016 "column" : 10,
4017 "source_fragment" : "hashed"
4018 },
4019 "key" : [
4020 {
4021 "match_type" : "exact",
4022 "target" : ["scalars", "fabric_metadata_t.next_id"],
4023 "mask" : null
4024 }
4025 ],
4026 "match_type" : "exact",
4027 "type" : "indirect_ws",
4028 "action_profile" : "next.ecmp_selector",
4029 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08004030 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07004031 "support_timeout" : false,
4032 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004033 "action_ids" : [27, 29, 30, 9],
Yi Tseng1b154bd2017-11-20 17:48:19 -08004034 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08004035 "base_default_next" : "next.broadcast",
Yi Tsengbe342052017-11-03 10:21:23 -07004036 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08004037 "next.l3_routing" : "next.broadcast",
4038 "next.mpls_routing_v4" : "next.broadcast",
4039 "next.mpls_routing_v6" : "next.broadcast",
4040 "NoAction" : "next.broadcast"
Yi Tsengbe342052017-11-03 10:21:23 -07004041 }
4042 },
4043 {
4044 "name" : "next.broadcast",
Yi Tseng1d842672017-11-28 16:06:52 -08004045 "id" : 18,
Yi Tsengbe342052017-11-03 10:21:23 -07004046 "source_info" : {
4047 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004048 "line" : 120,
Yi Tsengbe342052017-11-03 10:21:23 -07004049 "column" : 10,
4050 "source_fragment" : "broadcast"
4051 },
4052 "key" : [
4053 {
4054 "match_type" : "exact",
4055 "target" : ["scalars", "fabric_metadata_t.next_id"],
4056 "mask" : null
4057 }
4058 ],
4059 "match_type" : "exact",
4060 "type" : "simple",
4061 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08004062 "with_counters" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07004063 "support_timeout" : false,
4064 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004065 "action_ids" : [28, 10],
Yi Tsengbe342052017-11-03 10:21:23 -07004066 "actions" : ["next.set_mcast_group", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08004067 "base_default_next" : "node_33",
Yi Tsengbe342052017-11-03 10:21:23 -07004068 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004069 "next.set_mcast_group" : "node_33",
4070 "NoAction" : "node_33"
Yi Tsengbe342052017-11-03 10:21:23 -07004071 },
4072 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004073 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07004074 "action_const" : false,
4075 "action_data" : [],
4076 "action_entry_const" : false
4077 }
4078 },
4079 {
Yi Tseng1d842672017-11-28 16:06:52 -08004080 "name" : "tbl_act_6",
4081 "id" : 19,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004082 "key" : [],
4083 "match_type" : "exact",
4084 "type" : "simple",
4085 "max_size" : 1024,
4086 "with_counters" : false,
4087 "support_timeout" : false,
4088 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004089 "action_ids" : [38],
4090 "actions" : ["act_6"],
4091 "base_default_next" : "node_35",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004092 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004093 "act_6" : "node_35"
Yi Tsengf55eaa82017-11-29 15:51:28 -08004094 },
4095 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004096 "action_id" : 38,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004097 "action_const" : true,
4098 "action_data" : [],
4099 "action_entry_const" : true
4100 }
4101 },
4102 {
Yi Tseng1d842672017-11-28 16:06:52 -08004103 "name" : "tbl_act_7",
4104 "id" : 20,
Yi Tsengbe342052017-11-03 10:21:23 -07004105 "key" : [],
4106 "match_type" : "exact",
4107 "type" : "simple",
4108 "max_size" : 1024,
4109 "with_counters" : false,
4110 "support_timeout" : false,
4111 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004112 "action_ids" : [39],
4113 "actions" : ["act_7"],
Yi Tsengbe342052017-11-03 10:21:23 -07004114 "base_default_next" : null,
4115 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004116 "act_7" : null
Yi Tsengbe342052017-11-03 10:21:23 -07004117 },
4118 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004119 "action_id" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07004120 "action_const" : true,
4121 "action_data" : [],
4122 "action_entry_const" : true
4123 }
4124 }
4125 ],
4126 "action_profiles" : [
4127 {
4128 "name" : "next.ecmp_selector",
4129 "id" : 0,
4130 "max_size" : 64,
4131 "selector" : {
4132 "algo" : "crc16",
4133 "input" : [
4134 {
4135 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08004136 "value" : ["ethernet", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07004137 },
4138 {
4139 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08004140 "value" : ["ethernet", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07004141 },
4142 {
4143 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08004144 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07004145 },
4146 {
4147 "type" : "field",
4148 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
4149 },
4150 {
4151 "type" : "field",
4152 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
4153 }
4154 ]
4155 }
4156 }
4157 ],
4158 "conditionals" : [
4159 {
4160 "name" : "node_2",
4161 "id" : 0,
4162 "source_info" : {
4163 "filename" : "./include/control/packetio.p4",
4164 "line" : 25,
4165 "column" : 12,
4166 "source_fragment" : "hdr.packet_out.isValid()"
4167 },
4168 "expression" : {
4169 "type" : "expression",
4170 "value" : {
4171 "op" : "==",
4172 "left" : {
4173 "type" : "field",
4174 "value" : ["packet_out", "$valid$"]
4175 },
4176 "right" : {
4177 "type" : "hexstr",
4178 "value" : "0x01"
4179 }
4180 }
4181 },
4182 "true_next" : "tbl_act",
4183 "false_next" : "filtering.ingress_port_vlan"
4184 },
4185 {
4186 "name" : "node_6",
4187 "id" : 1,
4188 "source_info" : {
4189 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004190 "line" : 143,
Yi Tsengbe342052017-11-03 10:21:23 -07004191 "column" : 11,
4192 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
4193 },
4194 "expression" : {
4195 "type" : "expression",
4196 "value" : {
4197 "op" : "==",
4198 "left" : {
4199 "type" : "field",
4200 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4201 },
4202 "right" : {
4203 "type" : "hexstr",
4204 "value" : "0x00"
4205 }
4206 }
4207 },
4208 "true_next" : "forwarding.bridging",
4209 "false_next" : "node_8"
4210 },
4211 {
4212 "name" : "node_8",
4213 "id" : 2,
4214 "source_info" : {
4215 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004216 "line" : 144,
Yi Tsengbe342052017-11-03 10:21:23 -07004217 "column" : 17,
4218 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
4219 },
4220 "expression" : {
4221 "type" : "expression",
4222 "value" : {
4223 "op" : "==",
4224 "left" : {
4225 "type" : "field",
4226 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4227 },
4228 "right" : {
4229 "type" : "hexstr",
4230 "value" : "0x01"
4231 }
4232 }
4233 },
4234 "true_next" : "forwarding.mpls",
Yi Tseng1d842672017-11-28 16:06:52 -08004235 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07004236 },
4237 {
4238 "name" : "node_10",
4239 "id" : 3,
4240 "source_info" : {
4241 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004242 "line" : 146,
4243 "column" : 16,
4244 "source_fragment" : "hdr.ipv4.isValid()"
4245 },
4246 "expression" : {
4247 "type" : "expression",
4248 "value" : {
4249 "op" : "==",
4250 "left" : {
4251 "type" : "field",
4252 "value" : ["ipv4", "$valid$"]
4253 },
4254 "right" : {
4255 "type" : "hexstr",
4256 "value" : "0x01"
4257 }
4258 }
4259 },
4260 "true_next" : "tbl_act_0",
4261 "false_next" : "tbl_act_1"
4262 },
4263 {
4264 "name" : "node_13",
4265 "id" : 4,
4266 "source_info" : {
4267 "filename" : "./include/control/forwarding.p4",
4268 "line" : 154,
Yi Tsengbe342052017-11-03 10:21:23 -07004269 "column" : 17,
4270 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
4271 },
4272 "expression" : {
4273 "type" : "expression",
4274 "value" : {
4275 "op" : "==",
4276 "left" : {
4277 "type" : "field",
4278 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4279 },
4280 "right" : {
4281 "type" : "hexstr",
4282 "value" : "0x02"
4283 }
4284 }
4285 },
4286 "true_next" : "forwarding.unicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08004287 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07004288 },
4289 {
Yi Tseng1d842672017-11-28 16:06:52 -08004290 "name" : "node_15",
4291 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07004292 "source_info" : {
4293 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004294 "line" : 155,
Yi Tsengbe342052017-11-03 10:21:23 -07004295 "column" : 17,
4296 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
4297 },
4298 "expression" : {
4299 "type" : "expression",
4300 "value" : {
4301 "op" : "==",
4302 "left" : {
4303 "type" : "field",
4304 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4305 },
4306 "right" : {
4307 "type" : "hexstr",
4308 "value" : "0x03"
4309 }
4310 }
4311 },
4312 "true_next" : "forwarding.multicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08004313 "false_next" : "node_17"
Yi Tsengbe342052017-11-03 10:21:23 -07004314 },
4315 {
Yi Tseng1d842672017-11-28 16:06:52 -08004316 "name" : "node_17",
4317 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07004318 "source_info" : {
4319 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004320 "line" : 156,
Yi Tsengbe342052017-11-03 10:21:23 -07004321 "column" : 17,
4322 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
4323 },
4324 "expression" : {
4325 "type" : "expression",
4326 "value" : {
4327 "op" : "==",
4328 "left" : {
4329 "type" : "field",
4330 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4331 },
4332 "right" : {
4333 "type" : "hexstr",
4334 "value" : "0x04"
4335 }
4336 }
4337 },
4338 "true_next" : "forwarding.unicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08004339 "false_next" : "node_19"
Yi Tsengbe342052017-11-03 10:21:23 -07004340 },
4341 {
Yi Tseng1d842672017-11-28 16:06:52 -08004342 "name" : "node_19",
4343 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07004344 "source_info" : {
4345 "filename" : "./include/control/forwarding.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004346 "line" : 157,
Yi Tsengbe342052017-11-03 10:21:23 -07004347 "column" : 17,
4348 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
4349 },
4350 "expression" : {
4351 "type" : "expression",
4352 "value" : {
4353 "op" : "==",
4354 "left" : {
4355 "type" : "field",
4356 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4357 },
4358 "right" : {
4359 "type" : "hexstr",
4360 "value" : "0x05"
4361 }
4362 }
4363 },
4364 "true_next" : "forwarding.multicast_v6",
4365 "false_next" : "forwarding.acl"
4366 },
4367 {
Yi Tseng1d842672017-11-28 16:06:52 -08004368 "name" : "node_25",
4369 "id" : 8,
4370 "expression" : {
4371 "type" : "expression",
4372 "value" : {
4373 "op" : "d2b",
4374 "left" : null,
4375 "right" : {
4376 "type" : "field",
4377 "value" : ["scalars", "next_tmp_0"]
4378 }
4379 }
4380 },
4381 "true_next" : "node_26",
4382 "false_next" : "next.hashed"
4383 },
4384 {
4385 "name" : "node_26",
4386 "id" : 9,
4387 "source_info" : {
4388 "filename" : "./include/control/next.p4",
4389 "line" : 131,
4390 "column" : 17,
4391 "source_fragment" : "hdr.mpls.isValid()"
4392 },
4393 "expression" : {
4394 "type" : "expression",
4395 "value" : {
4396 "op" : "!=",
4397 "left" : {
4398 "type" : "field",
4399 "value" : ["mpls", "$valid$"]
4400 },
4401 "right" : {
4402 "type" : "hexstr",
4403 "value" : "0x01"
4404 }
4405 }
4406 },
4407 "true_next" : "node_27",
4408 "false_next" : "next.hashed"
4409 },
4410 {
4411 "name" : "node_27",
4412 "id" : 10,
4413 "source_info" : {
4414 "filename" : "./include/control/next.p4",
4415 "line" : 132,
4416 "column" : 19,
4417 "source_fragment" : "hdr.ipv4.isValid()"
4418 },
4419 "expression" : {
4420 "type" : "expression",
4421 "value" : {
4422 "op" : "==",
4423 "left" : {
4424 "type" : "field",
4425 "value" : ["ipv4", "$valid$"]
4426 },
4427 "right" : {
4428 "type" : "hexstr",
4429 "value" : "0x01"
4430 }
4431 }
4432 },
4433 "true_next" : "tbl_act_4",
4434 "false_next" : "node_29"
4435 },
4436 {
4437 "name" : "node_29",
4438 "id" : 11,
4439 "source_info" : {
4440 "filename" : "./include/control/next.p4",
4441 "line" : 135,
4442 "column" : 25,
4443 "source_fragment" : "hdr.ipv6.isValid()"
4444 },
4445 "expression" : {
4446 "type" : "expression",
4447 "value" : {
4448 "op" : "==",
4449 "left" : {
4450 "type" : "field",
4451 "value" : ["ipv6", "$valid$"]
4452 },
4453 "right" : {
4454 "type" : "hexstr",
4455 "value" : "0x01"
4456 }
4457 }
4458 },
4459 "true_next" : "tbl_act_5",
4460 "false_next" : "next.hashed"
4461 },
4462 {
4463 "name" : "node_33",
4464 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07004465 "source_info" : {
4466 "filename" : "./include/control/port_counter.p4",
4467 "line" : 27,
4468 "column" : 12,
4469 "source_fragment" : "standard_metadata.egress_spec < 511"
4470 },
4471 "expression" : {
4472 "type" : "expression",
4473 "value" : {
4474 "op" : "<",
4475 "left" : {
4476 "type" : "field",
4477 "value" : ["standard_metadata", "egress_spec"]
4478 },
4479 "right" : {
4480 "type" : "hexstr",
4481 "value" : "0x01ff"
4482 }
4483 }
4484 },
Yi Tseng1d842672017-11-28 16:06:52 -08004485 "true_next" : "tbl_act_6",
4486 "false_next" : "node_35"
Yi Tsengbe342052017-11-03 10:21:23 -07004487 },
4488 {
Yi Tseng1d842672017-11-28 16:06:52 -08004489 "name" : "node_35",
4490 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07004491 "source_info" : {
4492 "filename" : "./include/control/port_counter.p4",
4493 "line" : 30,
4494 "column" : 12,
4495 "source_fragment" : "standard_metadata.ingress_port < 511"
4496 },
4497 "expression" : {
4498 "type" : "expression",
4499 "value" : {
4500 "op" : "<",
4501 "left" : {
4502 "type" : "field",
4503 "value" : ["standard_metadata", "ingress_port"]
4504 },
4505 "right" : {
4506 "type" : "hexstr",
4507 "value" : "0x01ff"
4508 }
4509 }
4510 },
4511 "false_next" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004512 "true_next" : "tbl_act_7"
Yi Tsengbe342052017-11-03 10:21:23 -07004513 }
4514 ]
4515 },
4516 {
4517 "name" : "egress",
4518 "id" : 1,
4519 "source_info" : {
4520 "filename" : "fabric.p4",
4521 "line" : 48,
4522 "column" : 8,
4523 "source_fragment" : "FabricEgress"
4524 },
Yi Tseng1d842672017-11-28 16:06:52 -08004525 "init_table" : "node_39",
Yi Tsengbe342052017-11-03 10:21:23 -07004526 "tables" : [
4527 {
Yi Tseng1d842672017-11-28 16:06:52 -08004528 "name" : "tbl_act_8",
4529 "id" : 21,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004530 "key" : [],
4531 "match_type" : "exact",
4532 "type" : "simple",
4533 "max_size" : 1024,
4534 "with_counters" : false,
4535 "support_timeout" : false,
4536 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004537 "action_ids" : [40],
4538 "actions" : ["act_8"],
4539 "base_default_next" : "tbl_act_10",
Yi Tsengf55eaa82017-11-29 15:51:28 -08004540 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004541 "act_8" : "tbl_act_10"
Yi Tsengf55eaa82017-11-29 15:51:28 -08004542 },
4543 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004544 "action_id" : 40,
Yi Tsengf55eaa82017-11-29 15:51:28 -08004545 "action_const" : true,
4546 "action_data" : [],
4547 "action_entry_const" : true
4548 }
4549 },
4550 {
Yi Tseng1d842672017-11-28 16:06:52 -08004551 "name" : "tbl_act_9",
4552 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07004553 "key" : [],
4554 "match_type" : "exact",
4555 "type" : "simple",
4556 "max_size" : 1024,
4557 "with_counters" : false,
4558 "support_timeout" : false,
4559 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004560 "action_ids" : [41],
4561 "actions" : ["act_9"],
4562 "base_default_next" : "tbl_act_10",
Yi Tsengbe342052017-11-03 10:21:23 -07004563 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004564 "act_9" : "tbl_act_10"
Yi Tsengbe342052017-11-03 10:21:23 -07004565 },
4566 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004567 "action_id" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07004568 "action_const" : true,
4569 "action_data" : [],
4570 "action_entry_const" : true
4571 }
4572 },
4573 {
Yi Tseng1d842672017-11-28 16:06:52 -08004574 "name" : "tbl_act_10",
4575 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07004576 "key" : [],
4577 "match_type" : "exact",
4578 "type" : "simple",
4579 "max_size" : 1024,
4580 "with_counters" : false,
4581 "support_timeout" : false,
4582 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004583 "action_ids" : [42],
4584 "actions" : ["act_10"],
4585 "base_default_next" : "node_44",
4586 "next_tables" : {
4587 "act_10" : "node_44"
4588 },
4589 "default_entry" : {
4590 "action_id" : 42,
4591 "action_const" : true,
4592 "action_data" : [],
4593 "action_entry_const" : true
4594 }
4595 },
4596 {
4597 "name" : "tbl_act_11",
4598 "id" : 24,
4599 "key" : [],
4600 "match_type" : "exact",
4601 "type" : "simple",
4602 "max_size" : 1024,
4603 "with_counters" : false,
4604 "support_timeout" : false,
4605 "direct_meters" : null,
4606 "action_ids" : [43],
4607 "actions" : ["act_11"],
Yi Tsengbe342052017-11-03 10:21:23 -07004608 "base_default_next" : null,
4609 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004610 "act_11" : null
Yi Tsengbe342052017-11-03 10:21:23 -07004611 },
4612 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004613 "action_id" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07004614 "action_const" : true,
4615 "action_data" : [],
4616 "action_entry_const" : true
4617 }
4618 }
4619 ],
4620 "action_profiles" : [],
4621 "conditionals" : [
4622 {
Yi Tseng1d842672017-11-28 16:06:52 -08004623 "name" : "node_39",
4624 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07004625 "source_info" : {
4626 "filename" : "./include/control/next.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08004627 "line" : 152,
Yi Tsengbe342052017-11-03 10:21:23 -07004628 "column" : 12,
4629 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
4630 },
4631 "expression" : {
4632 "type" : "expression",
4633 "value" : {
4634 "op" : "d2b",
4635 "left" : null,
4636 "right" : {
4637 "type" : "field",
4638 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
4639 }
4640 }
4641 },
Yi Tseng1d842672017-11-28 16:06:52 -08004642 "true_next" : "node_40",
4643 "false_next" : "node_44"
Yi Tsengbe342052017-11-03 10:21:23 -07004644 },
4645 {
Yi Tseng1d842672017-11-28 16:06:52 -08004646 "name" : "node_40",
4647 "id" : 15,
4648 "source_info" : {
4649 "filename" : "./include/control/next.p4",
4650 "line" : 153,
4651 "column" : 16,
4652 "source_fragment" : "hdr.mpls.isValid()"
4653 },
4654 "expression" : {
4655 "type" : "expression",
4656 "value" : {
4657 "op" : "==",
4658 "left" : {
4659 "type" : "field",
4660 "value" : ["mpls", "$valid$"]
4661 },
4662 "right" : {
4663 "type" : "hexstr",
4664 "value" : "0x01"
4665 }
4666 }
4667 },
4668 "true_next" : "tbl_act_8",
4669 "false_next" : "tbl_act_9"
4670 },
4671 {
4672 "name" : "node_44",
4673 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07004674 "source_info" : {
4675 "filename" : "./include/control/packetio.p4",
4676 "line" : 38,
4677 "column" : 12,
4678 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
4679 },
4680 "expression" : {
4681 "type" : "expression",
4682 "value" : {
4683 "op" : "==",
4684 "left" : {
4685 "type" : "field",
4686 "value" : ["standard_metadata", "egress_port"]
4687 },
4688 "right" : {
4689 "type" : "hexstr",
4690 "value" : "0x00ff"
4691 }
4692 }
4693 },
4694 "false_next" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004695 "true_next" : "tbl_act_11"
Yi Tsengbe342052017-11-03 10:21:23 -07004696 }
4697 ]
4698 }
4699 ],
4700 "checksums" : [
4701 {
4702 "name" : "cksum",
4703 "id" : 0,
4704 "target" : ["ipv4", "hdr_checksum"],
4705 "type" : "generic",
4706 "calculation" : "calc"
4707 },
4708 {
4709 "name" : "cksum_0",
4710 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07004711 "target" : ["ipv4", "hdr_checksum"],
4712 "type" : "generic",
Yi Tsengf73a5532017-11-17 15:58:57 -08004713 "calculation" : "calc_0"
Yi Tsengbe342052017-11-03 10:21:23 -07004714 }
4715 ],
4716 "force_arith" : [],
4717 "extern_instances" : [],
4718 "field_aliases" : [
4719 [
4720 "queueing_metadata.enq_timestamp",
4721 ["standard_metadata", "enq_timestamp"]
4722 ],
4723 [
4724 "queueing_metadata.enq_qdepth",
4725 ["standard_metadata", "enq_qdepth"]
4726 ],
4727 [
4728 "queueing_metadata.deq_timedelta",
4729 ["standard_metadata", "deq_timedelta"]
4730 ],
4731 [
4732 "queueing_metadata.deq_qdepth",
4733 ["standard_metadata", "deq_qdepth"]
4734 ],
4735 [
4736 "intrinsic_metadata.ingress_global_timestamp",
4737 ["standard_metadata", "ingress_global_timestamp"]
4738 ],
4739 [
4740 "intrinsic_metadata.lf_field_list",
4741 ["standard_metadata", "lf_field_list"]
4742 ],
4743 [
4744 "intrinsic_metadata.mcast_grp",
4745 ["standard_metadata", "mcast_grp"]
4746 ],
4747 [
4748 "intrinsic_metadata.resubmit_flag",
4749 ["standard_metadata", "resubmit_flag"]
4750 ],
4751 [
4752 "intrinsic_metadata.egress_rid",
4753 ["standard_metadata", "egress_rid"]
4754 ]
4755 ]
4756}