blob: 2edfeeb0aed205e43a303354f5ae7ddb4051da19 [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 Tsengc6844f52017-12-19 11:58:25 -080012 ["tmp", 4, false],
13 ["tmp_0", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -070014 ["tmp_1", 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],
Yi Tsengc6844f52017-12-19 11:58:25 -080023 ["_padding_0", 7, false]
24 ]
25 },
26 {
27 "name" : "ethernet_t",
28 "id" : 1,
29 "fields" : [
30 ["dst_addr", 48, false],
31 ["src_addr", 48, false],
32 ["ether_type", 16, false]
33 ]
34 },
35 {
36 "name" : "vlan_tag_t",
37 "id" : 2,
38 "fields" : [
39 ["pri", 3, false],
40 ["cfi", 1, false],
41 ["vlan_id", 12, false],
42 ["ether_type", 16, false]
43 ]
44 },
45 {
46 "name" : "mpls_t",
47 "id" : 3,
48 "fields" : [
49 ["label", 20, false],
50 ["tc", 3, false],
51 ["bos", 1, false],
52 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070053 ]
54 },
55 {
56 "name" : "ipv4_t",
Yi Tsengc6844f52017-12-19 11:58:25 -080057 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -070058 "fields" : [
59 ["version", 4, false],
60 ["ihl", 4, false],
61 ["diffserv", 8, false],
62 ["total_len", 16, false],
63 ["identification", 16, false],
64 ["flags", 3, false],
65 ["frag_offset", 13, false],
66 ["ttl", 8, false],
67 ["protocol", 8, false],
68 ["hdr_checksum", 16, false],
69 ["src_addr", 32, false],
70 ["dst_addr", 32, false]
71 ]
72 },
73 {
Yi Tsengbe342052017-11-03 10:21:23 -070074 "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 Tsengbe342052017-11-03 10:21:23 -0700181 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800182 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700183 "header_type" : "scalars_0",
184 "metadata" : true,
185 "pi_omit" : true
186 },
187 {
188 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800189 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700190 "header_type" : "standard_metadata",
191 "metadata" : true,
192 "pi_omit" : true
193 },
194 {
195 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800196 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700197 "header_type" : "ethernet_t",
198 "metadata" : false,
199 "pi_omit" : true
200 },
201 {
202 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800203 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700204 "header_type" : "vlan_tag_t",
205 "metadata" : false,
206 "pi_omit" : true
207 },
208 {
209 "name" : "inner_vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800210 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700211 "header_type" : "vlan_tag_t",
212 "metadata" : false,
213 "pi_omit" : true
214 },
215 {
216 "name" : "mpls",
Yi Tsengc6844f52017-12-19 11:58:25 -0800217 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700218 "header_type" : "mpls_t",
219 "metadata" : false,
220 "pi_omit" : true
221 },
222 {
223 "name" : "ipv4",
Yi Tsengc6844f52017-12-19 11:58:25 -0800224 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700225 "header_type" : "ipv4_t",
226 "metadata" : false,
227 "pi_omit" : true
228 },
229 {
230 "name" : "ipv6",
Yi Tsengc6844f52017-12-19 11:58:25 -0800231 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700232 "header_type" : "ipv6_t",
233 "metadata" : false,
234 "pi_omit" : true
235 },
236 {
237 "name" : "arp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800238 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700239 "header_type" : "arp_t",
240 "metadata" : false,
241 "pi_omit" : true
242 },
243 {
244 "name" : "tcp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800245 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700246 "header_type" : "tcp_t",
247 "metadata" : false,
248 "pi_omit" : true
249 },
250 {
251 "name" : "udp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800252 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700253 "header_type" : "udp_t",
254 "metadata" : false,
255 "pi_omit" : true
256 },
257 {
258 "name" : "icmp",
Yi Tsengc6844f52017-12-19 11:58:25 -0800259 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700260 "header_type" : "icmp_t",
261 "metadata" : false,
262 "pi_omit" : true
263 },
264 {
265 "name" : "packet_out",
Yi Tsengc6844f52017-12-19 11:58:25 -0800266 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700267 "header_type" : "packet_out_header_t",
268 "metadata" : false,
269 "pi_omit" : true
270 },
271 {
272 "name" : "packet_in",
Yi Tsengc6844f52017-12-19 11:58:25 -0800273 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -0700274 "header_type" : "packet_in_header_t",
275 "metadata" : false,
276 "pi_omit" : true
277 }
278 ],
279 "header_stacks" : [],
280 "header_union_types" : [],
281 "header_unions" : [],
282 "header_union_stacks" : [],
283 "field_lists" : [],
284 "errors" : [
285 ["NoError", 0],
286 ["PacketTooShort", 1],
287 ["NoMatch", 2],
288 ["StackOutOfBounds", 3],
289 ["HeaderTooShort", 4],
290 ["ParserTimeout", 5]
291 ],
292 "enums" : [],
293 "parsers" : [
294 {
295 "name" : "parser",
296 "id" : 0,
297 "init_state" : "start",
298 "parse_states" : [
299 {
300 "name" : "start",
301 "id" : 0,
302 "parser_ops" : [],
303 "transitions" : [
304 {
305 "value" : "0x00ff",
306 "mask" : null,
307 "next_state" : "parse_packet_out"
308 },
309 {
310 "value" : "default",
311 "mask" : null,
312 "next_state" : "parse_ethernet"
313 }
314 ],
315 "transition_key" : [
316 {
317 "type" : "field",
318 "value" : ["standard_metadata", "ingress_port"]
319 }
320 ]
321 },
322 {
323 "name" : "parse_packet_out",
324 "id" : 1,
325 "parser_ops" : [
326 {
327 "parameters" : [
328 {
329 "type" : "regular",
330 "value" : "packet_out"
331 }
332 ],
333 "op" : "extract"
334 }
335 ],
336 "transitions" : [
337 {
338 "value" : "default",
339 "mask" : null,
340 "next_state" : "parse_ethernet"
341 }
342 ],
343 "transition_key" : []
344 },
345 {
346 "name" : "parse_ethernet",
347 "id" : 2,
348 "parser_ops" : [
349 {
350 "parameters" : [
351 {
352 "type" : "regular",
353 "value" : "ethernet"
354 }
355 ],
356 "op" : "extract"
Yi Tseng1d842672017-11-28 16:06:52 -0800357 },
358 {
359 "parameters" : [
360 {
361 "type" : "field",
362 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
363 },
364 {
365 "type" : "field",
366 "value" : ["ethernet", "ether_type"]
367 }
368 ],
369 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700370 }
371 ],
372 "transitions" : [
373 {
374 "value" : "0x9100",
375 "mask" : null,
376 "next_state" : "parse_vlan_tag"
377 },
378 {
379 "value" : "0x88a8",
380 "mask" : null,
381 "next_state" : "parse_vlan_tag"
382 },
383 {
384 "value" : "0x8100",
385 "mask" : null,
386 "next_state" : "parse_vlan_tag"
387 },
388 {
389 "value" : "0x8847",
390 "mask" : null,
391 "next_state" : "parse_mpls"
392 },
393 {
394 "value" : "0x0806",
395 "mask" : null,
396 "next_state" : "parse_arp"
397 },
398 {
399 "value" : "0x0800",
400 "mask" : null,
401 "next_state" : "parse_ipv4"
402 },
403 {
404 "value" : "0x86dd",
405 "mask" : null,
406 "next_state" : "parse_ipv6"
407 },
408 {
409 "value" : "default",
410 "mask" : null,
411 "next_state" : null
412 }
413 ],
414 "transition_key" : [
415 {
416 "type" : "field",
417 "value" : ["ethernet", "ether_type"]
418 }
419 ]
420 },
421 {
422 "name" : "parse_vlan_tag",
423 "id" : 3,
424 "parser_ops" : [
425 {
426 "parameters" : [
427 {
428 "type" : "regular",
429 "value" : "vlan_tag"
430 }
431 ],
432 "op" : "extract"
433 }
434 ],
435 "transitions" : [
436 {
437 "value" : "0x8100",
438 "mask" : null,
439 "next_state" : "parse_inner_vlan_tag"
440 },
441 {
442 "value" : "0x0806",
443 "mask" : null,
444 "next_state" : "parse_arp"
445 },
446 {
447 "value" : "0x0800",
448 "mask" : null,
449 "next_state" : "parse_ipv4"
450 },
451 {
452 "value" : "0x86dd",
453 "mask" : null,
454 "next_state" : "parse_ipv6"
455 },
456 {
457 "value" : "default",
458 "mask" : null,
459 "next_state" : null
460 }
461 ],
462 "transition_key" : [
463 {
464 "type" : "field",
465 "value" : ["vlan_tag", "ether_type"]
466 }
467 ]
468 },
469 {
470 "name" : "parse_inner_vlan_tag",
471 "id" : 4,
472 "parser_ops" : [
473 {
474 "parameters" : [
475 {
476 "type" : "regular",
477 "value" : "inner_vlan_tag"
478 }
479 ],
480 "op" : "extract"
481 }
482 ],
483 "transitions" : [
484 {
485 "value" : "0x0806",
486 "mask" : null,
487 "next_state" : "parse_arp"
488 },
489 {
490 "value" : "0x0800",
491 "mask" : null,
492 "next_state" : "parse_ipv4"
493 },
494 {
495 "value" : "0x86dd",
496 "mask" : null,
497 "next_state" : "parse_ipv6"
498 },
499 {
500 "value" : "default",
501 "mask" : null,
502 "next_state" : null
503 }
504 ],
505 "transition_key" : [
506 {
507 "type" : "field",
508 "value" : ["vlan_tag", "ether_type"]
509 }
510 ]
511 },
512 {
513 "name" : "parse_mpls",
514 "id" : 5,
515 "parser_ops" : [
516 {
517 "parameters" : [
518 {
519 "type" : "regular",
520 "value" : "mpls"
521 }
522 ],
523 "op" : "extract"
524 },
525 {
526 "parameters" : [
527 {
528 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800529 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700530 },
531 {
532 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800533 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700534 }
535 ],
536 "op" : "set"
537 }
538 ],
539 "transitions" : [
540 {
541 "value" : "0x04",
542 "mask" : null,
543 "next_state" : "parse_ipv4"
544 },
545 {
546 "value" : "0x06",
547 "mask" : null,
548 "next_state" : "parse_ipv6"
549 },
550 {
551 "value" : "default",
552 "mask" : null,
553 "next_state" : "parse_ethernet"
554 }
555 ],
556 "transition_key" : [
557 {
558 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800559 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700560 }
561 ]
562 },
563 {
564 "name" : "parse_ipv4",
565 "id" : 6,
566 "parser_ops" : [
567 {
568 "parameters" : [
569 {
570 "type" : "regular",
571 "value" : "ipv4"
572 }
573 ],
574 "op" : "extract"
575 },
576 {
577 "parameters" : [
578 {
579 "type" : "field",
580 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
581 },
582 {
583 "type" : "field",
584 "value" : ["ipv4", "protocol"]
585 }
586 ],
587 "op" : "set"
588 }
589 ],
590 "transitions" : [
591 {
592 "value" : "0x06",
593 "mask" : null,
594 "next_state" : "parse_tcp"
595 },
596 {
597 "value" : "0x11",
598 "mask" : null,
599 "next_state" : "parse_udp"
600 },
601 {
602 "value" : "0x01",
603 "mask" : null,
604 "next_state" : "parse_icmp"
605 },
606 {
607 "value" : "default",
608 "mask" : null,
609 "next_state" : null
610 }
611 ],
612 "transition_key" : [
613 {
614 "type" : "field",
615 "value" : ["ipv4", "protocol"]
616 }
617 ]
618 },
619 {
620 "name" : "parse_ipv6",
621 "id" : 7,
622 "parser_ops" : [
623 {
624 "parameters" : [
625 {
626 "type" : "regular",
627 "value" : "ipv6"
628 }
629 ],
630 "op" : "extract"
631 },
632 {
633 "parameters" : [
634 {
635 "type" : "field",
636 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
637 },
638 {
639 "type" : "field",
640 "value" : ["ipv6", "next_hdr"]
641 }
642 ],
643 "op" : "set"
644 }
645 ],
646 "transitions" : [
647 {
648 "value" : "0x06",
649 "mask" : null,
650 "next_state" : "parse_tcp"
651 },
652 {
653 "value" : "0x11",
654 "mask" : null,
655 "next_state" : "parse_udp"
656 },
657 {
658 "value" : "0x3a",
659 "mask" : null,
660 "next_state" : "parse_icmp"
661 },
662 {
663 "value" : "default",
664 "mask" : null,
665 "next_state" : null
666 }
667 ],
668 "transition_key" : [
669 {
670 "type" : "field",
671 "value" : ["ipv6", "next_hdr"]
672 }
673 ]
674 },
675 {
676 "name" : "parse_arp",
677 "id" : 8,
678 "parser_ops" : [
679 {
680 "parameters" : [
681 {
682 "type" : "regular",
683 "value" : "arp"
684 }
685 ],
686 "op" : "extract"
687 }
688 ],
689 "transitions" : [
690 {
691 "value" : "default",
692 "mask" : null,
693 "next_state" : null
694 }
695 ],
696 "transition_key" : []
697 },
698 {
699 "name" : "parse_tcp",
700 "id" : 9,
701 "parser_ops" : [
702 {
703 "parameters" : [
704 {
705 "type" : "regular",
706 "value" : "tcp"
707 }
708 ],
709 "op" : "extract"
710 },
711 {
712 "parameters" : [
713 {
714 "type" : "field",
715 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
716 },
717 {
718 "type" : "field",
719 "value" : ["tcp", "src_port"]
720 }
721 ],
722 "op" : "set"
723 },
724 {
725 "parameters" : [
726 {
727 "type" : "field",
728 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
729 },
730 {
731 "type" : "field",
732 "value" : ["tcp", "dst_port"]
733 }
734 ],
735 "op" : "set"
736 }
737 ],
738 "transitions" : [
739 {
740 "value" : "default",
741 "mask" : null,
742 "next_state" : null
743 }
744 ],
745 "transition_key" : []
746 },
747 {
748 "name" : "parse_udp",
749 "id" : 10,
750 "parser_ops" : [
751 {
752 "parameters" : [
753 {
754 "type" : "regular",
755 "value" : "udp"
756 }
757 ],
758 "op" : "extract"
759 },
760 {
761 "parameters" : [
762 {
763 "type" : "field",
764 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
765 },
766 {
767 "type" : "field",
768 "value" : ["udp", "src_port"]
769 }
770 ],
771 "op" : "set"
772 },
773 {
774 "parameters" : [
775 {
776 "type" : "field",
777 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
778 },
779 {
780 "type" : "field",
781 "value" : ["udp", "dst_port"]
782 }
783 ],
784 "op" : "set"
785 }
786 ],
787 "transitions" : [
788 {
789 "value" : "default",
790 "mask" : null,
791 "next_state" : null
792 }
793 ],
794 "transition_key" : []
795 },
796 {
797 "name" : "parse_icmp",
798 "id" : 11,
799 "parser_ops" : [
800 {
801 "parameters" : [
802 {
803 "type" : "regular",
804 "value" : "icmp"
805 }
806 ],
807 "op" : "extract"
808 }
809 ],
810 "transitions" : [
811 {
812 "value" : "default",
813 "mask" : null,
814 "next_state" : null
815 }
816 ],
817 "transition_key" : []
818 }
819 ]
820 }
821 ],
822 "deparsers" : [
823 {
824 "name" : "deparser",
825 "id" : 0,
826 "source_info" : {
827 "filename" : "./include/parser.p4",
Yi Tsengc6844f52017-12-19 11:58:25 -0800828 "line" : 137,
Yi Tsengbe342052017-11-03 10:21:23 -0700829 "column" : 8,
830 "source_fragment" : "FabricDeparser"
831 },
Yi Tsengf73a5532017-11-17 15:58:57 -0800832 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700833 }
834 ],
835 "meter_arrays" : [],
836 "counter_arrays" : [
837 {
Yi Tseng3a5731e2018-01-22 11:38:58 -0800838 "name" : "filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800839 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800840 "is_direct" : true,
841 "binding" : "filtering.ingress_port_vlan"
842 },
843 {
844 "name" : "filtering.fwd_classifier_counter",
845 "id" : 1,
846 "is_direct" : true,
847 "binding" : "filtering.fwd_classifier"
848 },
849 {
850 "name" : "forwarding.bridging_counter",
851 "id" : 2,
852 "is_direct" : true,
853 "binding" : "forwarding.bridging"
854 },
855 {
856 "name" : "forwarding.mpls_counter",
857 "id" : 3,
858 "is_direct" : true,
859 "binding" : "forwarding.mpls"
860 },
861 {
862 "name" : "forwarding.unicast_v4_counter",
863 "id" : 4,
864 "is_direct" : true,
865 "binding" : "forwarding.unicast_v4"
866 },
867 {
868 "name" : "forwarding.multicast_v4_counter",
869 "id" : 5,
870 "is_direct" : true,
871 "binding" : "forwarding.multicast_v4"
872 },
873 {
874 "name" : "forwarding.unicast_v6_counter",
875 "id" : 6,
876 "is_direct" : true,
877 "binding" : "forwarding.unicast_v6"
878 },
879 {
880 "name" : "forwarding.multicast_v6_counter",
881 "id" : 7,
882 "is_direct" : true,
883 "binding" : "forwarding.multicast_v6"
884 },
885 {
886 "name" : "forwarding.acl_counter",
887 "id" : 8,
888 "is_direct" : true,
889 "binding" : "forwarding.acl"
890 },
891 {
892 "name" : "next.simple_counter",
893 "id" : 9,
894 "is_direct" : true,
895 "binding" : "next.simple"
896 },
897 {
898 "name" : "next.hashed_counter",
899 "id" : 10,
900 "is_direct" : true,
901 "binding" : "next.hashed"
902 },
903 {
904 "name" : "next.broadcast_counter",
905 "id" : 11,
906 "is_direct" : true,
907 "binding" : "next.broadcast"
908 },
909 {
910 "name" : "port_counters_control.egress_port_counter",
911 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700912 "source_info" : {
913 "filename" : "./include/control/port_counter.p4",
914 "line" : 23,
915 "column" : 38,
916 "source_fragment" : "egress_port_counter"
917 },
918 "size" : 511,
919 "is_direct" : false
920 },
921 {
922 "name" : "port_counters_control.ingress_port_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800923 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -0700924 "source_info" : {
925 "filename" : "./include/control/port_counter.p4",
926 "line" : 24,
927 "column" : 38,
928 "source_fragment" : "ingress_port_counter"
929 },
930 "size" : 511,
931 "is_direct" : false
932 }
933 ],
934 "register_arrays" : [],
935 "calculations" : [
936 {
937 "name" : "calc",
938 "id" : 0,
939 "source_info" : {
940 "filename" : "./include/checksum.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800941 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700942 "column" : 8,
943 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
944 },
945 "algo" : "csum16",
946 "input" : [
947 {
948 "type" : "field",
949 "value" : ["ipv4", "version"]
950 },
951 {
952 "type" : "field",
953 "value" : ["ipv4", "ihl"]
954 },
955 {
956 "type" : "field",
957 "value" : ["ipv4", "diffserv"]
958 },
959 {
960 "type" : "field",
961 "value" : ["ipv4", "total_len"]
962 },
963 {
964 "type" : "field",
965 "value" : ["ipv4", "identification"]
966 },
967 {
968 "type" : "field",
969 "value" : ["ipv4", "flags"]
970 },
971 {
972 "type" : "field",
973 "value" : ["ipv4", "frag_offset"]
974 },
975 {
976 "type" : "field",
977 "value" : ["ipv4", "ttl"]
978 },
979 {
980 "type" : "field",
981 "value" : ["ipv4", "protocol"]
982 },
983 {
984 "type" : "field",
985 "value" : ["ipv4", "src_addr"]
986 },
987 {
988 "type" : "field",
989 "value" : ["ipv4", "dst_addr"]
990 }
991 ]
992 },
993 {
994 "name" : "calc_0",
995 "id" : 1,
996 "source_info" : {
997 "filename" : "./include/checksum.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800998 "line" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -0700999 "column" : 8,
1000 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
1001 },
1002 "algo" : "csum16",
1003 "input" : [
1004 {
1005 "type" : "field",
1006 "value" : ["ipv4", "version"]
1007 },
1008 {
1009 "type" : "field",
1010 "value" : ["ipv4", "ihl"]
1011 },
1012 {
1013 "type" : "field",
1014 "value" : ["ipv4", "diffserv"]
1015 },
1016 {
1017 "type" : "field",
1018 "value" : ["ipv4", "total_len"]
1019 },
1020 {
1021 "type" : "field",
1022 "value" : ["ipv4", "identification"]
1023 },
1024 {
1025 "type" : "field",
1026 "value" : ["ipv4", "flags"]
1027 },
1028 {
1029 "type" : "field",
1030 "value" : ["ipv4", "frag_offset"]
1031 },
1032 {
1033 "type" : "field",
1034 "value" : ["ipv4", "ttl"]
1035 },
1036 {
1037 "type" : "field",
1038 "value" : ["ipv4", "protocol"]
1039 },
1040 {
1041 "type" : "field",
1042 "value" : ["ipv4", "src_addr"]
1043 },
1044 {
1045 "type" : "field",
1046 "value" : ["ipv4", "dst_addr"]
1047 }
1048 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001049 }
1050 ],
1051 "learn_lists" : [],
1052 "actions" : [
1053 {
1054 "name" : "nop",
1055 "id" : 0,
1056 "runtime_data" : [],
1057 "primitives" : []
1058 },
1059 {
1060 "name" : "nop",
1061 "id" : 1,
1062 "runtime_data" : [],
1063 "primitives" : []
1064 },
1065 {
Yi Tseng1d842672017-11-28 16:06:52 -08001066 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001067 "id" : 2,
1068 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001069 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001070 },
1071 {
Yi Tseng1d842672017-11-28 16:06:52 -08001072 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001073 "id" : 3,
1074 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001075 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001076 },
1077 {
1078 "name" : "NoAction",
1079 "id" : 4,
1080 "runtime_data" : [],
1081 "primitives" : []
1082 },
1083 {
1084 "name" : "NoAction",
1085 "id" : 5,
1086 "runtime_data" : [],
1087 "primitives" : []
1088 },
1089 {
1090 "name" : "NoAction",
1091 "id" : 6,
1092 "runtime_data" : [],
1093 "primitives" : []
1094 },
1095 {
1096 "name" : "NoAction",
1097 "id" : 7,
1098 "runtime_data" : [],
1099 "primitives" : []
1100 },
1101 {
1102 "name" : "NoAction",
1103 "id" : 8,
1104 "runtime_data" : [],
1105 "primitives" : []
1106 },
1107 {
1108 "name" : "NoAction",
1109 "id" : 9,
1110 "runtime_data" : [],
1111 "primitives" : []
1112 },
1113 {
1114 "name" : "NoAction",
1115 "id" : 10,
1116 "runtime_data" : [],
1117 "primitives" : []
1118 },
1119 {
Yi Tseng1d842672017-11-28 16:06:52 -08001120 "name" : "filtering.drop",
Yi Tsengbe342052017-11-03 10:21:23 -07001121 "id" : 11,
1122 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001123 "primitives" : [
1124 {
1125 "op" : "drop",
1126 "parameters" : [],
1127 "source_info" : {
1128 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001129 "line" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -08001130 "column" : 8,
1131 "source_fragment" : "mark_to_drop()"
1132 }
1133 }
1134 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001135 },
1136 {
Yi Tsengbe342052017-11-03 10:21:23 -07001137 "name" : "filtering.set_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001138 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001139 "runtime_data" : [
1140 {
1141 "name" : "new_vlan_id",
1142 "bitwidth" : 12
1143 }
1144 ],
1145 "primitives" : [
1146 {
1147 "op" : "assign",
1148 "parameters" : [
1149 {
1150 "type" : "field",
1151 "value" : ["vlan_tag", "vlan_id"]
1152 },
1153 {
1154 "type" : "runtime_data",
1155 "value" : 0
1156 }
1157 ],
1158 "source_info" : {
1159 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001160 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001161 "column" : 8,
1162 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1163 }
1164 }
1165 ]
1166 },
1167 {
1168 "name" : "filtering.push_internal_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001169 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07001170 "runtime_data" : [
1171 {
1172 "name" : "new_vlan_id",
1173 "bitwidth" : 12
1174 }
1175 ],
1176 "primitives" : [
1177 {
1178 "op" : "add_header",
1179 "parameters" : [
1180 {
1181 "type" : "header",
1182 "value" : "vlan_tag"
1183 }
1184 ],
1185 "source_info" : {
1186 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001187 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001188 "column" : 8,
1189 "source_fragment" : "hdr.vlan_tag.setValid()"
1190 }
1191 },
1192 {
1193 "op" : "assign",
1194 "parameters" : [
1195 {
1196 "type" : "field",
1197 "value" : ["vlan_tag", "cfi"]
1198 },
1199 {
1200 "type" : "hexstr",
1201 "value" : "0x00"
1202 }
1203 ],
1204 "source_info" : {
1205 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001206 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001207 "column" : 8,
1208 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1209 }
1210 },
1211 {
1212 "op" : "assign",
1213 "parameters" : [
1214 {
1215 "type" : "field",
1216 "value" : ["vlan_tag", "pri"]
1217 },
1218 {
1219 "type" : "hexstr",
1220 "value" : "0x00"
1221 }
1222 ],
1223 "source_info" : {
1224 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001225 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001226 "column" : 8,
1227 "source_fragment" : "hdr.vlan_tag.pri = 0"
1228 }
1229 },
1230 {
1231 "op" : "assign",
1232 "parameters" : [
1233 {
1234 "type" : "field",
1235 "value" : ["vlan_tag", "ether_type"]
1236 },
1237 {
Yi Tseng1d842672017-11-28 16:06:52 -08001238 "type" : "field",
1239 "value" : ["ethernet", "ether_type"]
1240 }
1241 ],
1242 "source_info" : {
1243 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001244 "line" : 44,
Yi Tseng1d842672017-11-28 16:06:52 -08001245 "column" : 8,
1246 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1247 }
1248 },
1249 {
1250 "op" : "assign",
1251 "parameters" : [
1252 {
1253 "type" : "field",
1254 "value" : ["ethernet", "ether_type"]
1255 },
1256 {
Yi Tsengbe342052017-11-03 10:21:23 -07001257 "type" : "hexstr",
1258 "value" : "0x8100"
1259 }
1260 ],
1261 "source_info" : {
1262 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001263 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001264 "column" : 31,
1265 "source_fragment" : "0x8100; ..."
1266 }
1267 },
1268 {
1269 "op" : "assign",
1270 "parameters" : [
1271 {
1272 "type" : "field",
1273 "value" : ["vlan_tag", "vlan_id"]
1274 },
1275 {
1276 "type" : "runtime_data",
1277 "value" : 0
1278 }
1279 ],
1280 "source_info" : {
1281 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001282 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001283 "column" : 8,
1284 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1285 }
1286 },
1287 {
1288 "op" : "assign",
1289 "parameters" : [
1290 {
1291 "type" : "field",
1292 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1293 },
1294 {
1295 "type" : "expression",
1296 "value" : {
1297 "type" : "expression",
1298 "value" : {
1299 "op" : "b2d",
1300 "left" : null,
1301 "right" : {
1302 "type" : "bool",
1303 "value" : true
1304 }
1305 }
1306 }
1307 }
1308 ],
1309 "source_info" : {
1310 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001311 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001312 "column" : 8,
1313 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1314 }
1315 }
1316 ]
1317 },
1318 {
1319 "name" : "filtering.set_forwarding_type",
Yi Tseng1d842672017-11-28 16:06:52 -08001320 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07001321 "runtime_data" : [
1322 {
1323 "name" : "fwd_type",
1324 "bitwidth" : 3
1325 }
1326 ],
1327 "primitives" : [
1328 {
1329 "op" : "assign",
1330 "parameters" : [
1331 {
1332 "type" : "field",
1333 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1334 },
1335 {
1336 "type" : "runtime_data",
1337 "value" : 0
1338 }
1339 ],
1340 "source_info" : {
1341 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001342 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07001343 "column" : 8,
1344 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1345 }
1346 }
1347 ]
1348 },
1349 {
Yi Tseng1d842672017-11-28 16:06:52 -08001350 "name" : "forwarding.drop",
1351 "id" : 15,
1352 "runtime_data" : [],
1353 "primitives" : [
1354 {
1355 "op" : "drop",
1356 "parameters" : [],
1357 "source_info" : {
1358 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001359 "line" : 39,
Yi Tseng1d842672017-11-28 16:06:52 -08001360 "column" : 8,
1361 "source_fragment" : "mark_to_drop()"
1362 }
1363 }
1364 ]
1365 },
1366 {
Yi Tsengbe342052017-11-03 10:21:23 -07001367 "name" : "forwarding.set_next_id",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001368 "id" : 16,
1369 "runtime_data" : [
1370 {
1371 "name" : "next_id",
1372 "bitwidth" : 32
1373 }
1374 ],
1375 "primitives" : [
1376 {
1377 "op" : "assign",
1378 "parameters" : [
1379 {
1380 "type" : "field",
1381 "value" : ["scalars", "fabric_metadata_t.next_id"]
1382 },
1383 {
1384 "type" : "runtime_data",
1385 "value" : 0
1386 }
1387 ],
1388 "source_info" : {
1389 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001390 "line" : 43,
Yi Tsengf55eaa82017-11-29 15:51:28 -08001391 "column" : 8,
1392 "source_fragment" : "fabric_metadata.next_id = next_id"
1393 }
1394 }
1395 ]
1396 },
1397 {
1398 "name" : "forwarding.set_next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07001399 "id" : 17,
1400 "runtime_data" : [
1401 {
1402 "name" : "next_id",
1403 "bitwidth" : 32
1404 }
1405 ],
1406 "primitives" : [
1407 {
1408 "op" : "assign",
1409 "parameters" : [
1410 {
1411 "type" : "field",
1412 "value" : ["scalars", "fabric_metadata_t.next_id"]
1413 },
1414 {
1415 "type" : "runtime_data",
1416 "value" : 0
1417 }
1418 ],
1419 "source_info" : {
1420 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001421 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001422 "column" : 8,
1423 "source_fragment" : "fabric_metadata.next_id = next_id"
1424 }
1425 }
1426 ]
1427 },
1428 {
1429 "name" : "forwarding.set_next_id",
1430 "id" : 18,
1431 "runtime_data" : [
1432 {
1433 "name" : "next_id",
1434 "bitwidth" : 32
1435 }
1436 ],
1437 "primitives" : [
1438 {
1439 "op" : "assign",
1440 "parameters" : [
1441 {
1442 "type" : "field",
1443 "value" : ["scalars", "fabric_metadata_t.next_id"]
1444 },
1445 {
1446 "type" : "runtime_data",
1447 "value" : 0
1448 }
1449 ],
1450 "source_info" : {
1451 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001452 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001453 "column" : 8,
1454 "source_fragment" : "fabric_metadata.next_id = next_id"
1455 }
1456 }
1457 ]
1458 },
1459 {
1460 "name" : "forwarding.set_next_id",
1461 "id" : 19,
1462 "runtime_data" : [
1463 {
1464 "name" : "next_id",
1465 "bitwidth" : 32
1466 }
1467 ],
1468 "primitives" : [
1469 {
1470 "op" : "assign",
1471 "parameters" : [
1472 {
1473 "type" : "field",
1474 "value" : ["scalars", "fabric_metadata_t.next_id"]
1475 },
1476 {
1477 "type" : "runtime_data",
1478 "value" : 0
1479 }
1480 ],
1481 "source_info" : {
1482 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001483 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001484 "column" : 8,
1485 "source_fragment" : "fabric_metadata.next_id = next_id"
1486 }
1487 }
1488 ]
1489 },
1490 {
1491 "name" : "forwarding.set_next_id",
1492 "id" : 20,
1493 "runtime_data" : [
1494 {
1495 "name" : "next_id",
1496 "bitwidth" : 32
1497 }
1498 ],
1499 "primitives" : [
1500 {
1501 "op" : "assign",
1502 "parameters" : [
1503 {
1504 "type" : "field",
1505 "value" : ["scalars", "fabric_metadata_t.next_id"]
1506 },
1507 {
1508 "type" : "runtime_data",
1509 "value" : 0
1510 }
1511 ],
1512 "source_info" : {
1513 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001514 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001515 "column" : 8,
1516 "source_fragment" : "fabric_metadata.next_id = next_id"
1517 }
1518 }
1519 ]
1520 },
1521 {
1522 "name" : "forwarding.set_next_id",
1523 "id" : 21,
1524 "runtime_data" : [
1525 {
1526 "name" : "next_id",
1527 "bitwidth" : 32
1528 }
1529 ],
1530 "primitives" : [
1531 {
1532 "op" : "assign",
1533 "parameters" : [
1534 {
1535 "type" : "field",
1536 "value" : ["scalars", "fabric_metadata_t.next_id"]
1537 },
1538 {
1539 "type" : "runtime_data",
1540 "value" : 0
1541 }
1542 ],
1543 "source_info" : {
1544 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001545 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001546 "column" : 8,
1547 "source_fragment" : "fabric_metadata.next_id = next_id"
1548 }
1549 }
1550 ]
1551 },
1552 {
Yi Tsengbe342052017-11-03 10:21:23 -07001553 "name" : "forwarding.pop_mpls_and_next",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001554 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07001555 "runtime_data" : [
1556 {
1557 "name" : "next_id",
1558 "bitwidth" : 32
1559 }
1560 ],
1561 "primitives" : [
1562 {
1563 "op" : "remove_header",
1564 "parameters" : [
1565 {
1566 "type" : "header",
1567 "value" : "mpls"
1568 }
1569 ],
1570 "source_info" : {
1571 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001572 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07001573 "column" : 8,
1574 "source_fragment" : "hdr.mpls.setInvalid()"
1575 }
1576 },
1577 {
1578 "op" : "assign",
1579 "parameters" : [
1580 {
1581 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001582 "value" : ["scalars", "fabric_metadata_t.next_id"]
1583 },
1584 {
1585 "type" : "runtime_data",
1586 "value" : 0
1587 }
1588 ],
1589 "source_info" : {
1590 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001591 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07001592 "column" : 8,
1593 "source_fragment" : "fabric_metadata.next_id = next_id"
1594 }
1595 }
1596 ]
1597 },
1598 {
Yi Tsengbe342052017-11-03 10:21:23 -07001599 "name" : "forwarding.duplicate_to_controller",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001600 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07001601 "runtime_data" : [],
1602 "primitives" : [
1603 {
1604 "op" : "assign",
1605 "parameters" : [
1606 {
1607 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001608 "value" : ["standard_metadata", "egress_spec"]
1609 },
1610 {
1611 "type" : "hexstr",
1612 "value" : "0x00ff"
1613 }
1614 ],
1615 "source_info" : {
1616 "filename" : "./include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001617 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07001618 "column" : 28,
1619 "source_fragment" : "255; ..."
1620 }
1621 }
1622 ]
1623 },
1624 {
Yi Tsengbe342052017-11-03 10:21:23 -07001625 "name" : "next.output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001626 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07001627 "runtime_data" : [
1628 {
1629 "name" : "port_num",
1630 "bitwidth" : 9
1631 }
1632 ],
1633 "primitives" : [
1634 {
1635 "op" : "assign",
1636 "parameters" : [
1637 {
1638 "type" : "field",
1639 "value" : ["standard_metadata", "egress_spec"]
1640 },
1641 {
1642 "type" : "runtime_data",
1643 "value" : 0
1644 }
1645 ],
1646 "source_info" : {
1647 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001648 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001649 "column" : 8,
1650 "source_fragment" : "standard_metadata.egress_spec = port_num"
1651 }
Yi Tsengbe342052017-11-03 10:21:23 -07001652 }
1653 ]
1654 },
1655 {
1656 "name" : "next.set_vlan_output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001657 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001658 "runtime_data" : [
1659 {
1660 "name" : "new_vlan_id",
1661 "bitwidth" : 12
1662 },
1663 {
1664 "name" : "port_num",
1665 "bitwidth" : 9
1666 }
1667 ],
1668 "primitives" : [
1669 {
1670 "op" : "assign",
1671 "parameters" : [
1672 {
1673 "type" : "field",
1674 "value" : ["vlan_tag", "vlan_id"]
1675 },
1676 {
1677 "type" : "runtime_data",
1678 "value" : 0
1679 }
1680 ],
1681 "source_info" : {
1682 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001683 "line" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07001684 "column" : 8,
1685 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1686 }
1687 },
1688 {
1689 "op" : "assign",
1690 "parameters" : [
1691 {
1692 "type" : "field",
1693 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1694 },
1695 {
1696 "type" : "expression",
1697 "value" : {
1698 "type" : "expression",
1699 "value" : {
1700 "op" : "b2d",
1701 "left" : null,
1702 "right" : {
1703 "type" : "bool",
1704 "value" : false
1705 }
1706 }
1707 }
1708 }
1709 ],
1710 "source_info" : {
1711 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001712 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001713 "column" : 8,
1714 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
1715 }
1716 },
1717 {
1718 "op" : "assign",
1719 "parameters" : [
1720 {
1721 "type" : "field",
1722 "value" : ["standard_metadata", "egress_spec"]
1723 },
1724 {
1725 "type" : "runtime_data",
1726 "value" : 1
1727 }
1728 ],
1729 "source_info" : {
1730 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001731 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001732 "column" : 8,
1733 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1734 }
Yi Tsengbe342052017-11-03 10:21:23 -07001735 }
1736 ]
1737 },
1738 {
1739 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001740 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07001741 "runtime_data" : [
1742 {
1743 "name" : "port_num",
1744 "bitwidth" : 9
1745 },
1746 {
1747 "name" : "smac",
1748 "bitwidth" : 48
1749 },
1750 {
1751 "name" : "dmac",
1752 "bitwidth" : 48
1753 }
1754 ],
1755 "primitives" : [
1756 {
1757 "op" : "assign",
1758 "parameters" : [
1759 {
1760 "type" : "field",
1761 "value" : ["ethernet", "src_addr"]
1762 },
1763 {
1764 "type" : "runtime_data",
1765 "value" : 1
1766 }
1767 ],
1768 "source_info" : {
1769 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001770 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001771 "column" : 8,
1772 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1773 }
1774 },
1775 {
1776 "op" : "assign",
1777 "parameters" : [
1778 {
1779 "type" : "field",
1780 "value" : ["ethernet", "dst_addr"]
1781 },
1782 {
1783 "type" : "runtime_data",
1784 "value" : 2
1785 }
1786 ],
1787 "source_info" : {
1788 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001789 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001790 "column" : 8,
1791 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1792 }
1793 },
1794 {
1795 "op" : "assign",
1796 "parameters" : [
1797 {
1798 "type" : "field",
1799 "value" : ["standard_metadata", "egress_spec"]
1800 },
1801 {
1802 "type" : "runtime_data",
1803 "value" : 0
1804 }
1805 ],
1806 "source_info" : {
1807 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001808 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001809 "column" : 8,
1810 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1811 }
Yi Tsengbe342052017-11-03 10:21:23 -07001812 }
1813 ]
1814 },
1815 {
1816 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001817 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001818 "runtime_data" : [
1819 {
1820 "name" : "port_num",
1821 "bitwidth" : 9
1822 },
1823 {
1824 "name" : "smac",
1825 "bitwidth" : 48
1826 },
1827 {
1828 "name" : "dmac",
1829 "bitwidth" : 48
1830 }
1831 ],
1832 "primitives" : [
1833 {
1834 "op" : "assign",
1835 "parameters" : [
1836 {
1837 "type" : "field",
1838 "value" : ["ethernet", "src_addr"]
1839 },
1840 {
1841 "type" : "runtime_data",
1842 "value" : 1
1843 }
1844 ],
1845 "source_info" : {
1846 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001847 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001848 "column" : 8,
1849 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1850 }
1851 },
1852 {
1853 "op" : "assign",
1854 "parameters" : [
1855 {
1856 "type" : "field",
1857 "value" : ["ethernet", "dst_addr"]
1858 },
1859 {
1860 "type" : "runtime_data",
1861 "value" : 2
1862 }
1863 ],
1864 "source_info" : {
1865 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001866 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001867 "column" : 8,
1868 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1869 }
1870 },
1871 {
1872 "op" : "assign",
1873 "parameters" : [
1874 {
1875 "type" : "field",
1876 "value" : ["standard_metadata", "egress_spec"]
1877 },
1878 {
1879 "type" : "runtime_data",
1880 "value" : 0
1881 }
1882 ],
1883 "source_info" : {
1884 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001885 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001886 "column" : 8,
1887 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1888 }
Yi Tsengbe342052017-11-03 10:21:23 -07001889 }
1890 ]
1891 },
1892 {
1893 "name" : "next.set_mcast_group",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001894 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07001895 "runtime_data" : [
1896 {
1897 "name" : "gid",
1898 "bitwidth" : 16
1899 },
1900 {
1901 "name" : "smac",
1902 "bitwidth" : 48
1903 }
1904 ],
1905 "primitives" : [
1906 {
1907 "op" : "assign",
1908 "parameters" : [
1909 {
1910 "type" : "field",
1911 "value" : ["standard_metadata", "mcast_grp"]
1912 },
1913 {
1914 "type" : "runtime_data",
1915 "value" : 0
1916 }
1917 ],
1918 "source_info" : {
1919 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001920 "line" : 59,
Yi Tsengbe342052017-11-03 10:21:23 -07001921 "column" : 8,
1922 "source_fragment" : "standard_metadata.mcast_grp = gid"
1923 }
1924 },
1925 {
1926 "op" : "assign",
1927 "parameters" : [
1928 {
1929 "type" : "field",
1930 "value" : ["ethernet", "src_addr"]
1931 },
1932 {
1933 "type" : "runtime_data",
1934 "value" : 1
1935 }
1936 ],
1937 "source_info" : {
1938 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001939 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001940 "column" : 8,
1941 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1942 }
1943 }
1944 ]
1945 },
1946 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001947 "name" : "next.mpls_routing_v4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001948 "id" : 29,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001949 "runtime_data" : [
1950 {
1951 "name" : "port_num",
1952 "bitwidth" : 9
1953 },
1954 {
1955 "name" : "smac",
1956 "bitwidth" : 48
1957 },
1958 {
1959 "name" : "dmac",
1960 "bitwidth" : 48
1961 },
1962 {
1963 "name" : "label",
1964 "bitwidth" : 20
1965 }
1966 ],
1967 "primitives" : [
1968 {
1969 "op" : "assign",
1970 "parameters" : [
1971 {
1972 "type" : "field",
1973 "value" : ["ethernet", "src_addr"]
1974 },
1975 {
1976 "type" : "runtime_data",
1977 "value" : 1
1978 }
1979 ],
1980 "source_info" : {
1981 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001982 "line" : 45,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001983 "column" : 8,
1984 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1985 }
1986 },
1987 {
1988 "op" : "assign",
1989 "parameters" : [
1990 {
1991 "type" : "field",
1992 "value" : ["ethernet", "dst_addr"]
1993 },
1994 {
1995 "type" : "runtime_data",
1996 "value" : 2
1997 }
1998 ],
1999 "source_info" : {
2000 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002001 "line" : 49,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002002 "column" : 8,
2003 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2004 }
2005 },
2006 {
2007 "op" : "assign",
2008 "parameters" : [
2009 {
2010 "type" : "field",
2011 "value" : ["standard_metadata", "egress_spec"]
2012 },
2013 {
2014 "type" : "runtime_data",
2015 "value" : 0
2016 }
2017 ],
2018 "source_info" : {
2019 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002020 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002021 "column" : 8,
2022 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2023 }
2024 },
2025 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002026 "op" : "add_header",
2027 "parameters" : [
2028 {
2029 "type" : "header",
2030 "value" : "mpls"
2031 }
2032 ],
2033 "source_info" : {
2034 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002035 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002036 "column" : 8,
2037 "source_fragment" : "hdr.mpls.setValid()"
2038 }
2039 },
2040 {
2041 "op" : "assign",
2042 "parameters" : [
2043 {
2044 "type" : "field",
2045 "value" : ["ethernet", "ether_type"]
2046 },
2047 {
2048 "type" : "hexstr",
2049 "value" : "0x8847"
2050 }
2051 ],
2052 "source_info" : {
2053 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002054 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002055 "column" : 31,
2056 "source_fragment" : "0x8847; ..."
2057 }
2058 },
2059 {
2060 "op" : "assign",
2061 "parameters" : [
2062 {
2063 "type" : "field",
2064 "value" : ["mpls", "label"]
2065 },
2066 {
2067 "type" : "runtime_data",
2068 "value" : 3
2069 }
2070 ],
2071 "source_info" : {
2072 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002073 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002074 "column" : 8,
2075 "source_fragment" : "hdr.mpls.label = label; ..."
2076 }
2077 },
2078 {
2079 "op" : "assign",
2080 "parameters" : [
2081 {
2082 "type" : "field",
2083 "value" : ["mpls", "tc"]
2084 },
2085 {
Yi Tseng1d842672017-11-28 16:06:52 -08002086 "type" : "hexstr",
2087 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002088 }
2089 ],
2090 "source_info" : {
2091 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002092 "line" : 68,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002093 "column" : 8,
2094 "source_fragment" : "hdr.mpls.tc = tc; ..."
2095 }
2096 },
2097 {
2098 "op" : "assign",
2099 "parameters" : [
2100 {
2101 "type" : "field",
2102 "value" : ["mpls", "bos"]
2103 },
2104 {
2105 "type" : "hexstr",
2106 "value" : "0x01"
2107 }
2108 ],
2109 "source_info" : {
2110 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002111 "line" : 69,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002112 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002113 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002114 }
2115 },
2116 {
2117 "op" : "assign",
2118 "parameters" : [
2119 {
2120 "type" : "field",
2121 "value" : ["mpls", "ttl"]
2122 },
2123 {
2124 "type" : "hexstr",
2125 "value" : "0x40"
2126 }
2127 ],
2128 "source_info" : {
2129 "filename" : "./include/control/../header.p4",
2130 "line" : 19,
2131 "column" : 32,
2132 "source_fragment" : "64; ..."
2133 }
2134 }
2135 ]
2136 },
2137 {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002138 "name" : "next.mpls_routing_v4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002139 "id" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002140 "runtime_data" : [
2141 {
2142 "name" : "port_num",
2143 "bitwidth" : 9
2144 },
2145 {
2146 "name" : "smac",
2147 "bitwidth" : 48
2148 },
2149 {
2150 "name" : "dmac",
2151 "bitwidth" : 48
2152 },
2153 {
2154 "name" : "label",
2155 "bitwidth" : 20
2156 }
2157 ],
2158 "primitives" : [
2159 {
2160 "op" : "assign",
2161 "parameters" : [
2162 {
2163 "type" : "field",
2164 "value" : ["ethernet", "src_addr"]
2165 },
2166 {
2167 "type" : "runtime_data",
2168 "value" : 1
2169 }
2170 ],
2171 "source_info" : {
2172 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002173 "line" : 45,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002174 "column" : 8,
2175 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2176 }
2177 },
2178 {
2179 "op" : "assign",
2180 "parameters" : [
2181 {
2182 "type" : "field",
2183 "value" : ["ethernet", "dst_addr"]
2184 },
2185 {
2186 "type" : "runtime_data",
2187 "value" : 2
2188 }
2189 ],
2190 "source_info" : {
2191 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002192 "line" : 49,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002193 "column" : 8,
2194 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2195 }
2196 },
2197 {
2198 "op" : "assign",
2199 "parameters" : [
2200 {
2201 "type" : "field",
2202 "value" : ["standard_metadata", "egress_spec"]
2203 },
2204 {
2205 "type" : "runtime_data",
2206 "value" : 0
2207 }
2208 ],
2209 "source_info" : {
2210 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002211 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002212 "column" : 8,
2213 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2214 }
2215 },
2216 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002217 "op" : "add_header",
2218 "parameters" : [
2219 {
2220 "type" : "header",
2221 "value" : "mpls"
2222 }
2223 ],
2224 "source_info" : {
2225 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002226 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002227 "column" : 8,
2228 "source_fragment" : "hdr.mpls.setValid()"
2229 }
2230 },
2231 {
2232 "op" : "assign",
2233 "parameters" : [
2234 {
2235 "type" : "field",
2236 "value" : ["ethernet", "ether_type"]
2237 },
2238 {
2239 "type" : "hexstr",
2240 "value" : "0x8847"
2241 }
2242 ],
2243 "source_info" : {
2244 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002245 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002246 "column" : 31,
2247 "source_fragment" : "0x8847; ..."
2248 }
2249 },
2250 {
2251 "op" : "assign",
2252 "parameters" : [
2253 {
2254 "type" : "field",
2255 "value" : ["mpls", "label"]
2256 },
2257 {
2258 "type" : "runtime_data",
2259 "value" : 3
2260 }
2261 ],
2262 "source_info" : {
2263 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002264 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002265 "column" : 8,
2266 "source_fragment" : "hdr.mpls.label = label; ..."
2267 }
2268 },
2269 {
2270 "op" : "assign",
2271 "parameters" : [
2272 {
2273 "type" : "field",
2274 "value" : ["mpls", "tc"]
2275 },
2276 {
Yi Tseng1d842672017-11-28 16:06:52 -08002277 "type" : "hexstr",
2278 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002279 }
2280 ],
2281 "source_info" : {
2282 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002283 "line" : 68,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002284 "column" : 8,
2285 "source_fragment" : "hdr.mpls.tc = tc; ..."
2286 }
2287 },
2288 {
2289 "op" : "assign",
2290 "parameters" : [
2291 {
2292 "type" : "field",
2293 "value" : ["mpls", "bos"]
2294 },
2295 {
2296 "type" : "hexstr",
2297 "value" : "0x01"
2298 }
2299 ],
2300 "source_info" : {
2301 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002302 "line" : 69,
2303 "column" : 8,
2304 "source_fragment" : "hdr.mpls.bos = 1w1"
2305 }
2306 },
2307 {
2308 "op" : "assign",
2309 "parameters" : [
2310 {
2311 "type" : "field",
2312 "value" : ["mpls", "ttl"]
2313 },
2314 {
2315 "type" : "hexstr",
2316 "value" : "0x40"
2317 }
2318 ],
2319 "source_info" : {
2320 "filename" : "./include/control/../header.p4",
2321 "line" : 19,
2322 "column" : 32,
2323 "source_fragment" : "64; ..."
2324 }
2325 }
2326 ]
2327 },
2328 {
2329 "name" : "next.mpls_routing_v6",
2330 "id" : 31,
2331 "runtime_data" : [
2332 {
2333 "name" : "port_num",
2334 "bitwidth" : 9
2335 },
2336 {
2337 "name" : "smac",
2338 "bitwidth" : 48
2339 },
2340 {
2341 "name" : "dmac",
2342 "bitwidth" : 48
2343 },
2344 {
2345 "name" : "label",
2346 "bitwidth" : 20
2347 }
2348 ],
2349 "primitives" : [
2350 {
2351 "op" : "assign",
2352 "parameters" : [
2353 {
2354 "type" : "field",
2355 "value" : ["ethernet", "src_addr"]
2356 },
2357 {
2358 "type" : "runtime_data",
2359 "value" : 1
2360 }
2361 ],
2362 "source_info" : {
2363 "filename" : "./include/control/next.p4",
2364 "line" : 45,
2365 "column" : 8,
2366 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2367 }
2368 },
2369 {
2370 "op" : "assign",
2371 "parameters" : [
2372 {
2373 "type" : "field",
2374 "value" : ["ethernet", "dst_addr"]
2375 },
2376 {
2377 "type" : "runtime_data",
2378 "value" : 2
2379 }
2380 ],
2381 "source_info" : {
2382 "filename" : "./include/control/next.p4",
2383 "line" : 49,
2384 "column" : 8,
2385 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2386 }
2387 },
2388 {
2389 "op" : "assign",
2390 "parameters" : [
2391 {
2392 "type" : "field",
2393 "value" : ["standard_metadata", "egress_spec"]
2394 },
2395 {
2396 "type" : "runtime_data",
2397 "value" : 0
2398 }
2399 ],
2400 "source_info" : {
2401 "filename" : "./include/control/next.p4",
2402 "line" : 33,
2403 "column" : 8,
2404 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2405 }
2406 },
2407 {
2408 "op" : "add_header",
2409 "parameters" : [
2410 {
2411 "type" : "header",
2412 "value" : "mpls"
2413 }
2414 ],
2415 "source_info" : {
2416 "filename" : "./include/control/next.p4",
2417 "line" : 65,
2418 "column" : 8,
2419 "source_fragment" : "hdr.mpls.setValid()"
2420 }
2421 },
2422 {
2423 "op" : "assign",
2424 "parameters" : [
2425 {
2426 "type" : "field",
2427 "value" : ["ethernet", "ether_type"]
2428 },
2429 {
2430 "type" : "hexstr",
2431 "value" : "0x8847"
2432 }
2433 ],
2434 "source_info" : {
2435 "filename" : "./include/control/../define.p4",
2436 "line" : 33,
2437 "column" : 31,
2438 "source_fragment" : "0x8847; ..."
2439 }
2440 },
2441 {
2442 "op" : "assign",
2443 "parameters" : [
2444 {
2445 "type" : "field",
2446 "value" : ["mpls", "label"]
2447 },
2448 {
2449 "type" : "runtime_data",
2450 "value" : 3
2451 }
2452 ],
2453 "source_info" : {
2454 "filename" : "./include/control/next.p4",
2455 "line" : 67,
2456 "column" : 8,
2457 "source_fragment" : "hdr.mpls.label = label; ..."
2458 }
2459 },
2460 {
2461 "op" : "assign",
2462 "parameters" : [
2463 {
2464 "type" : "field",
2465 "value" : ["mpls", "tc"]
2466 },
2467 {
2468 "type" : "hexstr",
2469 "value" : "0x00"
2470 }
2471 ],
2472 "source_info" : {
2473 "filename" : "./include/control/next.p4",
2474 "line" : 68,
2475 "column" : 8,
2476 "source_fragment" : "hdr.mpls.tc = tc; ..."
2477 }
2478 },
2479 {
2480 "op" : "assign",
2481 "parameters" : [
2482 {
2483 "type" : "field",
2484 "value" : ["mpls", "bos"]
2485 },
2486 {
2487 "type" : "hexstr",
2488 "value" : "0x01"
2489 }
2490 ],
2491 "source_info" : {
2492 "filename" : "./include/control/next.p4",
2493 "line" : 69,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002494 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002495 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002496 }
2497 },
2498 {
2499 "op" : "assign",
2500 "parameters" : [
2501 {
2502 "type" : "field",
2503 "value" : ["mpls", "ttl"]
2504 },
2505 {
2506 "type" : "hexstr",
2507 "value" : "0x40"
2508 }
2509 ],
2510 "source_info" : {
2511 "filename" : "./include/control/../header.p4",
2512 "line" : 19,
2513 "column" : 32,
2514 "source_fragment" : "64; ..."
2515 }
2516 }
2517 ]
2518 },
2519 {
Yi Tsengbe342052017-11-03 10:21:23 -07002520 "name" : "act",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002521 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002522 "runtime_data" : [],
2523 "primitives" : [
2524 {
2525 "op" : "assign",
2526 "parameters" : [
2527 {
2528 "type" : "field",
2529 "value" : ["standard_metadata", "egress_spec"]
2530 },
2531 {
2532 "type" : "field",
2533 "value" : ["packet_out", "egress_port"]
2534 }
2535 ],
2536 "source_info" : {
2537 "filename" : "./include/control/packetio.p4",
2538 "line" : 26,
2539 "column" : 12,
2540 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2541 }
Yi Tseng1d842672017-11-28 16:06:52 -08002542 },
2543 {
2544 "op" : "remove_header",
2545 "parameters" : [
2546 {
2547 "type" : "header",
2548 "value" : "packet_out"
2549 }
2550 ],
2551 "source_info" : {
2552 "filename" : "./include/control/packetio.p4",
2553 "line" : 27,
2554 "column" : 12,
2555 "source_fragment" : "hdr.packet_out.setInvalid()"
2556 }
Yi Tsengbe342052017-11-03 10:21:23 -07002557 }
2558 ]
2559 },
2560 {
2561 "name" : "act_0",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002562 "id" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002563 "runtime_data" : [],
2564 "primitives" : [
2565 {
2566 "op" : "assign",
2567 "parameters" : [
2568 {
2569 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002570 "value" : ["ethernet", "ether_type"]
2571 },
2572 {
2573 "type" : "hexstr",
2574 "value" : "0x0800"
2575 }
2576 ],
2577 "source_info" : {
2578 "filename" : "./include/control/../define.p4",
2579 "line" : 35,
2580 "column" : 31,
2581 "source_fragment" : "0x0800; ..."
2582 }
2583 },
2584 {
2585 "op" : "assign",
2586 "parameters" : [
2587 {
2588 "type" : "field",
2589 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2590 },
2591 {
2592 "type" : "hexstr",
2593 "value" : "0x0800"
2594 }
2595 ],
2596 "source_info" : {
2597 "filename" : "./include/control/../define.p4",
2598 "line" : 35,
2599 "column" : 31,
2600 "source_fragment" : "0x0800; ..."
2601 }
2602 }
2603 ]
2604 },
2605 {
2606 "name" : "act_1",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002607 "id" : 34,
Yi Tseng1d842672017-11-28 16:06:52 -08002608 "runtime_data" : [],
2609 "primitives" : [
2610 {
2611 "op" : "assign",
2612 "parameters" : [
2613 {
2614 "type" : "field",
2615 "value" : ["ethernet", "ether_type"]
2616 },
2617 {
2618 "type" : "hexstr",
2619 "value" : "0x86dd"
2620 }
2621 ],
2622 "source_info" : {
2623 "filename" : "./include/control/../define.p4",
2624 "line" : 36,
2625 "column" : 31,
2626 "source_fragment" : "0x86dd; ..."
2627 }
2628 },
2629 {
2630 "op" : "assign",
2631 "parameters" : [
2632 {
2633 "type" : "field",
2634 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2635 },
2636 {
2637 "type" : "hexstr",
2638 "value" : "0x86dd"
2639 }
2640 ],
2641 "source_info" : {
2642 "filename" : "./include/control/../define.p4",
2643 "line" : 36,
2644 "column" : 31,
2645 "source_fragment" : "0x86dd; ..."
2646 }
2647 }
2648 ]
2649 },
2650 {
2651 "name" : "act_2",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002652 "id" : 35,
Yi Tseng1d842672017-11-28 16:06:52 -08002653 "runtime_data" : [],
2654 "primitives" : [
2655 {
2656 "op" : "assign",
2657 "parameters" : [
2658 {
2659 "type" : "field",
2660 "value" : ["scalars", "next_tmp_0"]
2661 },
2662 {
2663 "type" : "expression",
2664 "value" : {
2665 "type" : "expression",
2666 "value" : {
2667 "op" : "b2d",
2668 "left" : null,
2669 "right" : {
2670 "type" : "bool",
2671 "value" : true
2672 }
2673 }
2674 }
2675 }
2676 ]
2677 }
2678 ]
2679 },
2680 {
2681 "name" : "act_3",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002682 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002683 "runtime_data" : [],
2684 "primitives" : [
2685 {
2686 "op" : "assign",
2687 "parameters" : [
2688 {
2689 "type" : "field",
2690 "value" : ["scalars", "next_tmp_0"]
2691 },
2692 {
2693 "type" : "expression",
2694 "value" : {
2695 "type" : "expression",
2696 "value" : {
2697 "op" : "b2d",
2698 "left" : null,
2699 "right" : {
2700 "type" : "bool",
2701 "value" : false
2702 }
2703 }
2704 }
2705 }
2706 ]
2707 }
2708 ]
2709 },
2710 {
2711 "name" : "act_4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002712 "id" : 37,
Yi Tseng1d842672017-11-28 16:06:52 -08002713 "runtime_data" : [],
2714 "primitives" : [
2715 {
2716 "op" : "assign",
2717 "parameters" : [
2718 {
2719 "type" : "field",
2720 "value" : ["ipv4", "ttl"]
2721 },
2722 {
2723 "type" : "expression",
2724 "value" : {
2725 "type" : "expression",
2726 "value" : {
2727 "op" : "&",
2728 "left" : {
2729 "type" : "expression",
2730 "value" : {
2731 "op" : "+",
2732 "left" : {
2733 "type" : "field",
2734 "value" : ["ipv4", "ttl"]
2735 },
2736 "right" : {
2737 "type" : "hexstr",
2738 "value" : "0xff"
2739 }
2740 }
2741 },
2742 "right" : {
2743 "type" : "hexstr",
2744 "value" : "0xff"
2745 }
2746 }
2747 }
2748 }
2749 ],
2750 "source_info" : {
2751 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002752 "line" : 140,
Yi Tseng1d842672017-11-28 16:06:52 -08002753 "column" : 20,
2754 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2755 }
2756 }
2757 ]
2758 },
2759 {
2760 "name" : "act_5",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002761 "id" : 38,
Yi Tseng1d842672017-11-28 16:06:52 -08002762 "runtime_data" : [],
2763 "primitives" : [
2764 {
2765 "op" : "assign",
2766 "parameters" : [
2767 {
2768 "type" : "field",
2769 "value" : ["ipv6", "hop_limit"]
2770 },
2771 {
2772 "type" : "expression",
2773 "value" : {
2774 "type" : "expression",
2775 "value" : {
2776 "op" : "&",
2777 "left" : {
2778 "type" : "expression",
2779 "value" : {
2780 "op" : "+",
2781 "left" : {
2782 "type" : "field",
2783 "value" : ["ipv6", "hop_limit"]
2784 },
2785 "right" : {
2786 "type" : "hexstr",
2787 "value" : "0xff"
2788 }
2789 }
2790 },
2791 "right" : {
2792 "type" : "hexstr",
2793 "value" : "0xff"
2794 }
2795 }
2796 }
2797 }
2798 ],
2799 "source_info" : {
2800 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002801 "line" : 143,
Yi Tseng1d842672017-11-28 16:06:52 -08002802 "column" : 20,
2803 "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
2804 }
2805 }
2806 ]
2807 },
2808 {
2809 "name" : "act_6",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002810 "id" : 39,
Yi Tseng1d842672017-11-28 16:06:52 -08002811 "runtime_data" : [],
2812 "primitives" : [
2813 {
2814 "op" : "assign",
2815 "parameters" : [
2816 {
2817 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002818 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002819 },
2820 {
2821 "type" : "expression",
2822 "value" : {
2823 "type" : "expression",
2824 "value" : {
2825 "op" : "&",
2826 "left" : {
2827 "type" : "field",
2828 "value" : ["standard_metadata", "egress_spec"]
2829 },
2830 "right" : {
2831 "type" : "hexstr",
2832 "value" : "0xffffffff"
2833 }
2834 }
2835 }
2836 }
2837 ]
2838 },
2839 {
2840 "op" : "count",
2841 "parameters" : [
2842 {
2843 "type" : "counter_array",
2844 "value" : "port_counters_control.egress_port_counter"
2845 },
2846 {
2847 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002848 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002849 }
2850 ],
2851 "source_info" : {
2852 "filename" : "./include/control/port_counter.p4",
2853 "line" : 28,
2854 "column" : 12,
2855 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2856 }
2857 }
2858 ]
2859 },
2860 {
Yi Tseng1d842672017-11-28 16:06:52 -08002861 "name" : "act_7",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002862 "id" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07002863 "runtime_data" : [],
2864 "primitives" : [
2865 {
2866 "op" : "assign",
2867 "parameters" : [
2868 {
2869 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002870 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002871 },
2872 {
2873 "type" : "expression",
2874 "value" : {
2875 "type" : "expression",
2876 "value" : {
2877 "op" : "&",
2878 "left" : {
2879 "type" : "field",
2880 "value" : ["standard_metadata", "ingress_port"]
2881 },
2882 "right" : {
2883 "type" : "hexstr",
2884 "value" : "0xffffffff"
2885 }
2886 }
2887 }
2888 }
2889 ]
2890 },
2891 {
2892 "op" : "count",
2893 "parameters" : [
2894 {
2895 "type" : "counter_array",
2896 "value" : "port_counters_control.ingress_port_counter"
2897 },
2898 {
2899 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002900 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002901 }
2902 ],
2903 "source_info" : {
2904 "filename" : "./include/control/port_counter.p4",
2905 "line" : 31,
2906 "column" : 12,
2907 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2908 }
2909 }
2910 ]
2911 },
2912 {
Yi Tseng1d842672017-11-28 16:06:52 -08002913 "name" : "act_8",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002914 "id" : 41,
Yi Tseng1d842672017-11-28 16:06:52 -08002915 "runtime_data" : [],
2916 "primitives" : [
2917 {
2918 "op" : "assign",
2919 "parameters" : [
2920 {
2921 "type" : "field",
2922 "value" : ["ethernet", "ether_type"]
2923 },
2924 {
2925 "type" : "hexstr",
2926 "value" : "0x8847"
2927 }
2928 ],
2929 "source_info" : {
2930 "filename" : "./include/control/../define.p4",
2931 "line" : 33,
2932 "column" : 31,
2933 "source_fragment" : "0x8847; ..."
2934 }
2935 }
2936 ]
2937 },
2938 {
2939 "name" : "act_9",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002940 "id" : 42,
Yi Tseng1d842672017-11-28 16:06:52 -08002941 "runtime_data" : [],
2942 "primitives" : [
2943 {
2944 "op" : "assign",
2945 "parameters" : [
2946 {
2947 "type" : "field",
2948 "value" : ["ethernet", "ether_type"]
2949 },
2950 {
2951 "type" : "field",
2952 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2953 }
2954 ],
2955 "source_info" : {
2956 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002957 "line" : 163,
Yi Tseng1d842672017-11-28 16:06:52 -08002958 "column" : 16,
2959 "source_fragment" : "hdr.ethernet.ether_type = fabric_metadata.original_ether_type"
2960 }
2961 }
2962 ]
2963 },
2964 {
2965 "name" : "act_10",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002966 "id" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07002967 "runtime_data" : [],
2968 "primitives" : [
2969 {
2970 "op" : "remove_header",
2971 "parameters" : [
2972 {
2973 "type" : "header",
2974 "value" : "vlan_tag"
2975 }
2976 ],
2977 "source_info" : {
2978 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002979 "line" : 165,
Yi Tsengbe342052017-11-03 10:21:23 -07002980 "column" : 12,
2981 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2982 }
2983 }
2984 ]
2985 },
2986 {
Yi Tseng1d842672017-11-28 16:06:52 -08002987 "name" : "act_11",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002988 "id" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07002989 "runtime_data" : [],
2990 "primitives" : [
2991 {
2992 "op" : "add_header",
2993 "parameters" : [
2994 {
2995 "type" : "header",
2996 "value" : "packet_in"
2997 }
2998 ],
2999 "source_info" : {
3000 "filename" : "./include/control/packetio.p4",
3001 "line" : 39,
3002 "column" : 12,
3003 "source_fragment" : "hdr.packet_in.setValid()"
3004 }
3005 },
3006 {
3007 "op" : "assign",
3008 "parameters" : [
3009 {
3010 "type" : "field",
3011 "value" : ["packet_in", "ingress_port"]
3012 },
3013 {
3014 "type" : "field",
3015 "value" : ["standard_metadata", "ingress_port"]
3016 }
3017 ],
3018 "source_info" : {
3019 "filename" : "./include/control/packetio.p4",
3020 "line" : 40,
3021 "column" : 12,
3022 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
3023 }
3024 }
3025 ]
Yi Tsengbe342052017-11-03 10:21:23 -07003026 }
3027 ],
3028 "pipelines" : [
3029 {
3030 "name" : "ingress",
3031 "id" : 0,
3032 "source_info" : {
3033 "filename" : "fabric.p4",
3034 "line" : 29,
3035 "column" : 8,
3036 "source_fragment" : "FabricIngress"
3037 },
3038 "init_table" : "node_2",
3039 "tables" : [
3040 {
3041 "name" : "tbl_act",
3042 "id" : 0,
3043 "key" : [],
3044 "match_type" : "exact",
3045 "type" : "simple",
3046 "max_size" : 1024,
3047 "with_counters" : false,
3048 "support_timeout" : false,
3049 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003050 "action_ids" : [32],
Yi Tsengbe342052017-11-03 10:21:23 -07003051 "actions" : ["act"],
3052 "base_default_next" : null,
3053 "next_tables" : {
3054 "act" : null
3055 },
3056 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003057 "action_id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07003058 "action_const" : true,
3059 "action_data" : [],
3060 "action_entry_const" : true
3061 }
3062 },
3063 {
3064 "name" : "filtering.ingress_port_vlan",
3065 "id" : 1,
3066 "source_info" : {
3067 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003068 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07003069 "column" : 10,
3070 "source_fragment" : "ingress_port_vlan"
3071 },
3072 "key" : [
3073 {
3074 "match_type" : "exact",
3075 "target" : ["standard_metadata", "ingress_port"],
3076 "mask" : null
3077 },
3078 {
3079 "match_type" : "exact",
3080 "target" : ["vlan_tag", "$valid$"],
3081 "mask" : null
3082 },
3083 {
3084 "match_type" : "ternary",
3085 "target" : ["vlan_tag", "vlan_id"],
3086 "mask" : null
3087 }
3088 ],
3089 "match_type" : "ternary",
3090 "type" : "simple",
3091 "max_size" : 1024,
3092 "support_timeout" : false,
3093 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003094 "action_ids" : [13, 12, 0, 11],
3095 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "filtering.drop"],
Yi Tsengbe342052017-11-03 10:21:23 -07003096 "base_default_next" : "filtering.fwd_classifier",
3097 "next_tables" : {
3098 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
3099 "filtering.set_vlan" : "filtering.fwd_classifier",
3100 "nop" : "filtering.fwd_classifier",
Yi Tseng1d842672017-11-28 16:06:52 -08003101 "filtering.drop" : "filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07003102 },
3103 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003104 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07003105 "action_const" : true,
3106 "action_data" : [],
3107 "action_entry_const" : true
3108 }
3109 },
3110 {
3111 "name" : "filtering.fwd_classifier",
3112 "id" : 2,
3113 "source_info" : {
3114 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003115 "line" : 76,
Yi Tsengbe342052017-11-03 10:21:23 -07003116 "column" : 10,
3117 "source_fragment" : "fwd_classifier"
3118 },
3119 "key" : [
3120 {
3121 "match_type" : "exact",
3122 "target" : ["standard_metadata", "ingress_port"],
3123 "mask" : null
3124 },
3125 {
3126 "match_type" : "exact",
3127 "target" : ["ethernet", "dst_addr"],
3128 "mask" : null
3129 },
3130 {
3131 "match_type" : "exact",
Yi Tseng1d842672017-11-28 16:06:52 -08003132 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07003133 "mask" : null
3134 }
3135 ],
3136 "match_type" : "exact",
3137 "type" : "simple",
3138 "max_size" : 1024,
3139 "support_timeout" : false,
3140 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003141 "action_ids" : [14],
Yi Tsengbe342052017-11-03 10:21:23 -07003142 "actions" : ["filtering.set_forwarding_type"],
3143 "base_default_next" : "node_6",
3144 "next_tables" : {
3145 "filtering.set_forwarding_type" : "node_6"
3146 },
3147 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003148 "action_id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07003149 "action_const" : true,
3150 "action_data" : ["0x0"],
3151 "action_entry_const" : true
3152 }
3153 },
3154 {
3155 "name" : "forwarding.bridging",
3156 "id" : 3,
3157 "source_info" : {
3158 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003159 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07003160 "column" : 10,
3161 "source_fragment" : "bridging"
3162 },
3163 "key" : [
3164 {
3165 "match_type" : "exact",
3166 "target" : ["vlan_tag", "vlan_id"],
3167 "mask" : null
3168 },
3169 {
3170 "match_type" : "ternary",
3171 "target" : ["ethernet", "dst_addr"],
3172 "mask" : null
3173 }
3174 ],
3175 "match_type" : "ternary",
3176 "type" : "simple",
3177 "max_size" : 1024,
3178 "support_timeout" : false,
3179 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003180 "action_ids" : [16, 2],
3181 "actions" : ["forwarding.set_next_id", "NoAction"],
3182 "base_default_next" : "forwarding.acl",
3183 "next_tables" : {
3184 "forwarding.set_next_id" : "forwarding.acl",
3185 "NoAction" : "forwarding.acl"
3186 },
3187 "default_entry" : {
3188 "action_id" : 2,
3189 "action_const" : false,
3190 "action_data" : [],
3191 "action_entry_const" : false
3192 }
3193 },
3194 {
3195 "name" : "forwarding.mpls",
3196 "id" : 4,
3197 "source_info" : {
3198 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003199 "line" : 67,
Yi Tseng1d842672017-11-28 16:06:52 -08003200 "column" : 10,
3201 "source_fragment" : "mpls"
3202 },
3203 "key" : [
3204 {
3205 "match_type" : "exact",
3206 "target" : ["mpls", "label"],
3207 "mask" : null
3208 }
3209 ],
3210 "match_type" : "exact",
3211 "type" : "simple",
3212 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003213 "support_timeout" : false,
3214 "direct_meters" : null,
3215 "action_ids" : [22, 3],
3216 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
3217 "base_default_next" : "node_10",
3218 "next_tables" : {
3219 "forwarding.pop_mpls_and_next" : "node_10",
3220 "NoAction" : "node_10"
3221 },
3222 "default_entry" : {
3223 "action_id" : 3,
3224 "action_const" : false,
3225 "action_data" : [],
3226 "action_entry_const" : false
3227 }
3228 },
3229 {
3230 "name" : "tbl_act_0",
3231 "id" : 5,
3232 "key" : [],
3233 "match_type" : "exact",
3234 "type" : "simple",
3235 "max_size" : 1024,
3236 "with_counters" : false,
3237 "support_timeout" : false,
3238 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003239 "action_ids" : [33],
Yi Tseng1d842672017-11-28 16:06:52 -08003240 "actions" : ["act_0"],
3241 "base_default_next" : "forwarding.acl",
3242 "next_tables" : {
3243 "act_0" : "forwarding.acl"
3244 },
3245 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003246 "action_id" : 33,
Yi Tseng1d842672017-11-28 16:06:52 -08003247 "action_const" : true,
3248 "action_data" : [],
3249 "action_entry_const" : true
3250 }
3251 },
3252 {
3253 "name" : "tbl_act_1",
3254 "id" : 6,
3255 "key" : [],
3256 "match_type" : "exact",
3257 "type" : "simple",
3258 "max_size" : 1024,
3259 "with_counters" : false,
3260 "support_timeout" : false,
3261 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003262 "action_ids" : [34],
Yi Tseng1d842672017-11-28 16:06:52 -08003263 "actions" : ["act_1"],
3264 "base_default_next" : "forwarding.acl",
3265 "next_tables" : {
3266 "act_1" : "forwarding.acl"
3267 },
3268 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003269 "action_id" : 34,
Yi Tseng1d842672017-11-28 16:06:52 -08003270 "action_const" : true,
3271 "action_data" : [],
3272 "action_entry_const" : true
3273 }
3274 },
3275 {
3276 "name" : "forwarding.unicast_v4",
3277 "id" : 7,
3278 "source_info" : {
3279 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003280 "line" : 78,
Yi Tseng1d842672017-11-28 16:06:52 -08003281 "column" : 10,
3282 "source_fragment" : "unicast_v4"
3283 },
3284 "key" : [
3285 {
3286 "match_type" : "lpm",
3287 "target" : ["ipv4", "dst_addr"],
3288 "mask" : null
3289 }
3290 ],
3291 "match_type" : "lpm",
3292 "type" : "simple",
3293 "max_size" : 1024,
Yi Tseng1d842672017-11-28 16:06:52 -08003294 "support_timeout" : false,
3295 "direct_meters" : null,
3296 "action_ids" : [17, 4],
Yi Tsengbe342052017-11-03 10:21:23 -07003297 "actions" : ["forwarding.set_next_id", "NoAction"],
3298 "base_default_next" : "forwarding.acl",
3299 "next_tables" : {
3300 "forwarding.set_next_id" : "forwarding.acl",
3301 "NoAction" : "forwarding.acl"
3302 },
3303 "default_entry" : {
3304 "action_id" : 4,
3305 "action_const" : false,
3306 "action_data" : [],
3307 "action_entry_const" : false
3308 }
3309 },
3310 {
Yi Tsengbe342052017-11-03 10:21:23 -07003311 "name" : "forwarding.multicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08003312 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003313 "source_info" : {
3314 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003315 "line" : 89,
Yi Tsengbe342052017-11-03 10:21:23 -07003316 "column" : 10,
3317 "source_fragment" : "multicast_v4"
3318 },
3319 "key" : [
3320 {
3321 "match_type" : "exact",
3322 "target" : ["vlan_tag", "vlan_id"],
3323 "mask" : null
3324 },
3325 {
3326 "match_type" : "lpm",
3327 "target" : ["ipv4", "dst_addr"],
3328 "mask" : null
3329 }
3330 ],
3331 "match_type" : "lpm",
3332 "type" : "simple",
3333 "max_size" : 1024,
3334 "support_timeout" : false,
3335 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003336 "action_ids" : [18, 5],
Yi Tsengbe342052017-11-03 10:21:23 -07003337 "actions" : ["forwarding.set_next_id", "NoAction"],
3338 "base_default_next" : "forwarding.acl",
3339 "next_tables" : {
3340 "forwarding.set_next_id" : "forwarding.acl",
3341 "NoAction" : "forwarding.acl"
3342 },
3343 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003344 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003345 "action_const" : false,
3346 "action_data" : [],
3347 "action_entry_const" : false
3348 }
3349 },
3350 {
3351 "name" : "forwarding.unicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08003352 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003353 "source_info" : {
3354 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003355 "line" : 101,
Yi Tsengbe342052017-11-03 10:21:23 -07003356 "column" : 10,
3357 "source_fragment" : "unicast_v6"
3358 },
3359 "key" : [
3360 {
3361 "match_type" : "lpm",
3362 "target" : ["ipv6", "dst_addr"],
3363 "mask" : null
3364 }
3365 ],
3366 "match_type" : "lpm",
3367 "type" : "simple",
3368 "max_size" : 1024,
3369 "support_timeout" : false,
3370 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003371 "action_ids" : [19, 6],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003372 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07003373 "base_default_next" : "forwarding.acl",
3374 "next_tables" : {
3375 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003376 "NoAction" : "forwarding.acl"
3377 },
3378 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003379 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003380 "action_const" : false,
3381 "action_data" : [],
3382 "action_entry_const" : false
3383 }
3384 },
3385 {
3386 "name" : "forwarding.multicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08003387 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003388 "source_info" : {
3389 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003390 "line" : 112,
Yi Tsengbe342052017-11-03 10:21:23 -07003391 "column" : 10,
3392 "source_fragment" : "multicast_v6"
3393 },
3394 "key" : [
3395 {
3396 "match_type" : "exact",
3397 "target" : ["vlan_tag", "vlan_id"],
3398 "mask" : null
3399 },
3400 {
3401 "match_type" : "lpm",
3402 "target" : ["ipv6", "dst_addr"],
3403 "mask" : null
3404 }
3405 ],
3406 "match_type" : "lpm",
3407 "type" : "simple",
3408 "max_size" : 1024,
3409 "support_timeout" : false,
3410 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003411 "action_ids" : [20, 7],
Yi Tsengbe342052017-11-03 10:21:23 -07003412 "actions" : ["forwarding.set_next_id", "NoAction"],
3413 "base_default_next" : "forwarding.acl",
3414 "next_tables" : {
3415 "forwarding.set_next_id" : "forwarding.acl",
3416 "NoAction" : "forwarding.acl"
3417 },
3418 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003419 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003420 "action_const" : false,
3421 "action_data" : [],
3422 "action_entry_const" : false
3423 }
3424 },
3425 {
3426 "name" : "forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003427 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003428 "source_info" : {
3429 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003430 "line" : 124,
Yi Tsengbe342052017-11-03 10:21:23 -07003431 "column" : 10,
3432 "source_fragment" : "acl"
3433 },
3434 "key" : [
3435 {
3436 "match_type" : "ternary",
3437 "target" : ["standard_metadata", "ingress_port"],
3438 "mask" : null
3439 },
3440 {
3441 "match_type" : "ternary",
3442 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3443 "mask" : null
3444 },
3445 {
3446 "match_type" : "ternary",
Yi Tseng1d842672017-11-28 16:06:52 -08003447 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3448 "mask" : null
3449 },
3450 {
3451 "match_type" : "ternary",
3452 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3453 "mask" : null
3454 },
3455 {
3456 "match_type" : "ternary",
Yi Tsengc6844f52017-12-19 11:58:25 -08003457 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
3458 "mask" : null
3459 },
3460 {
3461 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003462 "target" : ["ethernet", "dst_addr"],
3463 "mask" : null
3464 },
3465 {
3466 "match_type" : "ternary",
3467 "target" : ["ethernet", "src_addr"],
3468 "mask" : null
3469 },
3470 {
3471 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003472 "target" : ["vlan_tag", "vlan_id"],
3473 "mask" : null
3474 },
3475 {
3476 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003477 "target" : ["ipv4", "src_addr"],
3478 "mask" : null
3479 },
3480 {
3481 "match_type" : "ternary",
3482 "target" : ["ipv4", "dst_addr"],
3483 "mask" : null
3484 },
3485 {
3486 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003487 "target" : ["icmp", "icmp_type"],
3488 "mask" : null
3489 },
3490 {
3491 "match_type" : "ternary",
3492 "target" : ["icmp", "icmp_code"],
3493 "mask" : null
3494 }
3495 ],
3496 "match_type" : "ternary",
3497 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003498 "max_size" : 256,
Yi Tsengbe342052017-11-03 10:21:23 -07003499 "support_timeout" : false,
3500 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003501 "action_ids" : [21, 23, 15, 1],
3502 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "forwarding.drop", "nop"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003503 "base_default_next" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07003504 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003505 "forwarding.set_next_id" : "next.simple",
3506 "forwarding.duplicate_to_controller" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003507 "forwarding.drop" : "next.simple",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003508 "nop" : "next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07003509 },
3510 "default_entry" : {
3511 "action_id" : 1,
3512 "action_const" : true,
3513 "action_data" : [],
3514 "action_entry_const" : true
3515 }
3516 },
3517 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003518 "name" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003519 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003520 "source_info" : {
3521 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003522 "line" : 89,
Yi Tsengbe342052017-11-03 10:21:23 -07003523 "column" : 10,
3524 "source_fragment" : "simple"
3525 },
3526 "key" : [
3527 {
3528 "match_type" : "exact",
3529 "target" : ["scalars", "fabric_metadata_t.next_id"],
3530 "mask" : null
3531 }
3532 ],
3533 "match_type" : "exact",
3534 "type" : "simple",
3535 "max_size" : 1024,
3536 "support_timeout" : false,
3537 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003538 "action_ids" : [24, 25, 26, 29, 8],
3539 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "next.mpls_routing_v4", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003540 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003541 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003542 "__HIT__" : "tbl_act_2",
3543 "__MISS__" : "tbl_act_3"
Yi Tsengbe342052017-11-03 10:21:23 -07003544 },
3545 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003546 "action_id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003547 "action_const" : false,
3548 "action_data" : [],
3549 "action_entry_const" : false
3550 }
3551 },
3552 {
Yi Tseng1d842672017-11-28 16:06:52 -08003553 "name" : "tbl_act_2",
3554 "id" : 13,
3555 "key" : [],
3556 "match_type" : "exact",
3557 "type" : "simple",
3558 "max_size" : 1024,
3559 "with_counters" : false,
3560 "support_timeout" : false,
3561 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003562 "action_ids" : [35],
Yi Tseng1d842672017-11-28 16:06:52 -08003563 "actions" : ["act_2"],
3564 "base_default_next" : "node_25",
3565 "next_tables" : {
3566 "act_2" : "node_25"
3567 },
3568 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003569 "action_id" : 35,
Yi Tseng1d842672017-11-28 16:06:52 -08003570 "action_const" : true,
3571 "action_data" : [],
3572 "action_entry_const" : true
3573 }
3574 },
3575 {
3576 "name" : "tbl_act_3",
3577 "id" : 14,
3578 "key" : [],
3579 "match_type" : "exact",
3580 "type" : "simple",
3581 "max_size" : 1024,
3582 "with_counters" : false,
3583 "support_timeout" : false,
3584 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003585 "action_ids" : [36],
Yi Tseng1d842672017-11-28 16:06:52 -08003586 "actions" : ["act_3"],
3587 "base_default_next" : "node_25",
3588 "next_tables" : {
3589 "act_3" : "node_25"
3590 },
3591 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003592 "action_id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08003593 "action_const" : true,
3594 "action_data" : [],
3595 "action_entry_const" : true
3596 }
3597 },
3598 {
3599 "name" : "tbl_act_4",
3600 "id" : 15,
3601 "key" : [],
3602 "match_type" : "exact",
3603 "type" : "simple",
3604 "max_size" : 1024,
3605 "with_counters" : false,
3606 "support_timeout" : false,
3607 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003608 "action_ids" : [37],
Yi Tseng1d842672017-11-28 16:06:52 -08003609 "actions" : ["act_4"],
3610 "base_default_next" : "next.hashed",
3611 "next_tables" : {
3612 "act_4" : "next.hashed"
3613 },
3614 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003615 "action_id" : 37,
Yi Tseng1d842672017-11-28 16:06:52 -08003616 "action_const" : true,
3617 "action_data" : [],
3618 "action_entry_const" : true
3619 }
3620 },
3621 {
3622 "name" : "tbl_act_5",
3623 "id" : 16,
3624 "key" : [],
3625 "match_type" : "exact",
3626 "type" : "simple",
3627 "max_size" : 1024,
3628 "with_counters" : false,
3629 "support_timeout" : false,
3630 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003631 "action_ids" : [38],
Yi Tseng1d842672017-11-28 16:06:52 -08003632 "actions" : ["act_5"],
3633 "base_default_next" : "next.hashed",
3634 "next_tables" : {
3635 "act_5" : "next.hashed"
3636 },
3637 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003638 "action_id" : 38,
Yi Tseng1d842672017-11-28 16:06:52 -08003639 "action_const" : true,
3640 "action_data" : [],
3641 "action_entry_const" : true
3642 }
3643 },
3644 {
Yi Tsengbe342052017-11-03 10:21:23 -07003645 "name" : "next.hashed",
Yi Tseng1d842672017-11-28 16:06:52 -08003646 "id" : 17,
Yi Tsengbe342052017-11-03 10:21:23 -07003647 "source_info" : {
3648 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003649 "line" : 103,
Yi Tsengbe342052017-11-03 10:21:23 -07003650 "column" : 10,
3651 "source_fragment" : "hashed"
3652 },
3653 "key" : [
3654 {
3655 "match_type" : "exact",
3656 "target" : ["scalars", "fabric_metadata_t.next_id"],
3657 "mask" : null
3658 }
3659 ],
3660 "match_type" : "exact",
3661 "type" : "indirect_ws",
3662 "action_profile" : "next.ecmp_selector",
3663 "max_size" : 1024,
3664 "support_timeout" : false,
3665 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003666 "action_ids" : [27, 30, 31, 9],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003667 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003668 "base_default_next" : "next.broadcast",
Yi Tsengbe342052017-11-03 10:21:23 -07003669 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003670 "next.l3_routing" : "next.broadcast",
3671 "next.mpls_routing_v4" : "next.broadcast",
3672 "next.mpls_routing_v6" : "next.broadcast",
3673 "NoAction" : "next.broadcast"
Yi Tsengbe342052017-11-03 10:21:23 -07003674 }
3675 },
3676 {
3677 "name" : "next.broadcast",
Yi Tseng1d842672017-11-28 16:06:52 -08003678 "id" : 18,
Yi Tsengbe342052017-11-03 10:21:23 -07003679 "source_info" : {
3680 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003681 "line" : 126,
Yi Tsengbe342052017-11-03 10:21:23 -07003682 "column" : 10,
3683 "source_fragment" : "broadcast"
3684 },
3685 "key" : [
3686 {
3687 "match_type" : "exact",
3688 "target" : ["scalars", "fabric_metadata_t.next_id"],
3689 "mask" : null
3690 }
3691 ],
3692 "match_type" : "exact",
3693 "type" : "simple",
3694 "max_size" : 1024,
3695 "support_timeout" : false,
3696 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003697 "action_ids" : [28, 10],
Yi Tsengbe342052017-11-03 10:21:23 -07003698 "actions" : ["next.set_mcast_group", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003699 "base_default_next" : "node_33",
Yi Tsengbe342052017-11-03 10:21:23 -07003700 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003701 "next.set_mcast_group" : "node_33",
3702 "NoAction" : "node_33"
Yi Tsengbe342052017-11-03 10:21:23 -07003703 },
3704 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003705 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003706 "action_const" : false,
3707 "action_data" : [],
3708 "action_entry_const" : false
3709 }
3710 },
3711 {
Yi Tseng1d842672017-11-28 16:06:52 -08003712 "name" : "tbl_act_6",
3713 "id" : 19,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003714 "key" : [],
3715 "match_type" : "exact",
3716 "type" : "simple",
3717 "max_size" : 1024,
3718 "with_counters" : false,
3719 "support_timeout" : false,
3720 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003721 "action_ids" : [39],
Yi Tseng1d842672017-11-28 16:06:52 -08003722 "actions" : ["act_6"],
3723 "base_default_next" : "node_35",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003724 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003725 "act_6" : "node_35"
Yi Tsengf55eaa82017-11-29 15:51:28 -08003726 },
3727 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003728 "action_id" : 39,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003729 "action_const" : true,
3730 "action_data" : [],
3731 "action_entry_const" : true
3732 }
3733 },
3734 {
Yi Tseng1d842672017-11-28 16:06:52 -08003735 "name" : "tbl_act_7",
3736 "id" : 20,
Yi Tsengbe342052017-11-03 10:21:23 -07003737 "key" : [],
3738 "match_type" : "exact",
3739 "type" : "simple",
3740 "max_size" : 1024,
3741 "with_counters" : false,
3742 "support_timeout" : false,
3743 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003744 "action_ids" : [40],
Yi Tseng1d842672017-11-28 16:06:52 -08003745 "actions" : ["act_7"],
Yi Tseng3a5731e2018-01-22 11:38:58 -08003746 "base_default_next" : "node_37",
Yi Tsengbe342052017-11-03 10:21:23 -07003747 "next_tables" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003748 "act_7" : "node_37"
Yi Tsengbe342052017-11-03 10:21:23 -07003749 },
3750 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003751 "action_id" : 40,
3752 "action_const" : true,
3753 "action_data" : [],
3754 "action_entry_const" : true
3755 }
3756 },
3757 {
3758 "name" : "tbl_act_8",
3759 "id" : 21,
3760 "key" : [],
3761 "match_type" : "exact",
3762 "type" : "simple",
3763 "max_size" : 1024,
3764 "with_counters" : false,
3765 "support_timeout" : false,
3766 "direct_meters" : null,
3767 "action_ids" : [41],
3768 "actions" : ["act_8"],
3769 "base_default_next" : "tbl_act_10",
3770 "next_tables" : {
3771 "act_8" : "tbl_act_10"
3772 },
3773 "default_entry" : {
3774 "action_id" : 41,
3775 "action_const" : true,
3776 "action_data" : [],
3777 "action_entry_const" : true
3778 }
3779 },
3780 {
3781 "name" : "tbl_act_9",
3782 "id" : 22,
3783 "key" : [],
3784 "match_type" : "exact",
3785 "type" : "simple",
3786 "max_size" : 1024,
3787 "with_counters" : false,
3788 "support_timeout" : false,
3789 "direct_meters" : null,
3790 "action_ids" : [42],
3791 "actions" : ["act_9"],
3792 "base_default_next" : "tbl_act_10",
3793 "next_tables" : {
3794 "act_9" : "tbl_act_10"
3795 },
3796 "default_entry" : {
3797 "action_id" : 42,
3798 "action_const" : true,
3799 "action_data" : [],
3800 "action_entry_const" : true
3801 }
3802 },
3803 {
3804 "name" : "tbl_act_10",
3805 "id" : 23,
3806 "key" : [],
3807 "match_type" : "exact",
3808 "type" : "simple",
3809 "max_size" : 1024,
3810 "with_counters" : false,
3811 "support_timeout" : false,
3812 "direct_meters" : null,
3813 "action_ids" : [43],
3814 "actions" : ["act_10"],
3815 "base_default_next" : null,
3816 "next_tables" : {
3817 "act_10" : null
3818 },
3819 "default_entry" : {
3820 "action_id" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07003821 "action_const" : true,
3822 "action_data" : [],
3823 "action_entry_const" : true
3824 }
3825 }
3826 ],
3827 "action_profiles" : [
3828 {
3829 "name" : "next.ecmp_selector",
3830 "id" : 0,
3831 "max_size" : 64,
3832 "selector" : {
3833 "algo" : "crc16",
3834 "input" : [
3835 {
3836 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003837 "value" : ["ethernet", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003838 },
3839 {
3840 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003841 "value" : ["ethernet", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003842 },
3843 {
3844 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003845 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003846 },
3847 {
3848 "type" : "field",
3849 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3850 },
3851 {
3852 "type" : "field",
3853 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3854 }
3855 ]
3856 }
3857 }
3858 ],
3859 "conditionals" : [
3860 {
3861 "name" : "node_2",
3862 "id" : 0,
3863 "source_info" : {
3864 "filename" : "./include/control/packetio.p4",
3865 "line" : 25,
3866 "column" : 12,
3867 "source_fragment" : "hdr.packet_out.isValid()"
3868 },
3869 "expression" : {
3870 "type" : "expression",
3871 "value" : {
3872 "op" : "==",
3873 "left" : {
3874 "type" : "field",
3875 "value" : ["packet_out", "$valid$"]
3876 },
3877 "right" : {
3878 "type" : "hexstr",
3879 "value" : "0x01"
3880 }
3881 }
3882 },
3883 "true_next" : "tbl_act",
3884 "false_next" : "filtering.ingress_port_vlan"
3885 },
3886 {
3887 "name" : "node_6",
3888 "id" : 1,
3889 "source_info" : {
3890 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003891 "line" : 154,
Yi Tsengbe342052017-11-03 10:21:23 -07003892 "column" : 11,
3893 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3894 },
3895 "expression" : {
3896 "type" : "expression",
3897 "value" : {
3898 "op" : "==",
3899 "left" : {
3900 "type" : "field",
3901 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3902 },
3903 "right" : {
3904 "type" : "hexstr",
3905 "value" : "0x00"
3906 }
3907 }
3908 },
3909 "true_next" : "forwarding.bridging",
3910 "false_next" : "node_8"
3911 },
3912 {
3913 "name" : "node_8",
3914 "id" : 2,
3915 "source_info" : {
3916 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003917 "line" : 155,
Yi Tsengbe342052017-11-03 10:21:23 -07003918 "column" : 17,
3919 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3920 },
3921 "expression" : {
3922 "type" : "expression",
3923 "value" : {
3924 "op" : "==",
3925 "left" : {
3926 "type" : "field",
3927 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3928 },
3929 "right" : {
3930 "type" : "hexstr",
3931 "value" : "0x01"
3932 }
3933 }
3934 },
3935 "true_next" : "forwarding.mpls",
Yi Tseng1d842672017-11-28 16:06:52 -08003936 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003937 },
3938 {
3939 "name" : "node_10",
3940 "id" : 3,
3941 "source_info" : {
3942 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003943 "line" : 157,
Yi Tseng1d842672017-11-28 16:06:52 -08003944 "column" : 16,
3945 "source_fragment" : "hdr.ipv4.isValid()"
3946 },
3947 "expression" : {
3948 "type" : "expression",
3949 "value" : {
3950 "op" : "==",
3951 "left" : {
3952 "type" : "field",
3953 "value" : ["ipv4", "$valid$"]
3954 },
3955 "right" : {
3956 "type" : "hexstr",
3957 "value" : "0x01"
3958 }
3959 }
3960 },
3961 "true_next" : "tbl_act_0",
3962 "false_next" : "tbl_act_1"
3963 },
3964 {
3965 "name" : "node_13",
3966 "id" : 4,
3967 "source_info" : {
3968 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003969 "line" : 165,
Yi Tsengbe342052017-11-03 10:21:23 -07003970 "column" : 17,
3971 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3972 },
3973 "expression" : {
3974 "type" : "expression",
3975 "value" : {
3976 "op" : "==",
3977 "left" : {
3978 "type" : "field",
3979 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3980 },
3981 "right" : {
3982 "type" : "hexstr",
3983 "value" : "0x02"
3984 }
3985 }
3986 },
3987 "true_next" : "forwarding.unicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08003988 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07003989 },
3990 {
Yi Tseng1d842672017-11-28 16:06:52 -08003991 "name" : "node_15",
3992 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003993 "source_info" : {
3994 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003995 "line" : 166,
Yi Tsengbe342052017-11-03 10:21:23 -07003996 "column" : 17,
3997 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
3998 },
3999 "expression" : {
4000 "type" : "expression",
4001 "value" : {
4002 "op" : "==",
4003 "left" : {
4004 "type" : "field",
4005 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4006 },
4007 "right" : {
4008 "type" : "hexstr",
4009 "value" : "0x03"
4010 }
4011 }
4012 },
4013 "true_next" : "forwarding.multicast_v4",
Yi Tseng1d842672017-11-28 16:06:52 -08004014 "false_next" : "node_17"
Yi Tsengbe342052017-11-03 10:21:23 -07004015 },
4016 {
Yi Tseng1d842672017-11-28 16:06:52 -08004017 "name" : "node_17",
4018 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07004019 "source_info" : {
4020 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004021 "line" : 167,
Yi Tsengbe342052017-11-03 10:21:23 -07004022 "column" : 17,
4023 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
4024 },
4025 "expression" : {
4026 "type" : "expression",
4027 "value" : {
4028 "op" : "==",
4029 "left" : {
4030 "type" : "field",
4031 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4032 },
4033 "right" : {
4034 "type" : "hexstr",
4035 "value" : "0x04"
4036 }
4037 }
4038 },
4039 "true_next" : "forwarding.unicast_v6",
Yi Tseng1d842672017-11-28 16:06:52 -08004040 "false_next" : "node_19"
Yi Tsengbe342052017-11-03 10:21:23 -07004041 },
4042 {
Yi Tseng1d842672017-11-28 16:06:52 -08004043 "name" : "node_19",
4044 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07004045 "source_info" : {
4046 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004047 "line" : 168,
Yi Tsengbe342052017-11-03 10:21:23 -07004048 "column" : 17,
4049 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
4050 },
4051 "expression" : {
4052 "type" : "expression",
4053 "value" : {
4054 "op" : "==",
4055 "left" : {
4056 "type" : "field",
4057 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4058 },
4059 "right" : {
4060 "type" : "hexstr",
4061 "value" : "0x05"
4062 }
4063 }
4064 },
4065 "true_next" : "forwarding.multicast_v6",
4066 "false_next" : "forwarding.acl"
4067 },
4068 {
Yi Tseng1d842672017-11-28 16:06:52 -08004069 "name" : "node_25",
4070 "id" : 8,
4071 "expression" : {
4072 "type" : "expression",
4073 "value" : {
4074 "op" : "d2b",
4075 "left" : null,
4076 "right" : {
4077 "type" : "field",
4078 "value" : ["scalars", "next_tmp_0"]
4079 }
4080 }
4081 },
4082 "true_next" : "node_26",
4083 "false_next" : "next.hashed"
4084 },
4085 {
4086 "name" : "node_26",
4087 "id" : 9,
4088 "source_info" : {
4089 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004090 "line" : 138,
Yi Tseng1d842672017-11-28 16:06:52 -08004091 "column" : 17,
4092 "source_fragment" : "hdr.mpls.isValid()"
4093 },
4094 "expression" : {
4095 "type" : "expression",
4096 "value" : {
4097 "op" : "!=",
4098 "left" : {
4099 "type" : "field",
4100 "value" : ["mpls", "$valid$"]
4101 },
4102 "right" : {
4103 "type" : "hexstr",
4104 "value" : "0x01"
4105 }
4106 }
4107 },
4108 "true_next" : "node_27",
4109 "false_next" : "next.hashed"
4110 },
4111 {
4112 "name" : "node_27",
4113 "id" : 10,
4114 "source_info" : {
4115 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004116 "line" : 139,
Yi Tseng1d842672017-11-28 16:06:52 -08004117 "column" : 19,
4118 "source_fragment" : "hdr.ipv4.isValid()"
4119 },
4120 "expression" : {
4121 "type" : "expression",
4122 "value" : {
4123 "op" : "==",
4124 "left" : {
4125 "type" : "field",
4126 "value" : ["ipv4", "$valid$"]
4127 },
4128 "right" : {
4129 "type" : "hexstr",
4130 "value" : "0x01"
4131 }
4132 }
4133 },
4134 "true_next" : "tbl_act_4",
4135 "false_next" : "node_29"
4136 },
4137 {
4138 "name" : "node_29",
4139 "id" : 11,
4140 "source_info" : {
4141 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004142 "line" : 142,
Yi Tseng1d842672017-11-28 16:06:52 -08004143 "column" : 25,
4144 "source_fragment" : "hdr.ipv6.isValid()"
4145 },
4146 "expression" : {
4147 "type" : "expression",
4148 "value" : {
4149 "op" : "==",
4150 "left" : {
4151 "type" : "field",
4152 "value" : ["ipv6", "$valid$"]
4153 },
4154 "right" : {
4155 "type" : "hexstr",
4156 "value" : "0x01"
4157 }
4158 }
4159 },
4160 "true_next" : "tbl_act_5",
4161 "false_next" : "next.hashed"
4162 },
4163 {
4164 "name" : "node_33",
4165 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07004166 "source_info" : {
4167 "filename" : "./include/control/port_counter.p4",
4168 "line" : 27,
4169 "column" : 12,
4170 "source_fragment" : "standard_metadata.egress_spec < 511"
4171 },
4172 "expression" : {
4173 "type" : "expression",
4174 "value" : {
4175 "op" : "<",
4176 "left" : {
4177 "type" : "field",
4178 "value" : ["standard_metadata", "egress_spec"]
4179 },
4180 "right" : {
4181 "type" : "hexstr",
4182 "value" : "0x01ff"
4183 }
4184 }
4185 },
Yi Tseng1d842672017-11-28 16:06:52 -08004186 "true_next" : "tbl_act_6",
4187 "false_next" : "node_35"
Yi Tsengbe342052017-11-03 10:21:23 -07004188 },
4189 {
Yi Tseng1d842672017-11-28 16:06:52 -08004190 "name" : "node_35",
4191 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07004192 "source_info" : {
4193 "filename" : "./include/control/port_counter.p4",
4194 "line" : 30,
4195 "column" : 12,
4196 "source_fragment" : "standard_metadata.ingress_port < 511"
4197 },
4198 "expression" : {
4199 "type" : "expression",
4200 "value" : {
4201 "op" : "<",
4202 "left" : {
4203 "type" : "field",
4204 "value" : ["standard_metadata", "ingress_port"]
4205 },
4206 "right" : {
4207 "type" : "hexstr",
4208 "value" : "0x01ff"
4209 }
4210 }
4211 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08004212 "true_next" : "tbl_act_7",
4213 "false_next" : "node_37"
Yi Tsengf55eaa82017-11-29 15:51:28 -08004214 },
4215 {
Yi Tseng3a5731e2018-01-22 11:38:58 -08004216 "name" : "node_37",
Yi Tseng1d842672017-11-28 16:06:52 -08004217 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07004218 "source_info" : {
4219 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004220 "line" : 159,
Yi Tsengbe342052017-11-03 10:21:23 -07004221 "column" : 12,
4222 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
4223 },
4224 "expression" : {
4225 "type" : "expression",
4226 "value" : {
4227 "op" : "d2b",
4228 "left" : null,
4229 "right" : {
4230 "type" : "field",
4231 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
4232 }
4233 }
4234 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08004235 "false_next" : null,
4236 "true_next" : "node_38"
Yi Tsengbe342052017-11-03 10:21:23 -07004237 },
4238 {
Yi Tseng3a5731e2018-01-22 11:38:58 -08004239 "name" : "node_38",
Yi Tseng1d842672017-11-28 16:06:52 -08004240 "id" : 15,
4241 "source_info" : {
4242 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004243 "line" : 160,
Yi Tseng1d842672017-11-28 16:06:52 -08004244 "column" : 16,
4245 "source_fragment" : "hdr.mpls.isValid()"
4246 },
4247 "expression" : {
4248 "type" : "expression",
4249 "value" : {
4250 "op" : "==",
4251 "left" : {
4252 "type" : "field",
4253 "value" : ["mpls", "$valid$"]
4254 },
4255 "right" : {
4256 "type" : "hexstr",
4257 "value" : "0x01"
4258 }
4259 }
4260 },
4261 "true_next" : "tbl_act_8",
4262 "false_next" : "tbl_act_9"
Yi Tseng3a5731e2018-01-22 11:38:58 -08004263 }
4264 ]
4265 },
4266 {
4267 "name" : "egress",
4268 "id" : 1,
4269 "source_info" : {
4270 "filename" : "fabric.p4",
4271 "line" : 50,
4272 "column" : 8,
4273 "source_fragment" : "FabricEgress"
4274 },
4275 "init_table" : "node_44",
4276 "tables" : [
4277 {
4278 "name" : "tbl_act_11",
4279 "id" : 24,
4280 "key" : [],
4281 "match_type" : "exact",
4282 "type" : "simple",
4283 "max_size" : 1024,
4284 "with_counters" : false,
4285 "support_timeout" : false,
4286 "direct_meters" : null,
4287 "action_ids" : [44],
4288 "actions" : ["act_11"],
4289 "base_default_next" : null,
4290 "next_tables" : {
4291 "act_11" : null
4292 },
4293 "default_entry" : {
4294 "action_id" : 44,
4295 "action_const" : true,
4296 "action_data" : [],
4297 "action_entry_const" : true
4298 }
4299 }
4300 ],
4301 "action_profiles" : [],
4302 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004303 {
4304 "name" : "node_44",
4305 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07004306 "source_info" : {
4307 "filename" : "./include/control/packetio.p4",
4308 "line" : 38,
4309 "column" : 12,
4310 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
4311 },
4312 "expression" : {
4313 "type" : "expression",
4314 "value" : {
4315 "op" : "==",
4316 "left" : {
4317 "type" : "field",
4318 "value" : ["standard_metadata", "egress_port"]
4319 },
4320 "right" : {
4321 "type" : "hexstr",
4322 "value" : "0x00ff"
4323 }
4324 }
4325 },
4326 "false_next" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004327 "true_next" : "tbl_act_11"
Yi Tsengbe342052017-11-03 10:21:23 -07004328 }
4329 ]
4330 }
4331 ],
4332 "checksums" : [
4333 {
4334 "name" : "cksum",
4335 "id" : 0,
4336 "target" : ["ipv4", "hdr_checksum"],
4337 "type" : "generic",
4338 "calculation" : "calc"
4339 },
4340 {
4341 "name" : "cksum_0",
4342 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07004343 "target" : ["ipv4", "hdr_checksum"],
4344 "type" : "generic",
Yi Tsengf73a5532017-11-17 15:58:57 -08004345 "calculation" : "calc_0"
Yi Tsengbe342052017-11-03 10:21:23 -07004346 }
4347 ],
4348 "force_arith" : [],
4349 "extern_instances" : [],
4350 "field_aliases" : [
4351 [
4352 "queueing_metadata.enq_timestamp",
4353 ["standard_metadata", "enq_timestamp"]
4354 ],
4355 [
4356 "queueing_metadata.enq_qdepth",
4357 ["standard_metadata", "enq_qdepth"]
4358 ],
4359 [
4360 "queueing_metadata.deq_timedelta",
4361 ["standard_metadata", "deq_timedelta"]
4362 ],
4363 [
4364 "queueing_metadata.deq_qdepth",
4365 ["standard_metadata", "deq_qdepth"]
4366 ],
4367 [
4368 "intrinsic_metadata.ingress_global_timestamp",
4369 ["standard_metadata", "ingress_global_timestamp"]
4370 ],
4371 [
4372 "intrinsic_metadata.lf_field_list",
4373 ["standard_metadata", "lf_field_list"]
4374 ],
4375 [
4376 "intrinsic_metadata.mcast_grp",
4377 ["standard_metadata", "mcast_grp"]
4378 ],
4379 [
4380 "intrinsic_metadata.resubmit_flag",
4381 ["standard_metadata", "resubmit_flag"]
4382 ],
4383 [
4384 "intrinsic_metadata.egress_rid",
4385 ["standard_metadata", "egress_rid"]
4386 ]
4387 ]
4388}