blob: 24aeb257d70faaaf4da31d194b72bfaa8e7fad9b [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 {
Yi Tsengbe342052017-11-03 10:21:23 -0700209 "name" : "mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800210 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700211 "header_type" : "mpls_t",
212 "metadata" : false,
213 "pi_omit" : true
214 },
215 {
216 "name" : "ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800217 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700218 "header_type" : "ipv4_t",
219 "metadata" : false,
220 "pi_omit" : true
221 },
222 {
223 "name" : "ipv6",
Yi Tsengbd46d052018-01-22 17:18:16 -0800224 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700225 "header_type" : "ipv6_t",
226 "metadata" : false,
227 "pi_omit" : true
228 },
229 {
230 "name" : "arp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800231 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700232 "header_type" : "arp_t",
233 "metadata" : false,
234 "pi_omit" : true
235 },
236 {
237 "name" : "tcp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800238 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700239 "header_type" : "tcp_t",
240 "metadata" : false,
241 "pi_omit" : true
242 },
243 {
244 "name" : "udp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800245 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700246 "header_type" : "udp_t",
247 "metadata" : false,
248 "pi_omit" : true
249 },
250 {
251 "name" : "icmp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800252 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700253 "header_type" : "icmp_t",
254 "metadata" : false,
255 "pi_omit" : true
256 },
257 {
258 "name" : "packet_out",
Yi Tsengbd46d052018-01-22 17:18:16 -0800259 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700260 "header_type" : "packet_out_header_t",
261 "metadata" : false,
262 "pi_omit" : true
263 },
264 {
265 "name" : "packet_in",
Yi Tsengbd46d052018-01-22 17:18:16 -0800266 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700267 "header_type" : "packet_in_header_t",
268 "metadata" : false,
269 "pi_omit" : true
270 }
271 ],
272 "header_stacks" : [],
273 "header_union_types" : [],
274 "header_unions" : [],
275 "header_union_stacks" : [],
276 "field_lists" : [],
277 "errors" : [
278 ["NoError", 0],
279 ["PacketTooShort", 1],
280 ["NoMatch", 2],
281 ["StackOutOfBounds", 3],
282 ["HeaderTooShort", 4],
283 ["ParserTimeout", 5]
284 ],
285 "enums" : [],
286 "parsers" : [
287 {
288 "name" : "parser",
289 "id" : 0,
290 "init_state" : "start",
291 "parse_states" : [
292 {
293 "name" : "start",
294 "id" : 0,
295 "parser_ops" : [],
296 "transitions" : [
297 {
298 "value" : "0x00ff",
299 "mask" : null,
300 "next_state" : "parse_packet_out"
301 },
302 {
303 "value" : "default",
304 "mask" : null,
305 "next_state" : "parse_ethernet"
306 }
307 ],
308 "transition_key" : [
309 {
310 "type" : "field",
311 "value" : ["standard_metadata", "ingress_port"]
312 }
313 ]
314 },
315 {
316 "name" : "parse_packet_out",
317 "id" : 1,
318 "parser_ops" : [
319 {
320 "parameters" : [
321 {
322 "type" : "regular",
323 "value" : "packet_out"
324 }
325 ],
326 "op" : "extract"
327 }
328 ],
329 "transitions" : [
330 {
331 "value" : "default",
332 "mask" : null,
333 "next_state" : "parse_ethernet"
334 }
335 ],
336 "transition_key" : []
337 },
338 {
339 "name" : "parse_ethernet",
340 "id" : 2,
341 "parser_ops" : [
342 {
343 "parameters" : [
344 {
345 "type" : "regular",
346 "value" : "ethernet"
347 }
348 ],
349 "op" : "extract"
Yi Tseng1d842672017-11-28 16:06:52 -0800350 },
351 {
352 "parameters" : [
353 {
354 "type" : "field",
355 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
356 },
357 {
358 "type" : "field",
359 "value" : ["ethernet", "ether_type"]
360 }
361 ],
362 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700363 }
364 ],
365 "transitions" : [
366 {
Yi Tsengbe342052017-11-03 10:21:23 -0700367 "value" : "0x8100",
368 "mask" : null,
369 "next_state" : "parse_vlan_tag"
370 },
371 {
372 "value" : "0x8847",
373 "mask" : null,
374 "next_state" : "parse_mpls"
375 },
376 {
377 "value" : "0x0806",
378 "mask" : null,
379 "next_state" : "parse_arp"
380 },
381 {
382 "value" : "0x0800",
383 "mask" : null,
384 "next_state" : "parse_ipv4"
385 },
386 {
387 "value" : "0x86dd",
388 "mask" : null,
389 "next_state" : "parse_ipv6"
390 },
391 {
392 "value" : "default",
393 "mask" : null,
394 "next_state" : null
395 }
396 ],
397 "transition_key" : [
398 {
399 "type" : "field",
400 "value" : ["ethernet", "ether_type"]
401 }
402 ]
403 },
404 {
405 "name" : "parse_vlan_tag",
406 "id" : 3,
407 "parser_ops" : [
408 {
409 "parameters" : [
410 {
411 "type" : "regular",
412 "value" : "vlan_tag"
413 }
414 ],
415 "op" : "extract"
416 }
417 ],
418 "transitions" : [
419 {
Yi Tsengbe342052017-11-03 10:21:23 -0700420 "value" : "0x0806",
421 "mask" : null,
422 "next_state" : "parse_arp"
423 },
424 {
425 "value" : "0x0800",
426 "mask" : null,
427 "next_state" : "parse_ipv4"
428 },
429 {
430 "value" : "0x86dd",
431 "mask" : null,
432 "next_state" : "parse_ipv6"
433 },
434 {
Yi Tsengbd46d052018-01-22 17:18:16 -0800435 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700436 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800437 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700438 },
439 {
440 "value" : "default",
441 "mask" : null,
442 "next_state" : null
443 }
444 ],
445 "transition_key" : [
446 {
447 "type" : "field",
448 "value" : ["vlan_tag", "ether_type"]
449 }
450 ]
451 },
452 {
453 "name" : "parse_mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800454 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700455 "parser_ops" : [
456 {
457 "parameters" : [
458 {
459 "type" : "regular",
460 "value" : "mpls"
461 }
462 ],
463 "op" : "extract"
464 },
465 {
466 "parameters" : [
467 {
468 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800469 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700470 },
471 {
472 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800473 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700474 }
475 ],
476 "op" : "set"
477 }
478 ],
479 "transitions" : [
480 {
481 "value" : "0x04",
482 "mask" : null,
483 "next_state" : "parse_ipv4"
484 },
485 {
486 "value" : "0x06",
487 "mask" : null,
488 "next_state" : "parse_ipv6"
489 },
490 {
491 "value" : "default",
492 "mask" : null,
493 "next_state" : "parse_ethernet"
494 }
495 ],
496 "transition_key" : [
497 {
498 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800499 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700500 }
501 ]
502 },
503 {
504 "name" : "parse_ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800505 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700506 "parser_ops" : [
507 {
508 "parameters" : [
509 {
510 "type" : "regular",
511 "value" : "ipv4"
512 }
513 ],
514 "op" : "extract"
515 },
516 {
517 "parameters" : [
518 {
519 "type" : "field",
520 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
521 },
522 {
523 "type" : "field",
524 "value" : ["ipv4", "protocol"]
525 }
526 ],
527 "op" : "set"
528 }
529 ],
530 "transitions" : [
531 {
532 "value" : "0x06",
533 "mask" : null,
534 "next_state" : "parse_tcp"
535 },
536 {
537 "value" : "0x11",
538 "mask" : null,
539 "next_state" : "parse_udp"
540 },
541 {
542 "value" : "0x01",
543 "mask" : null,
544 "next_state" : "parse_icmp"
545 },
546 {
547 "value" : "default",
548 "mask" : null,
549 "next_state" : null
550 }
551 ],
552 "transition_key" : [
553 {
554 "type" : "field",
555 "value" : ["ipv4", "protocol"]
556 }
557 ]
558 },
559 {
560 "name" : "parse_ipv6",
Yi Tsengbd46d052018-01-22 17:18:16 -0800561 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700562 "parser_ops" : [
563 {
564 "parameters" : [
565 {
566 "type" : "regular",
567 "value" : "ipv6"
568 }
569 ],
570 "op" : "extract"
571 },
572 {
573 "parameters" : [
574 {
575 "type" : "field",
576 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
577 },
578 {
579 "type" : "field",
580 "value" : ["ipv6", "next_hdr"]
581 }
582 ],
583 "op" : "set"
584 }
585 ],
586 "transitions" : [
587 {
588 "value" : "0x06",
589 "mask" : null,
590 "next_state" : "parse_tcp"
591 },
592 {
593 "value" : "0x11",
594 "mask" : null,
595 "next_state" : "parse_udp"
596 },
597 {
598 "value" : "0x3a",
599 "mask" : null,
600 "next_state" : "parse_icmp"
601 },
602 {
603 "value" : "default",
604 "mask" : null,
605 "next_state" : null
606 }
607 ],
608 "transition_key" : [
609 {
610 "type" : "field",
611 "value" : ["ipv6", "next_hdr"]
612 }
613 ]
614 },
615 {
616 "name" : "parse_arp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800617 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700618 "parser_ops" : [
619 {
620 "parameters" : [
621 {
622 "type" : "regular",
623 "value" : "arp"
624 }
625 ],
626 "op" : "extract"
627 }
628 ],
629 "transitions" : [
630 {
631 "value" : "default",
632 "mask" : null,
633 "next_state" : null
634 }
635 ],
636 "transition_key" : []
637 },
638 {
639 "name" : "parse_tcp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800640 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700641 "parser_ops" : [
642 {
643 "parameters" : [
644 {
645 "type" : "regular",
646 "value" : "tcp"
647 }
648 ],
649 "op" : "extract"
650 },
651 {
652 "parameters" : [
653 {
654 "type" : "field",
655 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
656 },
657 {
658 "type" : "field",
659 "value" : ["tcp", "src_port"]
660 }
661 ],
662 "op" : "set"
663 },
664 {
665 "parameters" : [
666 {
667 "type" : "field",
668 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
669 },
670 {
671 "type" : "field",
672 "value" : ["tcp", "dst_port"]
673 }
674 ],
675 "op" : "set"
676 }
677 ],
678 "transitions" : [
679 {
680 "value" : "default",
681 "mask" : null,
682 "next_state" : null
683 }
684 ],
685 "transition_key" : []
686 },
687 {
688 "name" : "parse_udp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800689 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700690 "parser_ops" : [
691 {
692 "parameters" : [
693 {
694 "type" : "regular",
695 "value" : "udp"
696 }
697 ],
698 "op" : "extract"
699 },
700 {
701 "parameters" : [
702 {
703 "type" : "field",
704 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
705 },
706 {
707 "type" : "field",
708 "value" : ["udp", "src_port"]
709 }
710 ],
711 "op" : "set"
712 },
713 {
714 "parameters" : [
715 {
716 "type" : "field",
717 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
718 },
719 {
720 "type" : "field",
721 "value" : ["udp", "dst_port"]
722 }
723 ],
724 "op" : "set"
725 }
726 ],
727 "transitions" : [
728 {
729 "value" : "default",
730 "mask" : null,
731 "next_state" : null
732 }
733 ],
734 "transition_key" : []
735 },
736 {
737 "name" : "parse_icmp",
Yi Tsengbd46d052018-01-22 17:18:16 -0800738 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700739 "parser_ops" : [
740 {
741 "parameters" : [
742 {
743 "type" : "regular",
744 "value" : "icmp"
745 }
746 ],
747 "op" : "extract"
748 }
749 ],
750 "transitions" : [
751 {
752 "value" : "default",
753 "mask" : null,
754 "next_state" : null
755 }
756 ],
757 "transition_key" : []
758 }
759 ]
760 }
761 ],
762 "deparsers" : [
763 {
764 "name" : "deparser",
765 "id" : 0,
766 "source_info" : {
767 "filename" : "./include/parser.p4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800768 "line" : 125,
Yi Tsengbe342052017-11-03 10:21:23 -0700769 "column" : 8,
770 "source_fragment" : "FabricDeparser"
771 },
Yi Tsengbd46d052018-01-22 17:18:16 -0800772 "order" : ["packet_in", "ethernet", "vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700773 }
774 ],
775 "meter_arrays" : [],
776 "counter_arrays" : [
777 {
Yi Tseng3a5731e2018-01-22 11:38:58 -0800778 "name" : "filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800779 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800780 "is_direct" : true,
781 "binding" : "filtering.ingress_port_vlan"
782 },
783 {
784 "name" : "filtering.fwd_classifier_counter",
785 "id" : 1,
786 "is_direct" : true,
787 "binding" : "filtering.fwd_classifier"
788 },
789 {
790 "name" : "forwarding.bridging_counter",
791 "id" : 2,
792 "is_direct" : true,
793 "binding" : "forwarding.bridging"
794 },
795 {
796 "name" : "forwarding.mpls_counter",
797 "id" : 3,
798 "is_direct" : true,
799 "binding" : "forwarding.mpls"
800 },
801 {
802 "name" : "forwarding.unicast_v4_counter",
803 "id" : 4,
804 "is_direct" : true,
805 "binding" : "forwarding.unicast_v4"
806 },
807 {
808 "name" : "forwarding.multicast_v4_counter",
809 "id" : 5,
810 "is_direct" : true,
811 "binding" : "forwarding.multicast_v4"
812 },
813 {
814 "name" : "forwarding.unicast_v6_counter",
815 "id" : 6,
816 "is_direct" : true,
817 "binding" : "forwarding.unicast_v6"
818 },
819 {
820 "name" : "forwarding.multicast_v6_counter",
821 "id" : 7,
822 "is_direct" : true,
823 "binding" : "forwarding.multicast_v6"
824 },
825 {
826 "name" : "forwarding.acl_counter",
827 "id" : 8,
828 "is_direct" : true,
829 "binding" : "forwarding.acl"
830 },
831 {
832 "name" : "next.simple_counter",
833 "id" : 9,
834 "is_direct" : true,
835 "binding" : "next.simple"
836 },
837 {
838 "name" : "next.hashed_counter",
839 "id" : 10,
840 "is_direct" : true,
841 "binding" : "next.hashed"
842 },
843 {
844 "name" : "next.broadcast_counter",
845 "id" : 11,
846 "is_direct" : true,
847 "binding" : "next.broadcast"
848 },
849 {
850 "name" : "port_counters_control.egress_port_counter",
851 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700852 "source_info" : {
853 "filename" : "./include/control/port_counter.p4",
854 "line" : 23,
855 "column" : 38,
856 "source_fragment" : "egress_port_counter"
857 },
858 "size" : 511,
859 "is_direct" : false
860 },
861 {
862 "name" : "port_counters_control.ingress_port_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800863 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -0700864 "source_info" : {
865 "filename" : "./include/control/port_counter.p4",
866 "line" : 24,
867 "column" : 38,
868 "source_fragment" : "ingress_port_counter"
869 },
870 "size" : 511,
871 "is_direct" : false
872 }
873 ],
874 "register_arrays" : [],
875 "calculations" : [
876 {
877 "name" : "calc",
878 "id" : 0,
879 "source_info" : {
880 "filename" : "./include/checksum.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800881 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700882 "column" : 8,
883 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
884 },
885 "algo" : "csum16",
886 "input" : [
887 {
888 "type" : "field",
889 "value" : ["ipv4", "version"]
890 },
891 {
892 "type" : "field",
893 "value" : ["ipv4", "ihl"]
894 },
895 {
896 "type" : "field",
897 "value" : ["ipv4", "diffserv"]
898 },
899 {
900 "type" : "field",
901 "value" : ["ipv4", "total_len"]
902 },
903 {
904 "type" : "field",
905 "value" : ["ipv4", "identification"]
906 },
907 {
908 "type" : "field",
909 "value" : ["ipv4", "flags"]
910 },
911 {
912 "type" : "field",
913 "value" : ["ipv4", "frag_offset"]
914 },
915 {
916 "type" : "field",
917 "value" : ["ipv4", "ttl"]
918 },
919 {
920 "type" : "field",
921 "value" : ["ipv4", "protocol"]
922 },
923 {
924 "type" : "field",
925 "value" : ["ipv4", "src_addr"]
926 },
927 {
928 "type" : "field",
929 "value" : ["ipv4", "dst_addr"]
930 }
931 ]
932 },
933 {
934 "name" : "calc_0",
935 "id" : 1,
936 "source_info" : {
937 "filename" : "./include/checksum.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800938 "line" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -0700939 "column" : 8,
940 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
941 },
942 "algo" : "csum16",
943 "input" : [
944 {
945 "type" : "field",
946 "value" : ["ipv4", "version"]
947 },
948 {
949 "type" : "field",
950 "value" : ["ipv4", "ihl"]
951 },
952 {
953 "type" : "field",
954 "value" : ["ipv4", "diffserv"]
955 },
956 {
957 "type" : "field",
958 "value" : ["ipv4", "total_len"]
959 },
960 {
961 "type" : "field",
962 "value" : ["ipv4", "identification"]
963 },
964 {
965 "type" : "field",
966 "value" : ["ipv4", "flags"]
967 },
968 {
969 "type" : "field",
970 "value" : ["ipv4", "frag_offset"]
971 },
972 {
973 "type" : "field",
974 "value" : ["ipv4", "ttl"]
975 },
976 {
977 "type" : "field",
978 "value" : ["ipv4", "protocol"]
979 },
980 {
981 "type" : "field",
982 "value" : ["ipv4", "src_addr"]
983 },
984 {
985 "type" : "field",
986 "value" : ["ipv4", "dst_addr"]
987 }
988 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700989 }
990 ],
991 "learn_lists" : [],
992 "actions" : [
993 {
994 "name" : "nop",
995 "id" : 0,
996 "runtime_data" : [],
997 "primitives" : []
998 },
999 {
1000 "name" : "nop",
1001 "id" : 1,
1002 "runtime_data" : [],
1003 "primitives" : []
1004 },
1005 {
Yi Tseng1d842672017-11-28 16:06:52 -08001006 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001007 "id" : 2,
1008 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001009 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001010 },
1011 {
Yi Tseng1d842672017-11-28 16:06:52 -08001012 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001013 "id" : 3,
1014 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001015 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001016 },
1017 {
1018 "name" : "NoAction",
1019 "id" : 4,
1020 "runtime_data" : [],
1021 "primitives" : []
1022 },
1023 {
1024 "name" : "NoAction",
1025 "id" : 5,
1026 "runtime_data" : [],
1027 "primitives" : []
1028 },
1029 {
1030 "name" : "NoAction",
1031 "id" : 6,
1032 "runtime_data" : [],
1033 "primitives" : []
1034 },
1035 {
1036 "name" : "NoAction",
1037 "id" : 7,
1038 "runtime_data" : [],
1039 "primitives" : []
1040 },
1041 {
1042 "name" : "NoAction",
1043 "id" : 8,
1044 "runtime_data" : [],
1045 "primitives" : []
1046 },
1047 {
1048 "name" : "NoAction",
1049 "id" : 9,
1050 "runtime_data" : [],
1051 "primitives" : []
1052 },
1053 {
1054 "name" : "NoAction",
1055 "id" : 10,
1056 "runtime_data" : [],
1057 "primitives" : []
1058 },
1059 {
Yi Tseng1d842672017-11-28 16:06:52 -08001060 "name" : "filtering.drop",
Yi Tsengbe342052017-11-03 10:21:23 -07001061 "id" : 11,
1062 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001063 "primitives" : [
1064 {
1065 "op" : "drop",
1066 "parameters" : [],
1067 "source_info" : {
1068 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001069 "line" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -08001070 "column" : 8,
1071 "source_fragment" : "mark_to_drop()"
1072 }
1073 }
1074 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001075 },
1076 {
Yi Tsengbe342052017-11-03 10:21:23 -07001077 "name" : "filtering.set_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001078 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001079 "runtime_data" : [
1080 {
1081 "name" : "new_vlan_id",
1082 "bitwidth" : 12
1083 }
1084 ],
1085 "primitives" : [
1086 {
1087 "op" : "assign",
1088 "parameters" : [
1089 {
1090 "type" : "field",
1091 "value" : ["vlan_tag", "vlan_id"]
1092 },
1093 {
1094 "type" : "runtime_data",
1095 "value" : 0
1096 }
1097 ],
1098 "source_info" : {
1099 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001100 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001101 "column" : 8,
1102 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1103 }
1104 }
1105 ]
1106 },
1107 {
1108 "name" : "filtering.push_internal_vlan",
Yi Tseng1d842672017-11-28 16:06:52 -08001109 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07001110 "runtime_data" : [
1111 {
1112 "name" : "new_vlan_id",
1113 "bitwidth" : 12
1114 }
1115 ],
1116 "primitives" : [
1117 {
1118 "op" : "add_header",
1119 "parameters" : [
1120 {
1121 "type" : "header",
1122 "value" : "vlan_tag"
1123 }
1124 ],
1125 "source_info" : {
1126 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001127 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001128 "column" : 8,
1129 "source_fragment" : "hdr.vlan_tag.setValid()"
1130 }
1131 },
1132 {
1133 "op" : "assign",
1134 "parameters" : [
1135 {
1136 "type" : "field",
1137 "value" : ["vlan_tag", "cfi"]
1138 },
1139 {
1140 "type" : "hexstr",
1141 "value" : "0x00"
1142 }
1143 ],
1144 "source_info" : {
1145 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001146 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001147 "column" : 8,
1148 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1149 }
1150 },
1151 {
1152 "op" : "assign",
1153 "parameters" : [
1154 {
1155 "type" : "field",
1156 "value" : ["vlan_tag", "pri"]
1157 },
1158 {
1159 "type" : "hexstr",
1160 "value" : "0x00"
1161 }
1162 ],
1163 "source_info" : {
1164 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001165 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001166 "column" : 8,
1167 "source_fragment" : "hdr.vlan_tag.pri = 0"
1168 }
1169 },
1170 {
1171 "op" : "assign",
1172 "parameters" : [
1173 {
1174 "type" : "field",
1175 "value" : ["vlan_tag", "ether_type"]
1176 },
1177 {
Yi Tseng1d842672017-11-28 16:06:52 -08001178 "type" : "field",
1179 "value" : ["ethernet", "ether_type"]
1180 }
1181 ],
1182 "source_info" : {
1183 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001184 "line" : 44,
Yi Tseng1d842672017-11-28 16:06:52 -08001185 "column" : 8,
1186 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1187 }
1188 },
1189 {
1190 "op" : "assign",
1191 "parameters" : [
1192 {
1193 "type" : "field",
1194 "value" : ["ethernet", "ether_type"]
1195 },
1196 {
Yi Tsengbe342052017-11-03 10:21:23 -07001197 "type" : "hexstr",
1198 "value" : "0x8100"
1199 }
1200 ],
1201 "source_info" : {
1202 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001203 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001204 "column" : 31,
1205 "source_fragment" : "0x8100; ..."
1206 }
1207 },
1208 {
1209 "op" : "assign",
1210 "parameters" : [
1211 {
1212 "type" : "field",
1213 "value" : ["vlan_tag", "vlan_id"]
1214 },
1215 {
1216 "type" : "runtime_data",
1217 "value" : 0
1218 }
1219 ],
1220 "source_info" : {
1221 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001222 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001223 "column" : 8,
1224 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1225 }
1226 },
1227 {
1228 "op" : "assign",
1229 "parameters" : [
1230 {
1231 "type" : "field",
1232 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1233 },
1234 {
1235 "type" : "expression",
1236 "value" : {
1237 "type" : "expression",
1238 "value" : {
1239 "op" : "b2d",
1240 "left" : null,
1241 "right" : {
1242 "type" : "bool",
1243 "value" : true
1244 }
1245 }
1246 }
1247 }
1248 ],
1249 "source_info" : {
1250 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001251 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001252 "column" : 8,
1253 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1254 }
1255 }
1256 ]
1257 },
1258 {
1259 "name" : "filtering.set_forwarding_type",
Yi Tseng1d842672017-11-28 16:06:52 -08001260 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07001261 "runtime_data" : [
1262 {
1263 "name" : "fwd_type",
1264 "bitwidth" : 3
1265 }
1266 ],
1267 "primitives" : [
1268 {
1269 "op" : "assign",
1270 "parameters" : [
1271 {
1272 "type" : "field",
1273 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
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" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07001283 "column" : 8,
1284 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1285 }
1286 }
1287 ]
1288 },
1289 {
Yi Tseng1d842672017-11-28 16:06:52 -08001290 "name" : "forwarding.drop",
1291 "id" : 15,
1292 "runtime_data" : [],
1293 "primitives" : [
1294 {
1295 "op" : "drop",
1296 "parameters" : [],
1297 "source_info" : {
1298 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001299 "line" : 39,
Yi Tseng1d842672017-11-28 16:06:52 -08001300 "column" : 8,
1301 "source_fragment" : "mark_to_drop()"
1302 }
1303 }
1304 ]
1305 },
1306 {
Yi Tsengbe342052017-11-03 10:21:23 -07001307 "name" : "forwarding.set_next_id",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001308 "id" : 16,
1309 "runtime_data" : [
1310 {
1311 "name" : "next_id",
1312 "bitwidth" : 32
1313 }
1314 ],
1315 "primitives" : [
1316 {
1317 "op" : "assign",
1318 "parameters" : [
1319 {
1320 "type" : "field",
1321 "value" : ["scalars", "fabric_metadata_t.next_id"]
1322 },
1323 {
1324 "type" : "runtime_data",
1325 "value" : 0
1326 }
1327 ],
1328 "source_info" : {
1329 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001330 "line" : 43,
Yi Tsengf55eaa82017-11-29 15:51:28 -08001331 "column" : 8,
1332 "source_fragment" : "fabric_metadata.next_id = next_id"
1333 }
1334 }
1335 ]
1336 },
1337 {
1338 "name" : "forwarding.set_next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07001339 "id" : 17,
1340 "runtime_data" : [
1341 {
1342 "name" : "next_id",
1343 "bitwidth" : 32
1344 }
1345 ],
1346 "primitives" : [
1347 {
1348 "op" : "assign",
1349 "parameters" : [
1350 {
1351 "type" : "field",
1352 "value" : ["scalars", "fabric_metadata_t.next_id"]
1353 },
1354 {
1355 "type" : "runtime_data",
1356 "value" : 0
1357 }
1358 ],
1359 "source_info" : {
1360 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001361 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001362 "column" : 8,
1363 "source_fragment" : "fabric_metadata.next_id = next_id"
1364 }
1365 }
1366 ]
1367 },
1368 {
1369 "name" : "forwarding.set_next_id",
1370 "id" : 18,
1371 "runtime_data" : [
1372 {
1373 "name" : "next_id",
1374 "bitwidth" : 32
1375 }
1376 ],
1377 "primitives" : [
1378 {
1379 "op" : "assign",
1380 "parameters" : [
1381 {
1382 "type" : "field",
1383 "value" : ["scalars", "fabric_metadata_t.next_id"]
1384 },
1385 {
1386 "type" : "runtime_data",
1387 "value" : 0
1388 }
1389 ],
1390 "source_info" : {
1391 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001392 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001393 "column" : 8,
1394 "source_fragment" : "fabric_metadata.next_id = next_id"
1395 }
1396 }
1397 ]
1398 },
1399 {
1400 "name" : "forwarding.set_next_id",
1401 "id" : 19,
1402 "runtime_data" : [
1403 {
1404 "name" : "next_id",
1405 "bitwidth" : 32
1406 }
1407 ],
1408 "primitives" : [
1409 {
1410 "op" : "assign",
1411 "parameters" : [
1412 {
1413 "type" : "field",
1414 "value" : ["scalars", "fabric_metadata_t.next_id"]
1415 },
1416 {
1417 "type" : "runtime_data",
1418 "value" : 0
1419 }
1420 ],
1421 "source_info" : {
1422 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001423 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001424 "column" : 8,
1425 "source_fragment" : "fabric_metadata.next_id = next_id"
1426 }
1427 }
1428 ]
1429 },
1430 {
1431 "name" : "forwarding.set_next_id",
1432 "id" : 20,
1433 "runtime_data" : [
1434 {
1435 "name" : "next_id",
1436 "bitwidth" : 32
1437 }
1438 ],
1439 "primitives" : [
1440 {
1441 "op" : "assign",
1442 "parameters" : [
1443 {
1444 "type" : "field",
1445 "value" : ["scalars", "fabric_metadata_t.next_id"]
1446 },
1447 {
1448 "type" : "runtime_data",
1449 "value" : 0
1450 }
1451 ],
1452 "source_info" : {
1453 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001454 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001455 "column" : 8,
1456 "source_fragment" : "fabric_metadata.next_id = next_id"
1457 }
1458 }
1459 ]
1460 },
1461 {
1462 "name" : "forwarding.set_next_id",
1463 "id" : 21,
1464 "runtime_data" : [
1465 {
1466 "name" : "next_id",
1467 "bitwidth" : 32
1468 }
1469 ],
1470 "primitives" : [
1471 {
1472 "op" : "assign",
1473 "parameters" : [
1474 {
1475 "type" : "field",
1476 "value" : ["scalars", "fabric_metadata_t.next_id"]
1477 },
1478 {
1479 "type" : "runtime_data",
1480 "value" : 0
1481 }
1482 ],
1483 "source_info" : {
1484 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001485 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001486 "column" : 8,
1487 "source_fragment" : "fabric_metadata.next_id = next_id"
1488 }
1489 }
1490 ]
1491 },
1492 {
Yi Tsengbe342052017-11-03 10:21:23 -07001493 "name" : "forwarding.pop_mpls_and_next",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001494 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07001495 "runtime_data" : [
1496 {
1497 "name" : "next_id",
1498 "bitwidth" : 32
1499 }
1500 ],
1501 "primitives" : [
1502 {
1503 "op" : "remove_header",
1504 "parameters" : [
1505 {
1506 "type" : "header",
1507 "value" : "mpls"
1508 }
1509 ],
1510 "source_info" : {
1511 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001512 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07001513 "column" : 8,
1514 "source_fragment" : "hdr.mpls.setInvalid()"
1515 }
1516 },
1517 {
1518 "op" : "assign",
1519 "parameters" : [
1520 {
1521 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001522 "value" : ["scalars", "fabric_metadata_t.next_id"]
1523 },
1524 {
1525 "type" : "runtime_data",
1526 "value" : 0
1527 }
1528 ],
1529 "source_info" : {
1530 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001531 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07001532 "column" : 8,
1533 "source_fragment" : "fabric_metadata.next_id = next_id"
1534 }
1535 }
1536 ]
1537 },
1538 {
Yi Tsengbe342052017-11-03 10:21:23 -07001539 "name" : "forwarding.duplicate_to_controller",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001540 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07001541 "runtime_data" : [],
1542 "primitives" : [
1543 {
1544 "op" : "assign",
1545 "parameters" : [
1546 {
1547 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001548 "value" : ["standard_metadata", "egress_spec"]
1549 },
1550 {
1551 "type" : "hexstr",
1552 "value" : "0x00ff"
1553 }
1554 ],
1555 "source_info" : {
1556 "filename" : "./include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08001557 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07001558 "column" : 28,
1559 "source_fragment" : "255; ..."
1560 }
1561 }
1562 ]
1563 },
1564 {
Yi Tsengbe342052017-11-03 10:21:23 -07001565 "name" : "next.output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001566 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07001567 "runtime_data" : [
1568 {
1569 "name" : "port_num",
1570 "bitwidth" : 9
1571 }
1572 ],
1573 "primitives" : [
1574 {
1575 "op" : "assign",
1576 "parameters" : [
1577 {
1578 "type" : "field",
1579 "value" : ["standard_metadata", "egress_spec"]
1580 },
1581 {
1582 "type" : "runtime_data",
1583 "value" : 0
1584 }
1585 ],
1586 "source_info" : {
1587 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001588 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001589 "column" : 8,
1590 "source_fragment" : "standard_metadata.egress_spec = port_num"
1591 }
Yi Tsengbe342052017-11-03 10:21:23 -07001592 }
1593 ]
1594 },
1595 {
1596 "name" : "next.set_vlan_output",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001597 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001598 "runtime_data" : [
1599 {
1600 "name" : "new_vlan_id",
1601 "bitwidth" : 12
1602 },
1603 {
1604 "name" : "port_num",
1605 "bitwidth" : 9
1606 }
1607 ],
1608 "primitives" : [
1609 {
1610 "op" : "assign",
1611 "parameters" : [
1612 {
1613 "type" : "field",
1614 "value" : ["vlan_tag", "vlan_id"]
1615 },
1616 {
1617 "type" : "runtime_data",
1618 "value" : 0
1619 }
1620 ],
1621 "source_info" : {
1622 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001623 "line" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07001624 "column" : 8,
1625 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1626 }
1627 },
1628 {
1629 "op" : "assign",
1630 "parameters" : [
1631 {
1632 "type" : "field",
1633 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1634 },
1635 {
1636 "type" : "expression",
1637 "value" : {
1638 "type" : "expression",
1639 "value" : {
1640 "op" : "b2d",
1641 "left" : null,
1642 "right" : {
1643 "type" : "bool",
1644 "value" : false
1645 }
1646 }
1647 }
1648 }
1649 ],
1650 "source_info" : {
1651 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001652 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001653 "column" : 8,
1654 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
1655 }
1656 },
1657 {
1658 "op" : "assign",
1659 "parameters" : [
1660 {
1661 "type" : "field",
1662 "value" : ["standard_metadata", "egress_spec"]
1663 },
1664 {
1665 "type" : "runtime_data",
1666 "value" : 1
1667 }
1668 ],
1669 "source_info" : {
1670 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001671 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001672 "column" : 8,
1673 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1674 }
Yi Tsengbe342052017-11-03 10:21:23 -07001675 }
1676 ]
1677 },
1678 {
1679 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001680 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07001681 "runtime_data" : [
1682 {
1683 "name" : "port_num",
1684 "bitwidth" : 9
1685 },
1686 {
1687 "name" : "smac",
1688 "bitwidth" : 48
1689 },
1690 {
1691 "name" : "dmac",
1692 "bitwidth" : 48
1693 }
1694 ],
1695 "primitives" : [
1696 {
1697 "op" : "assign",
1698 "parameters" : [
1699 {
1700 "type" : "field",
1701 "value" : ["ethernet", "src_addr"]
1702 },
1703 {
1704 "type" : "runtime_data",
1705 "value" : 1
1706 }
1707 ],
1708 "source_info" : {
1709 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001710 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001711 "column" : 8,
1712 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1713 }
1714 },
1715 {
1716 "op" : "assign",
1717 "parameters" : [
1718 {
1719 "type" : "field",
1720 "value" : ["ethernet", "dst_addr"]
1721 },
1722 {
1723 "type" : "runtime_data",
1724 "value" : 2
1725 }
1726 ],
1727 "source_info" : {
1728 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001729 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001730 "column" : 8,
1731 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1732 }
1733 },
1734 {
1735 "op" : "assign",
1736 "parameters" : [
1737 {
1738 "type" : "field",
1739 "value" : ["standard_metadata", "egress_spec"]
1740 },
1741 {
1742 "type" : "runtime_data",
1743 "value" : 0
1744 }
1745 ],
1746 "source_info" : {
1747 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001748 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001749 "column" : 8,
1750 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1751 }
Yi Tsengbe342052017-11-03 10:21:23 -07001752 }
1753 ]
1754 },
1755 {
1756 "name" : "next.l3_routing",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001757 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001758 "runtime_data" : [
1759 {
1760 "name" : "port_num",
1761 "bitwidth" : 9
1762 },
1763 {
1764 "name" : "smac",
1765 "bitwidth" : 48
1766 },
1767 {
1768 "name" : "dmac",
1769 "bitwidth" : 48
1770 }
1771 ],
1772 "primitives" : [
1773 {
1774 "op" : "assign",
1775 "parameters" : [
1776 {
1777 "type" : "field",
1778 "value" : ["ethernet", "src_addr"]
1779 },
1780 {
1781 "type" : "runtime_data",
1782 "value" : 1
1783 }
1784 ],
1785 "source_info" : {
1786 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001787 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001788 "column" : 8,
1789 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1790 }
1791 },
1792 {
1793 "op" : "assign",
1794 "parameters" : [
1795 {
1796 "type" : "field",
1797 "value" : ["ethernet", "dst_addr"]
1798 },
1799 {
1800 "type" : "runtime_data",
1801 "value" : 2
1802 }
1803 ],
1804 "source_info" : {
1805 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001806 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001807 "column" : 8,
1808 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1809 }
1810 },
1811 {
1812 "op" : "assign",
1813 "parameters" : [
1814 {
1815 "type" : "field",
1816 "value" : ["standard_metadata", "egress_spec"]
1817 },
1818 {
1819 "type" : "runtime_data",
1820 "value" : 0
1821 }
1822 ],
1823 "source_info" : {
1824 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001825 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001826 "column" : 8,
1827 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1828 }
Yi Tsengbe342052017-11-03 10:21:23 -07001829 }
1830 ]
1831 },
1832 {
1833 "name" : "next.set_mcast_group",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001834 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07001835 "runtime_data" : [
1836 {
1837 "name" : "gid",
1838 "bitwidth" : 16
1839 },
1840 {
1841 "name" : "smac",
1842 "bitwidth" : 48
1843 }
1844 ],
1845 "primitives" : [
1846 {
1847 "op" : "assign",
1848 "parameters" : [
1849 {
1850 "type" : "field",
1851 "value" : ["standard_metadata", "mcast_grp"]
1852 },
1853 {
1854 "type" : "runtime_data",
1855 "value" : 0
1856 }
1857 ],
1858 "source_info" : {
1859 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001860 "line" : 59,
Yi Tsengbe342052017-11-03 10:21:23 -07001861 "column" : 8,
1862 "source_fragment" : "standard_metadata.mcast_grp = gid"
1863 }
1864 },
1865 {
1866 "op" : "assign",
1867 "parameters" : [
1868 {
1869 "type" : "field",
1870 "value" : ["ethernet", "src_addr"]
1871 },
1872 {
1873 "type" : "runtime_data",
1874 "value" : 1
1875 }
1876 ],
1877 "source_info" : {
1878 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001879 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001880 "column" : 8,
1881 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1882 }
1883 }
1884 ]
1885 },
1886 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001887 "name" : "next.mpls_routing_v4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001888 "id" : 29,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001889 "runtime_data" : [
1890 {
1891 "name" : "port_num",
1892 "bitwidth" : 9
1893 },
1894 {
1895 "name" : "smac",
1896 "bitwidth" : 48
1897 },
1898 {
1899 "name" : "dmac",
1900 "bitwidth" : 48
1901 },
1902 {
1903 "name" : "label",
1904 "bitwidth" : 20
1905 }
1906 ],
1907 "primitives" : [
1908 {
1909 "op" : "assign",
1910 "parameters" : [
1911 {
1912 "type" : "field",
1913 "value" : ["ethernet", "src_addr"]
1914 },
1915 {
1916 "type" : "runtime_data",
1917 "value" : 1
1918 }
1919 ],
1920 "source_info" : {
1921 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001922 "line" : 45,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001923 "column" : 8,
1924 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1925 }
1926 },
1927 {
1928 "op" : "assign",
1929 "parameters" : [
1930 {
1931 "type" : "field",
1932 "value" : ["ethernet", "dst_addr"]
1933 },
1934 {
1935 "type" : "runtime_data",
1936 "value" : 2
1937 }
1938 ],
1939 "source_info" : {
1940 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001941 "line" : 49,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001942 "column" : 8,
1943 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1944 }
1945 },
1946 {
1947 "op" : "assign",
1948 "parameters" : [
1949 {
1950 "type" : "field",
1951 "value" : ["standard_metadata", "egress_spec"]
1952 },
1953 {
1954 "type" : "runtime_data",
1955 "value" : 0
1956 }
1957 ],
1958 "source_info" : {
1959 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001960 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001961 "column" : 8,
1962 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1963 }
1964 },
1965 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001966 "op" : "add_header",
1967 "parameters" : [
1968 {
1969 "type" : "header",
1970 "value" : "mpls"
1971 }
1972 ],
1973 "source_info" : {
1974 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001975 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001976 "column" : 8,
1977 "source_fragment" : "hdr.mpls.setValid()"
1978 }
1979 },
1980 {
1981 "op" : "assign",
1982 "parameters" : [
1983 {
1984 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08001985 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08001986 },
1987 {
1988 "type" : "hexstr",
1989 "value" : "0x8847"
1990 }
1991 ],
1992 "source_info" : {
1993 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001994 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001995 "column" : 31,
1996 "source_fragment" : "0x8847; ..."
1997 }
1998 },
1999 {
2000 "op" : "assign",
2001 "parameters" : [
2002 {
2003 "type" : "field",
2004 "value" : ["mpls", "label"]
2005 },
2006 {
2007 "type" : "runtime_data",
2008 "value" : 3
2009 }
2010 ],
2011 "source_info" : {
2012 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002013 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002014 "column" : 8,
2015 "source_fragment" : "hdr.mpls.label = label; ..."
2016 }
2017 },
2018 {
2019 "op" : "assign",
2020 "parameters" : [
2021 {
2022 "type" : "field",
2023 "value" : ["mpls", "tc"]
2024 },
2025 {
Yi Tseng1d842672017-11-28 16:06:52 -08002026 "type" : "hexstr",
2027 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002028 }
2029 ],
2030 "source_info" : {
2031 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002032 "line" : 68,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002033 "column" : 8,
2034 "source_fragment" : "hdr.mpls.tc = tc; ..."
2035 }
2036 },
2037 {
2038 "op" : "assign",
2039 "parameters" : [
2040 {
2041 "type" : "field",
2042 "value" : ["mpls", "bos"]
2043 },
2044 {
2045 "type" : "hexstr",
2046 "value" : "0x01"
2047 }
2048 ],
2049 "source_info" : {
2050 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002051 "line" : 69,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002052 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002053 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002054 }
2055 },
2056 {
2057 "op" : "assign",
2058 "parameters" : [
2059 {
2060 "type" : "field",
2061 "value" : ["mpls", "ttl"]
2062 },
2063 {
2064 "type" : "hexstr",
2065 "value" : "0x40"
2066 }
2067 ],
2068 "source_info" : {
2069 "filename" : "./include/control/../header.p4",
2070 "line" : 19,
2071 "column" : 32,
2072 "source_fragment" : "64; ..."
2073 }
2074 }
2075 ]
2076 },
2077 {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002078 "name" : "next.mpls_routing_v4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002079 "id" : 30,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002080 "runtime_data" : [
2081 {
2082 "name" : "port_num",
2083 "bitwidth" : 9
2084 },
2085 {
2086 "name" : "smac",
2087 "bitwidth" : 48
2088 },
2089 {
2090 "name" : "dmac",
2091 "bitwidth" : 48
2092 },
2093 {
2094 "name" : "label",
2095 "bitwidth" : 20
2096 }
2097 ],
2098 "primitives" : [
2099 {
2100 "op" : "assign",
2101 "parameters" : [
2102 {
2103 "type" : "field",
2104 "value" : ["ethernet", "src_addr"]
2105 },
2106 {
2107 "type" : "runtime_data",
2108 "value" : 1
2109 }
2110 ],
2111 "source_info" : {
2112 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002113 "line" : 45,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002114 "column" : 8,
2115 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2116 }
2117 },
2118 {
2119 "op" : "assign",
2120 "parameters" : [
2121 {
2122 "type" : "field",
2123 "value" : ["ethernet", "dst_addr"]
2124 },
2125 {
2126 "type" : "runtime_data",
2127 "value" : 2
2128 }
2129 ],
2130 "source_info" : {
2131 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002132 "line" : 49,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002133 "column" : 8,
2134 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2135 }
2136 },
2137 {
2138 "op" : "assign",
2139 "parameters" : [
2140 {
2141 "type" : "field",
2142 "value" : ["standard_metadata", "egress_spec"]
2143 },
2144 {
2145 "type" : "runtime_data",
2146 "value" : 0
2147 }
2148 ],
2149 "source_info" : {
2150 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002151 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002152 "column" : 8,
2153 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2154 }
2155 },
2156 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08002157 "op" : "add_header",
2158 "parameters" : [
2159 {
2160 "type" : "header",
2161 "value" : "mpls"
2162 }
2163 ],
2164 "source_info" : {
2165 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002166 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002167 "column" : 8,
2168 "source_fragment" : "hdr.mpls.setValid()"
2169 }
2170 },
2171 {
2172 "op" : "assign",
2173 "parameters" : [
2174 {
2175 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002176 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08002177 },
2178 {
2179 "type" : "hexstr",
2180 "value" : "0x8847"
2181 }
2182 ],
2183 "source_info" : {
2184 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002185 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002186 "column" : 31,
2187 "source_fragment" : "0x8847; ..."
2188 }
2189 },
2190 {
2191 "op" : "assign",
2192 "parameters" : [
2193 {
2194 "type" : "field",
2195 "value" : ["mpls", "label"]
2196 },
2197 {
2198 "type" : "runtime_data",
2199 "value" : 3
2200 }
2201 ],
2202 "source_info" : {
2203 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002204 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002205 "column" : 8,
2206 "source_fragment" : "hdr.mpls.label = label; ..."
2207 }
2208 },
2209 {
2210 "op" : "assign",
2211 "parameters" : [
2212 {
2213 "type" : "field",
2214 "value" : ["mpls", "tc"]
2215 },
2216 {
Yi Tseng1d842672017-11-28 16:06:52 -08002217 "type" : "hexstr",
2218 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002219 }
2220 ],
2221 "source_info" : {
2222 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002223 "line" : 68,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002224 "column" : 8,
2225 "source_fragment" : "hdr.mpls.tc = tc; ..."
2226 }
2227 },
2228 {
2229 "op" : "assign",
2230 "parameters" : [
2231 {
2232 "type" : "field",
2233 "value" : ["mpls", "bos"]
2234 },
2235 {
2236 "type" : "hexstr",
2237 "value" : "0x01"
2238 }
2239 ],
2240 "source_info" : {
2241 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002242 "line" : 69,
2243 "column" : 8,
2244 "source_fragment" : "hdr.mpls.bos = 1w1"
2245 }
2246 },
2247 {
2248 "op" : "assign",
2249 "parameters" : [
2250 {
2251 "type" : "field",
2252 "value" : ["mpls", "ttl"]
2253 },
2254 {
2255 "type" : "hexstr",
2256 "value" : "0x40"
2257 }
2258 ],
2259 "source_info" : {
2260 "filename" : "./include/control/../header.p4",
2261 "line" : 19,
2262 "column" : 32,
2263 "source_fragment" : "64; ..."
2264 }
2265 }
2266 ]
2267 },
2268 {
2269 "name" : "next.mpls_routing_v6",
2270 "id" : 31,
2271 "runtime_data" : [
2272 {
2273 "name" : "port_num",
2274 "bitwidth" : 9
2275 },
2276 {
2277 "name" : "smac",
2278 "bitwidth" : 48
2279 },
2280 {
2281 "name" : "dmac",
2282 "bitwidth" : 48
2283 },
2284 {
2285 "name" : "label",
2286 "bitwidth" : 20
2287 }
2288 ],
2289 "primitives" : [
2290 {
2291 "op" : "assign",
2292 "parameters" : [
2293 {
2294 "type" : "field",
2295 "value" : ["ethernet", "src_addr"]
2296 },
2297 {
2298 "type" : "runtime_data",
2299 "value" : 1
2300 }
2301 ],
2302 "source_info" : {
2303 "filename" : "./include/control/next.p4",
2304 "line" : 45,
2305 "column" : 8,
2306 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2307 }
2308 },
2309 {
2310 "op" : "assign",
2311 "parameters" : [
2312 {
2313 "type" : "field",
2314 "value" : ["ethernet", "dst_addr"]
2315 },
2316 {
2317 "type" : "runtime_data",
2318 "value" : 2
2319 }
2320 ],
2321 "source_info" : {
2322 "filename" : "./include/control/next.p4",
2323 "line" : 49,
2324 "column" : 8,
2325 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2326 }
2327 },
2328 {
2329 "op" : "assign",
2330 "parameters" : [
2331 {
2332 "type" : "field",
2333 "value" : ["standard_metadata", "egress_spec"]
2334 },
2335 {
2336 "type" : "runtime_data",
2337 "value" : 0
2338 }
2339 ],
2340 "source_info" : {
2341 "filename" : "./include/control/next.p4",
2342 "line" : 33,
2343 "column" : 8,
2344 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2345 }
2346 },
2347 {
2348 "op" : "add_header",
2349 "parameters" : [
2350 {
2351 "type" : "header",
2352 "value" : "mpls"
2353 }
2354 ],
2355 "source_info" : {
2356 "filename" : "./include/control/next.p4",
2357 "line" : 65,
2358 "column" : 8,
2359 "source_fragment" : "hdr.mpls.setValid()"
2360 }
2361 },
2362 {
2363 "op" : "assign",
2364 "parameters" : [
2365 {
2366 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002367 "value" : ["vlan_tag", "ether_type"]
Yi Tseng3a5731e2018-01-22 11:38:58 -08002368 },
2369 {
2370 "type" : "hexstr",
2371 "value" : "0x8847"
2372 }
2373 ],
2374 "source_info" : {
2375 "filename" : "./include/control/../define.p4",
2376 "line" : 33,
2377 "column" : 31,
2378 "source_fragment" : "0x8847; ..."
2379 }
2380 },
2381 {
2382 "op" : "assign",
2383 "parameters" : [
2384 {
2385 "type" : "field",
2386 "value" : ["mpls", "label"]
2387 },
2388 {
2389 "type" : "runtime_data",
2390 "value" : 3
2391 }
2392 ],
2393 "source_info" : {
2394 "filename" : "./include/control/next.p4",
2395 "line" : 67,
2396 "column" : 8,
2397 "source_fragment" : "hdr.mpls.label = label; ..."
2398 }
2399 },
2400 {
2401 "op" : "assign",
2402 "parameters" : [
2403 {
2404 "type" : "field",
2405 "value" : ["mpls", "tc"]
2406 },
2407 {
2408 "type" : "hexstr",
2409 "value" : "0x00"
2410 }
2411 ],
2412 "source_info" : {
2413 "filename" : "./include/control/next.p4",
2414 "line" : 68,
2415 "column" : 8,
2416 "source_fragment" : "hdr.mpls.tc = tc; ..."
2417 }
2418 },
2419 {
2420 "op" : "assign",
2421 "parameters" : [
2422 {
2423 "type" : "field",
2424 "value" : ["mpls", "bos"]
2425 },
2426 {
2427 "type" : "hexstr",
2428 "value" : "0x01"
2429 }
2430 ],
2431 "source_info" : {
2432 "filename" : "./include/control/next.p4",
2433 "line" : 69,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002434 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002435 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002436 }
2437 },
2438 {
2439 "op" : "assign",
2440 "parameters" : [
2441 {
2442 "type" : "field",
2443 "value" : ["mpls", "ttl"]
2444 },
2445 {
2446 "type" : "hexstr",
2447 "value" : "0x40"
2448 }
2449 ],
2450 "source_info" : {
2451 "filename" : "./include/control/../header.p4",
2452 "line" : 19,
2453 "column" : 32,
2454 "source_fragment" : "64; ..."
2455 }
2456 }
2457 ]
2458 },
2459 {
Yi Tsengbe342052017-11-03 10:21:23 -07002460 "name" : "act",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002461 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002462 "runtime_data" : [],
2463 "primitives" : [
2464 {
2465 "op" : "assign",
2466 "parameters" : [
2467 {
2468 "type" : "field",
2469 "value" : ["standard_metadata", "egress_spec"]
2470 },
2471 {
2472 "type" : "field",
2473 "value" : ["packet_out", "egress_port"]
2474 }
2475 ],
2476 "source_info" : {
2477 "filename" : "./include/control/packetio.p4",
2478 "line" : 26,
2479 "column" : 12,
2480 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2481 }
Yi Tseng1d842672017-11-28 16:06:52 -08002482 },
2483 {
2484 "op" : "remove_header",
2485 "parameters" : [
2486 {
2487 "type" : "header",
2488 "value" : "packet_out"
2489 }
2490 ],
2491 "source_info" : {
2492 "filename" : "./include/control/packetio.p4",
2493 "line" : 27,
2494 "column" : 12,
2495 "source_fragment" : "hdr.packet_out.setInvalid()"
2496 }
Yi Tsengbe342052017-11-03 10:21:23 -07002497 }
2498 ]
2499 },
2500 {
2501 "name" : "act_0",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002502 "id" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002503 "runtime_data" : [],
2504 "primitives" : [
2505 {
2506 "op" : "assign",
2507 "parameters" : [
2508 {
2509 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002510 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002511 },
2512 {
2513 "type" : "hexstr",
2514 "value" : "0x0800"
2515 }
2516 ],
2517 "source_info" : {
2518 "filename" : "./include/control/../define.p4",
2519 "line" : 35,
2520 "column" : 31,
2521 "source_fragment" : "0x0800; ..."
2522 }
2523 },
2524 {
2525 "op" : "assign",
2526 "parameters" : [
2527 {
2528 "type" : "field",
2529 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2530 },
2531 {
2532 "type" : "hexstr",
2533 "value" : "0x0800"
2534 }
2535 ],
2536 "source_info" : {
2537 "filename" : "./include/control/../define.p4",
2538 "line" : 35,
2539 "column" : 31,
2540 "source_fragment" : "0x0800; ..."
2541 }
2542 }
2543 ]
2544 },
2545 {
2546 "name" : "act_1",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002547 "id" : 34,
Yi Tseng1d842672017-11-28 16:06:52 -08002548 "runtime_data" : [],
2549 "primitives" : [
2550 {
2551 "op" : "assign",
2552 "parameters" : [
2553 {
2554 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002555 "value" : ["scalars", "next_tmp_0"]
2556 },
2557 {
2558 "type" : "expression",
2559 "value" : {
2560 "type" : "expression",
2561 "value" : {
2562 "op" : "b2d",
2563 "left" : null,
2564 "right" : {
2565 "type" : "bool",
2566 "value" : true
2567 }
2568 }
2569 }
2570 }
2571 ]
2572 }
2573 ]
2574 },
2575 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002576 "name" : "act_2",
2577 "id" : 35,
Yi Tseng1d842672017-11-28 16:06:52 -08002578 "runtime_data" : [],
2579 "primitives" : [
2580 {
2581 "op" : "assign",
2582 "parameters" : [
2583 {
2584 "type" : "field",
2585 "value" : ["scalars", "next_tmp_0"]
2586 },
2587 {
2588 "type" : "expression",
2589 "value" : {
2590 "type" : "expression",
2591 "value" : {
2592 "op" : "b2d",
2593 "left" : null,
2594 "right" : {
2595 "type" : "bool",
2596 "value" : false
2597 }
2598 }
2599 }
2600 }
2601 ]
2602 }
2603 ]
2604 },
2605 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002606 "name" : "act_3",
2607 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002608 "runtime_data" : [],
2609 "primitives" : [
2610 {
2611 "op" : "assign",
2612 "parameters" : [
2613 {
2614 "type" : "field",
2615 "value" : ["ipv4", "ttl"]
2616 },
2617 {
2618 "type" : "expression",
2619 "value" : {
2620 "type" : "expression",
2621 "value" : {
2622 "op" : "&",
2623 "left" : {
2624 "type" : "expression",
2625 "value" : {
2626 "op" : "+",
2627 "left" : {
2628 "type" : "field",
2629 "value" : ["ipv4", "ttl"]
2630 },
2631 "right" : {
2632 "type" : "hexstr",
2633 "value" : "0xff"
2634 }
2635 }
2636 },
2637 "right" : {
2638 "type" : "hexstr",
2639 "value" : "0xff"
2640 }
2641 }
2642 }
2643 }
2644 ],
2645 "source_info" : {
2646 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002647 "line" : 140,
Yi Tseng1d842672017-11-28 16:06:52 -08002648 "column" : 20,
2649 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2650 }
2651 }
2652 ]
2653 },
2654 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002655 "name" : "act_4",
2656 "id" : 37,
Yi Tseng1d842672017-11-28 16:06:52 -08002657 "runtime_data" : [],
2658 "primitives" : [
2659 {
2660 "op" : "assign",
2661 "parameters" : [
2662 {
2663 "type" : "field",
2664 "value" : ["ipv6", "hop_limit"]
2665 },
2666 {
2667 "type" : "expression",
2668 "value" : {
2669 "type" : "expression",
2670 "value" : {
2671 "op" : "&",
2672 "left" : {
2673 "type" : "expression",
2674 "value" : {
2675 "op" : "+",
2676 "left" : {
2677 "type" : "field",
2678 "value" : ["ipv6", "hop_limit"]
2679 },
2680 "right" : {
2681 "type" : "hexstr",
2682 "value" : "0xff"
2683 }
2684 }
2685 },
2686 "right" : {
2687 "type" : "hexstr",
2688 "value" : "0xff"
2689 }
2690 }
2691 }
2692 }
2693 ],
2694 "source_info" : {
2695 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002696 "line" : 143,
Yi Tseng1d842672017-11-28 16:06:52 -08002697 "column" : 20,
2698 "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
2699 }
2700 }
2701 ]
2702 },
2703 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002704 "name" : "act_5",
2705 "id" : 38,
Yi Tseng1d842672017-11-28 16:06:52 -08002706 "runtime_data" : [],
2707 "primitives" : [
2708 {
2709 "op" : "assign",
2710 "parameters" : [
2711 {
2712 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002713 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002714 },
2715 {
2716 "type" : "expression",
2717 "value" : {
2718 "type" : "expression",
2719 "value" : {
2720 "op" : "&",
2721 "left" : {
2722 "type" : "field",
2723 "value" : ["standard_metadata", "egress_spec"]
2724 },
2725 "right" : {
2726 "type" : "hexstr",
2727 "value" : "0xffffffff"
2728 }
2729 }
2730 }
2731 }
2732 ]
2733 },
2734 {
2735 "op" : "count",
2736 "parameters" : [
2737 {
2738 "type" : "counter_array",
2739 "value" : "port_counters_control.egress_port_counter"
2740 },
2741 {
2742 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002743 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002744 }
2745 ],
2746 "source_info" : {
2747 "filename" : "./include/control/port_counter.p4",
2748 "line" : 28,
2749 "column" : 12,
2750 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2751 }
2752 }
2753 ]
2754 },
2755 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002756 "name" : "act_6",
2757 "id" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07002758 "runtime_data" : [],
2759 "primitives" : [
2760 {
2761 "op" : "assign",
2762 "parameters" : [
2763 {
2764 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002765 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002766 },
2767 {
2768 "type" : "expression",
2769 "value" : {
2770 "type" : "expression",
2771 "value" : {
2772 "op" : "&",
2773 "left" : {
2774 "type" : "field",
2775 "value" : ["standard_metadata", "ingress_port"]
2776 },
2777 "right" : {
2778 "type" : "hexstr",
2779 "value" : "0xffffffff"
2780 }
2781 }
2782 }
2783 }
2784 ]
2785 },
2786 {
2787 "op" : "count",
2788 "parameters" : [
2789 {
2790 "type" : "counter_array",
2791 "value" : "port_counters_control.ingress_port_counter"
2792 },
2793 {
2794 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002795 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002796 }
2797 ],
2798 "source_info" : {
2799 "filename" : "./include/control/port_counter.p4",
2800 "line" : 31,
2801 "column" : 12,
2802 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2803 }
2804 }
2805 ]
2806 },
2807 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002808 "name" : "act_7",
2809 "id" : 40,
Yi Tseng1d842672017-11-28 16:06:52 -08002810 "runtime_data" : [],
2811 "primitives" : [
2812 {
2813 "op" : "assign",
2814 "parameters" : [
2815 {
2816 "type" : "field",
2817 "value" : ["ethernet", "ether_type"]
2818 },
2819 {
2820 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002821 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002822 }
2823 ],
2824 "source_info" : {
2825 "filename" : "./include/control/next.p4",
Yi Tsengbd46d052018-01-22 17:18:16 -08002826 "line" : 160,
2827 "column" : 12,
2828 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
Yi Tseng1d842672017-11-28 16:06:52 -08002829 }
Yi Tsengbd46d052018-01-22 17:18:16 -08002830 },
Yi Tsengbe342052017-11-03 10:21:23 -07002831 {
2832 "op" : "remove_header",
2833 "parameters" : [
2834 {
2835 "type" : "header",
2836 "value" : "vlan_tag"
2837 }
2838 ],
2839 "source_info" : {
2840 "filename" : "./include/control/next.p4",
Yi Tsengbd46d052018-01-22 17:18:16 -08002841 "line" : 161,
Yi Tsengbe342052017-11-03 10:21:23 -07002842 "column" : 12,
2843 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2844 }
2845 }
2846 ]
2847 },
2848 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002849 "name" : "act_8",
2850 "id" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07002851 "runtime_data" : [],
2852 "primitives" : [
2853 {
2854 "op" : "add_header",
2855 "parameters" : [
2856 {
2857 "type" : "header",
2858 "value" : "packet_in"
2859 }
2860 ],
2861 "source_info" : {
2862 "filename" : "./include/control/packetio.p4",
2863 "line" : 39,
2864 "column" : 12,
2865 "source_fragment" : "hdr.packet_in.setValid()"
2866 }
2867 },
2868 {
2869 "op" : "assign",
2870 "parameters" : [
2871 {
2872 "type" : "field",
2873 "value" : ["packet_in", "ingress_port"]
2874 },
2875 {
2876 "type" : "field",
2877 "value" : ["standard_metadata", "ingress_port"]
2878 }
2879 ],
2880 "source_info" : {
2881 "filename" : "./include/control/packetio.p4",
2882 "line" : 40,
2883 "column" : 12,
2884 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2885 }
2886 }
2887 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002888 }
2889 ],
2890 "pipelines" : [
2891 {
2892 "name" : "ingress",
2893 "id" : 0,
2894 "source_info" : {
2895 "filename" : "fabric.p4",
2896 "line" : 29,
2897 "column" : 8,
2898 "source_fragment" : "FabricIngress"
2899 },
2900 "init_table" : "node_2",
2901 "tables" : [
2902 {
2903 "name" : "tbl_act",
2904 "id" : 0,
2905 "key" : [],
2906 "match_type" : "exact",
2907 "type" : "simple",
2908 "max_size" : 1024,
2909 "with_counters" : false,
2910 "support_timeout" : false,
2911 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08002912 "action_ids" : [32],
Yi Tsengbe342052017-11-03 10:21:23 -07002913 "actions" : ["act"],
2914 "base_default_next" : null,
2915 "next_tables" : {
2916 "act" : null
2917 },
2918 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002919 "action_id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002920 "action_const" : true,
2921 "action_data" : [],
2922 "action_entry_const" : true
2923 }
2924 },
2925 {
2926 "name" : "filtering.ingress_port_vlan",
2927 "id" : 1,
2928 "source_info" : {
2929 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002930 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07002931 "column" : 10,
2932 "source_fragment" : "ingress_port_vlan"
2933 },
2934 "key" : [
2935 {
2936 "match_type" : "exact",
2937 "target" : ["standard_metadata", "ingress_port"],
2938 "mask" : null
2939 },
2940 {
2941 "match_type" : "exact",
2942 "target" : ["vlan_tag", "$valid$"],
2943 "mask" : null
2944 },
2945 {
2946 "match_type" : "ternary",
2947 "target" : ["vlan_tag", "vlan_id"],
2948 "mask" : null
2949 }
2950 ],
2951 "match_type" : "ternary",
2952 "type" : "simple",
2953 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002954 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002955 "support_timeout" : false,
2956 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08002957 "action_ids" : [13, 12, 0, 11],
2958 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "filtering.drop"],
Yi Tsengbe342052017-11-03 10:21:23 -07002959 "base_default_next" : "filtering.fwd_classifier",
2960 "next_tables" : {
2961 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
2962 "filtering.set_vlan" : "filtering.fwd_classifier",
2963 "nop" : "filtering.fwd_classifier",
Yi Tseng1d842672017-11-28 16:06:52 -08002964 "filtering.drop" : "filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002965 },
2966 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002967 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07002968 "action_const" : true,
2969 "action_data" : [],
2970 "action_entry_const" : true
2971 }
2972 },
2973 {
2974 "name" : "filtering.fwd_classifier",
2975 "id" : 2,
2976 "source_info" : {
2977 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002978 "line" : 76,
Yi Tsengbe342052017-11-03 10:21:23 -07002979 "column" : 10,
2980 "source_fragment" : "fwd_classifier"
2981 },
2982 "key" : [
2983 {
2984 "match_type" : "exact",
2985 "target" : ["standard_metadata", "ingress_port"],
2986 "mask" : null
2987 },
2988 {
2989 "match_type" : "exact",
2990 "target" : ["ethernet", "dst_addr"],
2991 "mask" : null
2992 },
2993 {
2994 "match_type" : "exact",
Yi Tseng1d842672017-11-28 16:06:52 -08002995 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002996 "mask" : null
2997 }
2998 ],
2999 "match_type" : "exact",
3000 "type" : "simple",
3001 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003002 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003003 "support_timeout" : false,
3004 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003005 "action_ids" : [14],
Yi Tsengbe342052017-11-03 10:21:23 -07003006 "actions" : ["filtering.set_forwarding_type"],
3007 "base_default_next" : "node_6",
3008 "next_tables" : {
3009 "filtering.set_forwarding_type" : "node_6"
3010 },
3011 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003012 "action_id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07003013 "action_const" : true,
3014 "action_data" : ["0x0"],
3015 "action_entry_const" : true
3016 }
3017 },
3018 {
3019 "name" : "forwarding.bridging",
3020 "id" : 3,
3021 "source_info" : {
3022 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003023 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07003024 "column" : 10,
3025 "source_fragment" : "bridging"
3026 },
3027 "key" : [
3028 {
3029 "match_type" : "exact",
3030 "target" : ["vlan_tag", "vlan_id"],
3031 "mask" : null
3032 },
3033 {
3034 "match_type" : "ternary",
3035 "target" : ["ethernet", "dst_addr"],
3036 "mask" : null
3037 }
3038 ],
3039 "match_type" : "ternary",
3040 "type" : "simple",
3041 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003042 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003043 "support_timeout" : false,
3044 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003045 "action_ids" : [16, 2],
3046 "actions" : ["forwarding.set_next_id", "NoAction"],
3047 "base_default_next" : "forwarding.acl",
3048 "next_tables" : {
3049 "forwarding.set_next_id" : "forwarding.acl",
3050 "NoAction" : "forwarding.acl"
3051 },
3052 "default_entry" : {
3053 "action_id" : 2,
3054 "action_const" : false,
3055 "action_data" : [],
3056 "action_entry_const" : false
3057 }
3058 },
3059 {
3060 "name" : "forwarding.mpls",
3061 "id" : 4,
3062 "source_info" : {
3063 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003064 "line" : 67,
Yi Tseng1d842672017-11-28 16:06:52 -08003065 "column" : 10,
3066 "source_fragment" : "mpls"
3067 },
3068 "key" : [
3069 {
3070 "match_type" : "exact",
3071 "target" : ["mpls", "label"],
3072 "mask" : null
3073 }
3074 ],
3075 "match_type" : "exact",
3076 "type" : "simple",
3077 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003078 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003079 "support_timeout" : false,
3080 "direct_meters" : null,
3081 "action_ids" : [22, 3],
3082 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003083 "base_default_next" : "tbl_act_0",
Yi Tseng1d842672017-11-28 16:06:52 -08003084 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003085 "forwarding.pop_mpls_and_next" : "tbl_act_0",
3086 "NoAction" : "tbl_act_0"
Yi Tseng1d842672017-11-28 16:06:52 -08003087 },
3088 "default_entry" : {
3089 "action_id" : 3,
3090 "action_const" : false,
3091 "action_data" : [],
3092 "action_entry_const" : false
3093 }
3094 },
3095 {
3096 "name" : "tbl_act_0",
3097 "id" : 5,
3098 "key" : [],
3099 "match_type" : "exact",
3100 "type" : "simple",
3101 "max_size" : 1024,
3102 "with_counters" : false,
3103 "support_timeout" : false,
3104 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003105 "action_ids" : [33],
Yi Tseng1d842672017-11-28 16:06:52 -08003106 "actions" : ["act_0"],
3107 "base_default_next" : "forwarding.acl",
3108 "next_tables" : {
3109 "act_0" : "forwarding.acl"
3110 },
3111 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003112 "action_id" : 33,
Yi Tseng1d842672017-11-28 16:06:52 -08003113 "action_const" : true,
3114 "action_data" : [],
3115 "action_entry_const" : true
3116 }
3117 },
3118 {
Yi Tseng1d842672017-11-28 16:06:52 -08003119 "name" : "forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003120 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003121 "source_info" : {
3122 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003123 "line" : 78,
Yi Tseng1d842672017-11-28 16:06:52 -08003124 "column" : 10,
3125 "source_fragment" : "unicast_v4"
3126 },
3127 "key" : [
3128 {
3129 "match_type" : "lpm",
3130 "target" : ["ipv4", "dst_addr"],
3131 "mask" : null
3132 }
3133 ],
3134 "match_type" : "lpm",
3135 "type" : "simple",
3136 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003137 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003138 "support_timeout" : false,
3139 "direct_meters" : null,
3140 "action_ids" : [17, 4],
Yi Tsengbe342052017-11-03 10:21:23 -07003141 "actions" : ["forwarding.set_next_id", "NoAction"],
3142 "base_default_next" : "forwarding.acl",
3143 "next_tables" : {
3144 "forwarding.set_next_id" : "forwarding.acl",
3145 "NoAction" : "forwarding.acl"
3146 },
3147 "default_entry" : {
3148 "action_id" : 4,
3149 "action_const" : false,
3150 "action_data" : [],
3151 "action_entry_const" : false
3152 }
3153 },
3154 {
Yi Tsengbe342052017-11-03 10:21:23 -07003155 "name" : "forwarding.multicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003156 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003157 "source_info" : {
3158 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003159 "line" : 89,
Yi Tsengbe342052017-11-03 10:21:23 -07003160 "column" : 10,
3161 "source_fragment" : "multicast_v4"
3162 },
3163 "key" : [
3164 {
3165 "match_type" : "exact",
3166 "target" : ["vlan_tag", "vlan_id"],
3167 "mask" : null
3168 },
3169 {
3170 "match_type" : "lpm",
3171 "target" : ["ipv4", "dst_addr"],
3172 "mask" : null
3173 }
3174 ],
3175 "match_type" : "lpm",
3176 "type" : "simple",
3177 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003178 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003179 "support_timeout" : false,
3180 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003181 "action_ids" : [18, 5],
Yi Tsengbe342052017-11-03 10:21:23 -07003182 "actions" : ["forwarding.set_next_id", "NoAction"],
3183 "base_default_next" : "forwarding.acl",
3184 "next_tables" : {
3185 "forwarding.set_next_id" : "forwarding.acl",
3186 "NoAction" : "forwarding.acl"
3187 },
3188 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003189 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003190 "action_const" : false,
3191 "action_data" : [],
3192 "action_entry_const" : false
3193 }
3194 },
3195 {
3196 "name" : "forwarding.unicast_v6",
Yi Tsengbd46d052018-01-22 17:18:16 -08003197 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003198 "source_info" : {
3199 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003200 "line" : 101,
Yi Tsengbe342052017-11-03 10:21:23 -07003201 "column" : 10,
3202 "source_fragment" : "unicast_v6"
3203 },
3204 "key" : [
3205 {
3206 "match_type" : "lpm",
3207 "target" : ["ipv6", "dst_addr"],
3208 "mask" : null
3209 }
3210 ],
3211 "match_type" : "lpm",
3212 "type" : "simple",
3213 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003214 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003215 "support_timeout" : false,
3216 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003217 "action_ids" : [19, 6],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003218 "actions" : ["forwarding.set_next_id", "NoAction"],
Yi Tsengbe342052017-11-03 10:21:23 -07003219 "base_default_next" : "forwarding.acl",
3220 "next_tables" : {
3221 "forwarding.set_next_id" : "forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003222 "NoAction" : "forwarding.acl"
3223 },
3224 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003225 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003226 "action_const" : false,
3227 "action_data" : [],
3228 "action_entry_const" : false
3229 }
3230 },
3231 {
3232 "name" : "forwarding.multicast_v6",
Yi Tsengbd46d052018-01-22 17:18:16 -08003233 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003234 "source_info" : {
3235 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003236 "line" : 112,
Yi Tsengbe342052017-11-03 10:21:23 -07003237 "column" : 10,
3238 "source_fragment" : "multicast_v6"
3239 },
3240 "key" : [
3241 {
3242 "match_type" : "exact",
3243 "target" : ["vlan_tag", "vlan_id"],
3244 "mask" : null
3245 },
3246 {
3247 "match_type" : "lpm",
3248 "target" : ["ipv6", "dst_addr"],
3249 "mask" : null
3250 }
3251 ],
3252 "match_type" : "lpm",
3253 "type" : "simple",
3254 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003255 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003256 "support_timeout" : false,
3257 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003258 "action_ids" : [20, 7],
Yi Tsengbe342052017-11-03 10:21:23 -07003259 "actions" : ["forwarding.set_next_id", "NoAction"],
3260 "base_default_next" : "forwarding.acl",
3261 "next_tables" : {
3262 "forwarding.set_next_id" : "forwarding.acl",
3263 "NoAction" : "forwarding.acl"
3264 },
3265 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003266 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003267 "action_const" : false,
3268 "action_data" : [],
3269 "action_entry_const" : false
3270 }
3271 },
3272 {
3273 "name" : "forwarding.acl",
Yi Tsengbd46d052018-01-22 17:18:16 -08003274 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003275 "source_info" : {
3276 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003277 "line" : 124,
Yi Tsengbe342052017-11-03 10:21:23 -07003278 "column" : 10,
3279 "source_fragment" : "acl"
3280 },
3281 "key" : [
3282 {
3283 "match_type" : "ternary",
3284 "target" : ["standard_metadata", "ingress_port"],
3285 "mask" : null
3286 },
3287 {
3288 "match_type" : "ternary",
3289 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3290 "mask" : null
3291 },
3292 {
3293 "match_type" : "ternary",
Yi Tseng1d842672017-11-28 16:06:52 -08003294 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3295 "mask" : null
3296 },
3297 {
3298 "match_type" : "ternary",
3299 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3300 "mask" : null
3301 },
3302 {
3303 "match_type" : "ternary",
Yi Tsengc6844f52017-12-19 11:58:25 -08003304 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
3305 "mask" : null
3306 },
3307 {
3308 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003309 "target" : ["ethernet", "dst_addr"],
3310 "mask" : null
3311 },
3312 {
3313 "match_type" : "ternary",
3314 "target" : ["ethernet", "src_addr"],
3315 "mask" : null
3316 },
3317 {
3318 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003319 "target" : ["vlan_tag", "vlan_id"],
3320 "mask" : null
3321 },
3322 {
3323 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003324 "target" : ["ipv4", "src_addr"],
3325 "mask" : null
3326 },
3327 {
3328 "match_type" : "ternary",
3329 "target" : ["ipv4", "dst_addr"],
3330 "mask" : null
3331 },
3332 {
3333 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003334 "target" : ["icmp", "icmp_type"],
3335 "mask" : null
3336 },
3337 {
3338 "match_type" : "ternary",
3339 "target" : ["icmp", "icmp_code"],
3340 "mask" : null
3341 }
3342 ],
3343 "match_type" : "ternary",
3344 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003345 "max_size" : 256,
Yi Tsengbd46d052018-01-22 17:18:16 -08003346 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003347 "support_timeout" : false,
3348 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003349 "action_ids" : [21, 23, 15, 1],
3350 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "forwarding.drop", "nop"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003351 "base_default_next" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07003352 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003353 "forwarding.set_next_id" : "next.simple",
3354 "forwarding.duplicate_to_controller" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003355 "forwarding.drop" : "next.simple",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003356 "nop" : "next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07003357 },
3358 "default_entry" : {
3359 "action_id" : 1,
3360 "action_const" : true,
3361 "action_data" : [],
3362 "action_entry_const" : true
3363 }
3364 },
3365 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003366 "name" : "next.simple",
Yi Tsengbd46d052018-01-22 17:18:16 -08003367 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003368 "source_info" : {
3369 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003370 "line" : 89,
Yi Tsengbe342052017-11-03 10:21:23 -07003371 "column" : 10,
3372 "source_fragment" : "simple"
3373 },
3374 "key" : [
3375 {
3376 "match_type" : "exact",
3377 "target" : ["scalars", "fabric_metadata_t.next_id"],
3378 "mask" : null
3379 }
3380 ],
3381 "match_type" : "exact",
3382 "type" : "simple",
3383 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003384 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003385 "support_timeout" : false,
3386 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003387 "action_ids" : [24, 25, 26, 29, 8],
3388 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "next.mpls_routing_v4", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003389 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003390 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003391 "__HIT__" : "tbl_act_1",
3392 "__MISS__" : "tbl_act_2"
Yi Tsengbe342052017-11-03 10:21:23 -07003393 },
3394 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003395 "action_id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003396 "action_const" : false,
3397 "action_data" : [],
3398 "action_entry_const" : false
3399 }
3400 },
3401 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003402 "name" : "tbl_act_1",
3403 "id" : 12,
3404 "key" : [],
3405 "match_type" : "exact",
3406 "type" : "simple",
3407 "max_size" : 1024,
3408 "with_counters" : false,
3409 "support_timeout" : false,
3410 "direct_meters" : null,
3411 "action_ids" : [34],
3412 "actions" : ["act_1"],
3413 "base_default_next" : "node_23",
3414 "next_tables" : {
3415 "act_1" : "node_23"
3416 },
3417 "default_entry" : {
3418 "action_id" : 34,
3419 "action_const" : true,
3420 "action_data" : [],
3421 "action_entry_const" : true
3422 }
3423 },
3424 {
Yi Tseng1d842672017-11-28 16:06:52 -08003425 "name" : "tbl_act_2",
3426 "id" : 13,
3427 "key" : [],
3428 "match_type" : "exact",
3429 "type" : "simple",
3430 "max_size" : 1024,
3431 "with_counters" : false,
3432 "support_timeout" : false,
3433 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003434 "action_ids" : [35],
Yi Tseng1d842672017-11-28 16:06:52 -08003435 "actions" : ["act_2"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003436 "base_default_next" : "node_23",
Yi Tseng1d842672017-11-28 16:06:52 -08003437 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003438 "act_2" : "node_23"
Yi Tseng1d842672017-11-28 16:06:52 -08003439 },
3440 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003441 "action_id" : 35,
Yi Tseng1d842672017-11-28 16:06:52 -08003442 "action_const" : true,
3443 "action_data" : [],
3444 "action_entry_const" : true
3445 }
3446 },
3447 {
3448 "name" : "tbl_act_3",
3449 "id" : 14,
3450 "key" : [],
3451 "match_type" : "exact",
3452 "type" : "simple",
3453 "max_size" : 1024,
3454 "with_counters" : false,
3455 "support_timeout" : false,
3456 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003457 "action_ids" : [36],
Yi Tseng1d842672017-11-28 16:06:52 -08003458 "actions" : ["act_3"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003459 "base_default_next" : "next.hashed",
Yi Tseng1d842672017-11-28 16:06:52 -08003460 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003461 "act_3" : "next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003462 },
3463 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003464 "action_id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08003465 "action_const" : true,
3466 "action_data" : [],
3467 "action_entry_const" : true
3468 }
3469 },
3470 {
3471 "name" : "tbl_act_4",
3472 "id" : 15,
3473 "key" : [],
3474 "match_type" : "exact",
3475 "type" : "simple",
3476 "max_size" : 1024,
3477 "with_counters" : false,
3478 "support_timeout" : false,
3479 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003480 "action_ids" : [37],
Yi Tseng1d842672017-11-28 16:06:52 -08003481 "actions" : ["act_4"],
3482 "base_default_next" : "next.hashed",
3483 "next_tables" : {
3484 "act_4" : "next.hashed"
3485 },
3486 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003487 "action_id" : 37,
Yi Tseng1d842672017-11-28 16:06:52 -08003488 "action_const" : true,
3489 "action_data" : [],
3490 "action_entry_const" : true
3491 }
3492 },
3493 {
Yi Tsengbe342052017-11-03 10:21:23 -07003494 "name" : "next.hashed",
Yi Tsengbd46d052018-01-22 17:18:16 -08003495 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07003496 "source_info" : {
3497 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003498 "line" : 103,
Yi Tsengbe342052017-11-03 10:21:23 -07003499 "column" : 10,
3500 "source_fragment" : "hashed"
3501 },
3502 "key" : [
3503 {
3504 "match_type" : "exact",
3505 "target" : ["scalars", "fabric_metadata_t.next_id"],
3506 "mask" : null
3507 }
3508 ],
3509 "match_type" : "exact",
3510 "type" : "indirect_ws",
3511 "action_profile" : "next.ecmp_selector",
3512 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003513 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003514 "support_timeout" : false,
3515 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003516 "action_ids" : [27, 30, 31, 9],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003517 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003518 "base_default_next" : "next.broadcast",
Yi Tsengbe342052017-11-03 10:21:23 -07003519 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003520 "next.l3_routing" : "next.broadcast",
3521 "next.mpls_routing_v4" : "next.broadcast",
3522 "next.mpls_routing_v6" : "next.broadcast",
3523 "NoAction" : "next.broadcast"
Yi Tsengbe342052017-11-03 10:21:23 -07003524 }
3525 },
3526 {
3527 "name" : "next.broadcast",
Yi Tsengbd46d052018-01-22 17:18:16 -08003528 "id" : 17,
Yi Tsengbe342052017-11-03 10:21:23 -07003529 "source_info" : {
3530 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003531 "line" : 126,
Yi Tsengbe342052017-11-03 10:21:23 -07003532 "column" : 10,
3533 "source_fragment" : "broadcast"
3534 },
3535 "key" : [
3536 {
3537 "match_type" : "exact",
3538 "target" : ["scalars", "fabric_metadata_t.next_id"],
3539 "mask" : null
3540 }
3541 ],
3542 "match_type" : "exact",
3543 "type" : "simple",
3544 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003545 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003546 "support_timeout" : false,
3547 "direct_meters" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003548 "action_ids" : [28, 10],
Yi Tsengbe342052017-11-03 10:21:23 -07003549 "actions" : ["next.set_mcast_group", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003550 "base_default_next" : "node_31",
Yi Tsengbe342052017-11-03 10:21:23 -07003551 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003552 "next.set_mcast_group" : "node_31",
3553 "NoAction" : "node_31"
Yi Tsengbe342052017-11-03 10:21:23 -07003554 },
3555 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003556 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003557 "action_const" : false,
3558 "action_data" : [],
3559 "action_entry_const" : false
3560 }
3561 },
3562 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003563 "name" : "tbl_act_5",
3564 "id" : 18,
3565 "key" : [],
3566 "match_type" : "exact",
3567 "type" : "simple",
3568 "max_size" : 1024,
3569 "with_counters" : false,
3570 "support_timeout" : false,
3571 "direct_meters" : null,
3572 "action_ids" : [38],
3573 "actions" : ["act_5"],
3574 "base_default_next" : "node_33",
3575 "next_tables" : {
3576 "act_5" : "node_33"
3577 },
3578 "default_entry" : {
3579 "action_id" : 38,
3580 "action_const" : true,
3581 "action_data" : [],
3582 "action_entry_const" : true
3583 }
3584 },
3585 {
Yi Tseng1d842672017-11-28 16:06:52 -08003586 "name" : "tbl_act_6",
3587 "id" : 19,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003588 "key" : [],
3589 "match_type" : "exact",
3590 "type" : "simple",
3591 "max_size" : 1024,
3592 "with_counters" : false,
3593 "support_timeout" : false,
3594 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003595 "action_ids" : [39],
Yi Tseng1d842672017-11-28 16:06:52 -08003596 "actions" : ["act_6"],
3597 "base_default_next" : "node_35",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003598 "next_tables" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003599 "act_6" : "node_35"
Yi Tsengf55eaa82017-11-29 15:51:28 -08003600 },
3601 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003602 "action_id" : 39,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003603 "action_const" : true,
3604 "action_data" : [],
3605 "action_entry_const" : true
3606 }
3607 },
3608 {
Yi Tseng1d842672017-11-28 16:06:52 -08003609 "name" : "tbl_act_7",
3610 "id" : 20,
Yi Tsengbe342052017-11-03 10:21:23 -07003611 "key" : [],
3612 "match_type" : "exact",
3613 "type" : "simple",
3614 "max_size" : 1024,
3615 "with_counters" : false,
3616 "support_timeout" : false,
3617 "direct_meters" : null,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003618 "action_ids" : [40],
Yi Tseng1d842672017-11-28 16:06:52 -08003619 "actions" : ["act_7"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003620 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003621 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003622 "act_7" : null
Yi Tsengbe342052017-11-03 10:21:23 -07003623 },
3624 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003625 "action_id" : 40,
3626 "action_const" : true,
3627 "action_data" : [],
3628 "action_entry_const" : true
3629 }
Yi Tsengbe342052017-11-03 10:21:23 -07003630 }
3631 ],
3632 "action_profiles" : [
3633 {
3634 "name" : "next.ecmp_selector",
3635 "id" : 0,
3636 "max_size" : 64,
3637 "selector" : {
3638 "algo" : "crc16",
3639 "input" : [
3640 {
3641 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003642 "value" : ["ethernet", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003643 },
3644 {
3645 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003646 "value" : ["ethernet", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003647 },
3648 {
3649 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003650 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003651 },
3652 {
3653 "type" : "field",
3654 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3655 },
3656 {
3657 "type" : "field",
3658 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3659 }
3660 ]
3661 }
3662 }
3663 ],
3664 "conditionals" : [
3665 {
3666 "name" : "node_2",
3667 "id" : 0,
3668 "source_info" : {
3669 "filename" : "./include/control/packetio.p4",
3670 "line" : 25,
3671 "column" : 12,
3672 "source_fragment" : "hdr.packet_out.isValid()"
3673 },
3674 "expression" : {
3675 "type" : "expression",
3676 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003677 "op" : "d2b",
3678 "left" : null,
3679 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003680 "type" : "field",
3681 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003682 }
3683 }
3684 },
3685 "true_next" : "tbl_act",
3686 "false_next" : "filtering.ingress_port_vlan"
3687 },
3688 {
3689 "name" : "node_6",
3690 "id" : 1,
3691 "source_info" : {
3692 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003693 "line" : 154,
Yi Tsengbe342052017-11-03 10:21:23 -07003694 "column" : 11,
3695 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3696 },
3697 "expression" : {
3698 "type" : "expression",
3699 "value" : {
3700 "op" : "==",
3701 "left" : {
3702 "type" : "field",
3703 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3704 },
3705 "right" : {
3706 "type" : "hexstr",
3707 "value" : "0x00"
3708 }
3709 }
3710 },
3711 "true_next" : "forwarding.bridging",
3712 "false_next" : "node_8"
3713 },
3714 {
3715 "name" : "node_8",
3716 "id" : 2,
3717 "source_info" : {
3718 "filename" : "./include/control/forwarding.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003719 "line" : 155,
Yi Tsengbe342052017-11-03 10:21:23 -07003720 "column" : 17,
3721 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3722 },
3723 "expression" : {
3724 "type" : "expression",
3725 "value" : {
3726 "op" : "==",
3727 "left" : {
3728 "type" : "field",
3729 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3730 },
3731 "right" : {
3732 "type" : "hexstr",
3733 "value" : "0x01"
3734 }
3735 }
3736 },
3737 "true_next" : "forwarding.mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -08003738 "false_next" : "node_11"
Yi Tsengbe342052017-11-03 10:21:23 -07003739 },
3740 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003741 "name" : "node_11",
Yi Tsengbe342052017-11-03 10:21:23 -07003742 "id" : 3,
3743 "source_info" : {
3744 "filename" : "./include/control/forwarding.p4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003745 "line" : 162,
Yi Tsengbe342052017-11-03 10:21:23 -07003746 "column" : 17,
3747 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3748 },
3749 "expression" : {
3750 "type" : "expression",
3751 "value" : {
3752 "op" : "==",
3753 "left" : {
3754 "type" : "field",
3755 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3756 },
3757 "right" : {
3758 "type" : "hexstr",
3759 "value" : "0x02"
3760 }
3761 }
3762 },
3763 "true_next" : "forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003764 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003765 },
3766 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003767 "name" : "node_13",
3768 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07003769 "source_info" : {
3770 "filename" : "./include/control/forwarding.p4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003771 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -07003772 "column" : 17,
3773 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
3774 },
3775 "expression" : {
3776 "type" : "expression",
3777 "value" : {
3778 "op" : "==",
3779 "left" : {
3780 "type" : "field",
3781 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3782 },
3783 "right" : {
3784 "type" : "hexstr",
3785 "value" : "0x03"
3786 }
3787 }
3788 },
3789 "true_next" : "forwarding.multicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003790 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07003791 },
3792 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003793 "name" : "node_15",
3794 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003795 "source_info" : {
3796 "filename" : "./include/control/forwarding.p4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003797 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -07003798 "column" : 17,
3799 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
3800 },
3801 "expression" : {
3802 "type" : "expression",
3803 "value" : {
3804 "op" : "==",
3805 "left" : {
3806 "type" : "field",
3807 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3808 },
3809 "right" : {
3810 "type" : "hexstr",
3811 "value" : "0x04"
3812 }
3813 }
3814 },
3815 "true_next" : "forwarding.unicast_v6",
Yi Tsengbd46d052018-01-22 17:18:16 -08003816 "false_next" : "node_17"
Yi Tsengbe342052017-11-03 10:21:23 -07003817 },
3818 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003819 "name" : "node_17",
3820 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003821 "source_info" : {
3822 "filename" : "./include/control/forwarding.p4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003823 "line" : 165,
Yi Tsengbe342052017-11-03 10:21:23 -07003824 "column" : 17,
3825 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
3826 },
3827 "expression" : {
3828 "type" : "expression",
3829 "value" : {
3830 "op" : "==",
3831 "left" : {
3832 "type" : "field",
3833 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3834 },
3835 "right" : {
3836 "type" : "hexstr",
3837 "value" : "0x05"
3838 }
3839 }
3840 },
3841 "true_next" : "forwarding.multicast_v6",
3842 "false_next" : "forwarding.acl"
3843 },
3844 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003845 "name" : "node_23",
3846 "id" : 7,
Yi Tseng1d842672017-11-28 16:06:52 -08003847 "expression" : {
3848 "type" : "expression",
3849 "value" : {
3850 "op" : "d2b",
3851 "left" : null,
3852 "right" : {
3853 "type" : "field",
3854 "value" : ["scalars", "next_tmp_0"]
3855 }
3856 }
3857 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003858 "true_next" : "node_24",
Yi Tseng1d842672017-11-28 16:06:52 -08003859 "false_next" : "next.hashed"
3860 },
3861 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003862 "name" : "node_24",
3863 "id" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08003864 "source_info" : {
3865 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003866 "line" : 138,
Yi Tsengbd46d052018-01-22 17:18:16 -08003867 "column" : 16,
3868 "source_fragment" : "!hdr.mpls.isValid()"
Yi Tseng1d842672017-11-28 16:06:52 -08003869 },
3870 "expression" : {
3871 "type" : "expression",
3872 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003873 "op" : "not",
3874 "left" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003875 "right" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003876 "type" : "expression",
3877 "value" : {
3878 "op" : "d2b",
3879 "left" : null,
3880 "right" : {
3881 "type" : "field",
3882 "value" : ["mpls", "$valid$"]
3883 }
3884 }
Yi Tseng1d842672017-11-28 16:06:52 -08003885 }
3886 }
3887 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003888 "true_next" : "node_25",
Yi Tseng1d842672017-11-28 16:06:52 -08003889 "false_next" : "next.hashed"
3890 },
3891 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003892 "name" : "node_25",
3893 "id" : 9,
Yi Tseng1d842672017-11-28 16:06:52 -08003894 "source_info" : {
3895 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003896 "line" : 139,
Yi Tseng1d842672017-11-28 16:06:52 -08003897 "column" : 19,
3898 "source_fragment" : "hdr.ipv4.isValid()"
3899 },
3900 "expression" : {
3901 "type" : "expression",
3902 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003903 "op" : "d2b",
3904 "left" : null,
3905 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003906 "type" : "field",
3907 "value" : ["ipv4", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08003908 }
3909 }
3910 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003911 "true_next" : "tbl_act_3",
3912 "false_next" : "node_27"
Yi Tseng1d842672017-11-28 16:06:52 -08003913 },
3914 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003915 "name" : "node_27",
3916 "id" : 10,
Yi Tseng1d842672017-11-28 16:06:52 -08003917 "source_info" : {
3918 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003919 "line" : 142,
Yi Tseng1d842672017-11-28 16:06:52 -08003920 "column" : 25,
3921 "source_fragment" : "hdr.ipv6.isValid()"
3922 },
3923 "expression" : {
3924 "type" : "expression",
3925 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003926 "op" : "d2b",
3927 "left" : null,
3928 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003929 "type" : "field",
3930 "value" : ["ipv6", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08003931 }
3932 }
3933 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003934 "true_next" : "tbl_act_4",
Yi Tseng1d842672017-11-28 16:06:52 -08003935 "false_next" : "next.hashed"
3936 },
3937 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003938 "name" : "node_31",
3939 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003940 "source_info" : {
3941 "filename" : "./include/control/port_counter.p4",
3942 "line" : 27,
3943 "column" : 12,
3944 "source_fragment" : "standard_metadata.egress_spec < 511"
3945 },
3946 "expression" : {
3947 "type" : "expression",
3948 "value" : {
3949 "op" : "<",
3950 "left" : {
3951 "type" : "field",
3952 "value" : ["standard_metadata", "egress_spec"]
3953 },
3954 "right" : {
3955 "type" : "hexstr",
3956 "value" : "0x01ff"
3957 }
3958 }
3959 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003960 "true_next" : "tbl_act_5",
3961 "false_next" : "node_33"
Yi Tsengbe342052017-11-03 10:21:23 -07003962 },
3963 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003964 "name" : "node_33",
3965 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003966 "source_info" : {
3967 "filename" : "./include/control/port_counter.p4",
3968 "line" : 30,
3969 "column" : 12,
3970 "source_fragment" : "standard_metadata.ingress_port < 511"
3971 },
3972 "expression" : {
3973 "type" : "expression",
3974 "value" : {
3975 "op" : "<",
3976 "left" : {
3977 "type" : "field",
3978 "value" : ["standard_metadata", "ingress_port"]
3979 },
3980 "right" : {
3981 "type" : "hexstr",
3982 "value" : "0x01ff"
3983 }
3984 }
3985 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003986 "true_next" : "tbl_act_6",
3987 "false_next" : "node_35"
Yi Tsengf55eaa82017-11-29 15:51:28 -08003988 },
3989 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003990 "name" : "node_35",
3991 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07003992 "source_info" : {
3993 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003994 "line" : 159,
Yi Tsengbe342052017-11-03 10:21:23 -07003995 "column" : 12,
3996 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
3997 },
3998 "expression" : {
3999 "type" : "expression",
4000 "value" : {
4001 "op" : "d2b",
4002 "left" : null,
4003 "right" : {
4004 "type" : "field",
4005 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
4006 }
4007 }
4008 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08004009 "false_next" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -08004010 "true_next" : "tbl_act_7"
Yi Tseng3a5731e2018-01-22 11:38:58 -08004011 }
4012 ]
4013 },
4014 {
4015 "name" : "egress",
4016 "id" : 1,
4017 "source_info" : {
4018 "filename" : "fabric.p4",
4019 "line" : 50,
4020 "column" : 8,
4021 "source_fragment" : "FabricEgress"
4022 },
Yi Tsengbd46d052018-01-22 17:18:16 -08004023 "init_table" : "node_39",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004024 "tables" : [
4025 {
Yi Tsengbd46d052018-01-22 17:18:16 -08004026 "name" : "tbl_act_8",
4027 "id" : 21,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004028 "key" : [],
4029 "match_type" : "exact",
4030 "type" : "simple",
4031 "max_size" : 1024,
4032 "with_counters" : false,
4033 "support_timeout" : false,
4034 "direct_meters" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -08004035 "action_ids" : [41],
4036 "actions" : ["act_8"],
Yi Tseng3a5731e2018-01-22 11:38:58 -08004037 "base_default_next" : null,
4038 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08004039 "act_8" : null
Yi Tseng3a5731e2018-01-22 11:38:58 -08004040 },
4041 "default_entry" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08004042 "action_id" : 41,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004043 "action_const" : true,
4044 "action_data" : [],
4045 "action_entry_const" : true
4046 }
4047 }
4048 ],
4049 "action_profiles" : [],
4050 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004051 {
Yi Tsengbd46d052018-01-22 17:18:16 -08004052 "name" : "node_39",
4053 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07004054 "source_info" : {
4055 "filename" : "./include/control/packetio.p4",
4056 "line" : 38,
4057 "column" : 12,
4058 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
4059 },
4060 "expression" : {
4061 "type" : "expression",
4062 "value" : {
4063 "op" : "==",
4064 "left" : {
4065 "type" : "field",
4066 "value" : ["standard_metadata", "egress_port"]
4067 },
4068 "right" : {
4069 "type" : "hexstr",
4070 "value" : "0x00ff"
4071 }
4072 }
4073 },
4074 "false_next" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -08004075 "true_next" : "tbl_act_8"
Yi Tsengbe342052017-11-03 10:21:23 -07004076 }
4077 ]
4078 }
4079 ],
4080 "checksums" : [
4081 {
4082 "name" : "cksum",
4083 "id" : 0,
4084 "target" : ["ipv4", "hdr_checksum"],
4085 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004086 "calculation" : "calc",
4087 "if_cond" : {
4088 "type" : "expression",
4089 "value" : {
4090 "op" : "d2b",
4091 "left" : null,
4092 "right" : {
4093 "type" : "field",
4094 "value" : ["ipv4", "$valid$"]
4095 }
4096 }
4097 }
Yi Tsengbe342052017-11-03 10:21:23 -07004098 },
4099 {
4100 "name" : "cksum_0",
4101 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07004102 "target" : ["ipv4", "hdr_checksum"],
4103 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004104 "calculation" : "calc_0",
4105 "if_cond" : {
4106 "type" : "expression",
4107 "value" : {
4108 "op" : "d2b",
4109 "left" : null,
4110 "right" : {
4111 "type" : "field",
4112 "value" : ["ipv4", "$valid$"]
4113 }
4114 }
4115 }
Yi Tsengbe342052017-11-03 10:21:23 -07004116 }
4117 ],
4118 "force_arith" : [],
4119 "extern_instances" : [],
4120 "field_aliases" : [
4121 [
4122 "queueing_metadata.enq_timestamp",
4123 ["standard_metadata", "enq_timestamp"]
4124 ],
4125 [
4126 "queueing_metadata.enq_qdepth",
4127 ["standard_metadata", "enq_qdepth"]
4128 ],
4129 [
4130 "queueing_metadata.deq_timedelta",
4131 ["standard_metadata", "deq_timedelta"]
4132 ],
4133 [
4134 "queueing_metadata.deq_qdepth",
4135 ["standard_metadata", "deq_qdepth"]
4136 ],
4137 [
4138 "intrinsic_metadata.ingress_global_timestamp",
4139 ["standard_metadata", "ingress_global_timestamp"]
4140 ],
4141 [
4142 "intrinsic_metadata.lf_field_list",
4143 ["standard_metadata", "lf_field_list"]
4144 ],
4145 [
4146 "intrinsic_metadata.mcast_grp",
4147 ["standard_metadata", "mcast_grp"]
4148 ],
4149 [
4150 "intrinsic_metadata.resubmit_flag",
4151 ["standard_metadata", "resubmit_flag"]
4152 ],
4153 [
4154 "intrinsic_metadata.egress_rid",
4155 ["standard_metadata", "egress_rid"]
4156 ]
4157 ]
4158}