blob: 228ff23d422eb06e67de23e5f9124803029158f8 [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" : "arp_t",
Carmelo Casconeb531b682018-01-30 17:55:56 -080075 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -070076 "fields" : [
77 ["hw_type", 16, false],
78 ["proto_type", 16, false],
79 ["hw_addr_len", 8, false],
80 ["proto_addr_len", 8, false],
81 ["opcode", 16, false]
82 ]
83 },
84 {
85 "name" : "tcp_t",
Carmelo Casconeb531b682018-01-30 17:55:56 -080086 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -070087 "fields" : [
88 ["src_port", 16, false],
89 ["dst_port", 16, false],
90 ["seq_no", 32, false],
91 ["ack_no", 32, false],
92 ["data_offset", 4, false],
93 ["res", 3, false],
94 ["ecn", 3, false],
95 ["ctrl", 6, false],
96 ["window", 16, false],
97 ["checksum", 16, false],
98 ["urgent_ptr", 16, false]
99 ]
100 },
101 {
102 "name" : "udp_t",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800103 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700104 "fields" : [
105 ["src_port", 16, false],
106 ["dst_port", 16, false],
107 ["len", 16, false],
108 ["checksum", 16, false]
109 ]
110 },
111 {
112 "name" : "icmp_t",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800113 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700114 "fields" : [
115 ["icmp_type", 8, false],
116 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800117 ["checksum", 16, false],
118 ["identifier", 16, false],
119 ["sequence_number", 16, false],
120 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700121 ]
122 },
123 {
124 "name" : "packet_out_header_t",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800125 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700126 "fields" : [
127 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800128 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700129 ]
130 },
131 {
132 "name" : "packet_in_header_t",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800133 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700134 "fields" : [
135 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800136 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700137 ]
138 },
139 {
140 "name" : "standard_metadata",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800141 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700142 "fields" : [
143 ["ingress_port", 9, false],
144 ["egress_spec", 9, false],
145 ["egress_port", 9, false],
146 ["clone_spec", 32, false],
147 ["instance_type", 32, false],
148 ["drop", 1, false],
149 ["recirculate_port", 16, false],
150 ["packet_length", 32, false],
151 ["enq_timestamp", 32, false],
152 ["enq_qdepth", 19, false],
153 ["deq_timedelta", 32, false],
154 ["deq_qdepth", 19, false],
155 ["ingress_global_timestamp", 48, false],
156 ["lf_field_list", 32, false],
157 ["mcast_grp", 16, false],
158 ["resubmit_flag", 1, false],
159 ["egress_rid", 16, false],
160 ["checksum_error", 1, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800161 ["_padding", 4, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700162 ]
163 }
164 ],
165 "headers" : [
166 {
Yi Tsengbe342052017-11-03 10:21:23 -0700167 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800168 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700169 "header_type" : "scalars_0",
170 "metadata" : true,
171 "pi_omit" : true
172 },
173 {
174 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800175 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700176 "header_type" : "standard_metadata",
177 "metadata" : true,
178 "pi_omit" : true
179 },
180 {
181 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800182 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700183 "header_type" : "ethernet_t",
184 "metadata" : false,
185 "pi_omit" : true
186 },
187 {
188 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800189 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700190 "header_type" : "vlan_tag_t",
191 "metadata" : false,
192 "pi_omit" : true
193 },
194 {
Yi Tsengbe342052017-11-03 10:21:23 -0700195 "name" : "mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800196 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700197 "header_type" : "mpls_t",
198 "metadata" : false,
199 "pi_omit" : true
200 },
201 {
202 "name" : "ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800203 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700204 "header_type" : "ipv4_t",
205 "metadata" : false,
206 "pi_omit" : true
207 },
208 {
Yi Tsengbe342052017-11-03 10:21:23 -0700209 "name" : "arp",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800210 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700211 "header_type" : "arp_t",
212 "metadata" : false,
213 "pi_omit" : true
214 },
215 {
216 "name" : "tcp",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800217 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700218 "header_type" : "tcp_t",
219 "metadata" : false,
220 "pi_omit" : true
221 },
222 {
223 "name" : "udp",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800224 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700225 "header_type" : "udp_t",
226 "metadata" : false,
227 "pi_omit" : true
228 },
229 {
230 "name" : "icmp",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800231 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700232 "header_type" : "icmp_t",
233 "metadata" : false,
234 "pi_omit" : true
235 },
236 {
237 "name" : "packet_out",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800238 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700239 "header_type" : "packet_out_header_t",
240 "metadata" : false,
241 "pi_omit" : true
242 },
243 {
244 "name" : "packet_in",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800245 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700246 "header_type" : "packet_in_header_t",
247 "metadata" : false,
248 "pi_omit" : true
249 }
250 ],
251 "header_stacks" : [],
252 "header_union_types" : [],
253 "header_unions" : [],
254 "header_union_stacks" : [],
255 "field_lists" : [],
256 "errors" : [
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800257 ["NoError", 1],
258 ["PacketTooShort", 2],
259 ["NoMatch", 3],
260 ["StackOutOfBounds", 4],
261 ["HeaderTooShort", 5],
262 ["ParserTimeout", 6]
Yi Tsengbe342052017-11-03 10:21:23 -0700263 ],
264 "enums" : [],
265 "parsers" : [
266 {
267 "name" : "parser",
268 "id" : 0,
269 "init_state" : "start",
270 "parse_states" : [
271 {
272 "name" : "start",
273 "id" : 0,
274 "parser_ops" : [],
275 "transitions" : [
276 {
277 "value" : "0x00ff",
278 "mask" : null,
279 "next_state" : "parse_packet_out"
280 },
281 {
282 "value" : "default",
283 "mask" : null,
284 "next_state" : "parse_ethernet"
285 }
286 ],
287 "transition_key" : [
288 {
289 "type" : "field",
290 "value" : ["standard_metadata", "ingress_port"]
291 }
292 ]
293 },
294 {
295 "name" : "parse_packet_out",
296 "id" : 1,
297 "parser_ops" : [
298 {
299 "parameters" : [
300 {
301 "type" : "regular",
302 "value" : "packet_out"
303 }
304 ],
305 "op" : "extract"
306 }
307 ],
308 "transitions" : [
309 {
310 "value" : "default",
311 "mask" : null,
312 "next_state" : "parse_ethernet"
313 }
314 ],
315 "transition_key" : []
316 },
317 {
318 "name" : "parse_ethernet",
319 "id" : 2,
320 "parser_ops" : [
321 {
322 "parameters" : [
323 {
324 "type" : "regular",
325 "value" : "ethernet"
326 }
327 ],
328 "op" : "extract"
Yi Tseng1d842672017-11-28 16:06:52 -0800329 },
330 {
331 "parameters" : [
332 {
333 "type" : "field",
334 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
335 },
336 {
337 "type" : "field",
338 "value" : ["ethernet", "ether_type"]
339 }
340 ],
341 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700342 }
343 ],
344 "transitions" : [
345 {
Yi Tsengbe342052017-11-03 10:21:23 -0700346 "value" : "0x8100",
347 "mask" : null,
348 "next_state" : "parse_vlan_tag"
349 },
350 {
351 "value" : "0x8847",
352 "mask" : null,
353 "next_state" : "parse_mpls"
354 },
355 {
356 "value" : "0x0806",
357 "mask" : null,
358 "next_state" : "parse_arp"
359 },
360 {
361 "value" : "0x0800",
362 "mask" : null,
363 "next_state" : "parse_ipv4"
364 },
365 {
Yi Tsengbe342052017-11-03 10:21:23 -0700366 "value" : "default",
367 "mask" : null,
368 "next_state" : null
369 }
370 ],
371 "transition_key" : [
372 {
373 "type" : "field",
374 "value" : ["ethernet", "ether_type"]
375 }
376 ]
377 },
378 {
379 "name" : "parse_vlan_tag",
380 "id" : 3,
381 "parser_ops" : [
382 {
383 "parameters" : [
384 {
385 "type" : "regular",
386 "value" : "vlan_tag"
387 }
388 ],
389 "op" : "extract"
390 }
391 ],
392 "transitions" : [
393 {
Yi Tsengbe342052017-11-03 10:21:23 -0700394 "value" : "0x0806",
395 "mask" : null,
396 "next_state" : "parse_arp"
397 },
398 {
399 "value" : "0x0800",
400 "mask" : null,
401 "next_state" : "parse_ipv4"
402 },
403 {
Yi Tsengbd46d052018-01-22 17:18:16 -0800404 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700405 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800406 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700407 },
408 {
409 "value" : "default",
410 "mask" : null,
411 "next_state" : null
412 }
413 ],
414 "transition_key" : [
415 {
416 "type" : "field",
417 "value" : ["vlan_tag", "ether_type"]
418 }
419 ]
420 },
421 {
422 "name" : "parse_mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800423 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700424 "parser_ops" : [
425 {
426 "parameters" : [
427 {
428 "type" : "regular",
429 "value" : "mpls"
430 }
431 ],
432 "op" : "extract"
433 },
434 {
435 "parameters" : [
436 {
437 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800438 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700439 },
440 {
441 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800442 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700443 }
444 ],
445 "op" : "set"
446 }
447 ],
448 "transitions" : [
449 {
450 "value" : "0x04",
451 "mask" : null,
452 "next_state" : "parse_ipv4"
453 },
454 {
Yi Tsengbe342052017-11-03 10:21:23 -0700455 "value" : "default",
456 "mask" : null,
457 "next_state" : "parse_ethernet"
458 }
459 ],
460 "transition_key" : [
461 {
462 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800463 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700464 }
465 ]
466 },
467 {
468 "name" : "parse_ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800469 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700470 "parser_ops" : [
471 {
472 "parameters" : [
473 {
474 "type" : "regular",
475 "value" : "ipv4"
476 }
477 ],
478 "op" : "extract"
479 },
480 {
481 "parameters" : [
482 {
483 "type" : "field",
484 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
485 },
486 {
487 "type" : "field",
488 "value" : ["ipv4", "protocol"]
489 }
490 ],
491 "op" : "set"
492 }
493 ],
494 "transitions" : [
495 {
496 "value" : "0x06",
497 "mask" : null,
498 "next_state" : "parse_tcp"
499 },
500 {
501 "value" : "0x11",
502 "mask" : null,
503 "next_state" : "parse_udp"
504 },
505 {
506 "value" : "0x01",
507 "mask" : null,
508 "next_state" : "parse_icmp"
509 },
510 {
511 "value" : "default",
512 "mask" : null,
513 "next_state" : null
514 }
515 ],
516 "transition_key" : [
517 {
518 "type" : "field",
519 "value" : ["ipv4", "protocol"]
520 }
521 ]
522 },
523 {
Yi Tsengbe342052017-11-03 10:21:23 -0700524 "name" : "parse_arp",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800525 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700526 "parser_ops" : [
527 {
528 "parameters" : [
529 {
530 "type" : "regular",
531 "value" : "arp"
532 }
533 ],
534 "op" : "extract"
535 }
536 ],
537 "transitions" : [
538 {
539 "value" : "default",
540 "mask" : null,
541 "next_state" : null
542 }
543 ],
544 "transition_key" : []
545 },
546 {
547 "name" : "parse_tcp",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800548 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700549 "parser_ops" : [
550 {
551 "parameters" : [
552 {
553 "type" : "regular",
554 "value" : "tcp"
555 }
556 ],
557 "op" : "extract"
558 },
559 {
560 "parameters" : [
561 {
562 "type" : "field",
563 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
564 },
565 {
566 "type" : "field",
567 "value" : ["tcp", "src_port"]
568 }
569 ],
570 "op" : "set"
571 },
572 {
573 "parameters" : [
574 {
575 "type" : "field",
576 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
577 },
578 {
579 "type" : "field",
580 "value" : ["tcp", "dst_port"]
581 }
582 ],
583 "op" : "set"
584 }
585 ],
586 "transitions" : [
587 {
588 "value" : "default",
589 "mask" : null,
590 "next_state" : null
591 }
592 ],
593 "transition_key" : []
594 },
595 {
596 "name" : "parse_udp",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800597 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700598 "parser_ops" : [
599 {
600 "parameters" : [
601 {
602 "type" : "regular",
603 "value" : "udp"
604 }
605 ],
606 "op" : "extract"
607 },
608 {
609 "parameters" : [
610 {
611 "type" : "field",
612 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
613 },
614 {
615 "type" : "field",
616 "value" : ["udp", "src_port"]
617 }
618 ],
619 "op" : "set"
620 },
621 {
622 "parameters" : [
623 {
624 "type" : "field",
625 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
626 },
627 {
628 "type" : "field",
629 "value" : ["udp", "dst_port"]
630 }
631 ],
632 "op" : "set"
633 }
634 ],
635 "transitions" : [
636 {
637 "value" : "default",
638 "mask" : null,
639 "next_state" : null
640 }
641 ],
642 "transition_key" : []
643 },
644 {
645 "name" : "parse_icmp",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800646 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700647 "parser_ops" : [
648 {
649 "parameters" : [
650 {
651 "type" : "regular",
652 "value" : "icmp"
653 }
654 ],
655 "op" : "extract"
656 }
657 ],
658 "transitions" : [
659 {
660 "value" : "default",
661 "mask" : null,
662 "next_state" : null
663 }
664 ],
665 "transition_key" : []
666 }
667 ]
668 }
669 ],
670 "deparsers" : [
671 {
672 "name" : "deparser",
673 "id" : 0,
674 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800675 "filename" : "include/parser.p4",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800676 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -0700677 "column" : 8,
678 "source_fragment" : "FabricDeparser"
679 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800680 "order" : ["packet_in", "ethernet", "vlan_tag", "mpls", "arp", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700681 }
682 ],
683 "meter_arrays" : [],
684 "counter_arrays" : [
685 {
Yi Tseng3a5731e2018-01-22 11:38:58 -0800686 "name" : "filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800687 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800688 "is_direct" : true,
689 "binding" : "filtering.ingress_port_vlan"
690 },
691 {
692 "name" : "filtering.fwd_classifier_counter",
693 "id" : 1,
694 "is_direct" : true,
695 "binding" : "filtering.fwd_classifier"
696 },
697 {
698 "name" : "forwarding.bridging_counter",
699 "id" : 2,
700 "is_direct" : true,
701 "binding" : "forwarding.bridging"
702 },
703 {
704 "name" : "forwarding.mpls_counter",
705 "id" : 3,
706 "is_direct" : true,
707 "binding" : "forwarding.mpls"
708 },
709 {
710 "name" : "forwarding.unicast_v4_counter",
711 "id" : 4,
712 "is_direct" : true,
713 "binding" : "forwarding.unicast_v4"
714 },
715 {
716 "name" : "forwarding.multicast_v4_counter",
717 "id" : 5,
718 "is_direct" : true,
719 "binding" : "forwarding.multicast_v4"
720 },
721 {
Yi Tseng3a5731e2018-01-22 11:38:58 -0800722 "name" : "forwarding.acl_counter",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800723 "id" : 6,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800724 "is_direct" : true,
725 "binding" : "forwarding.acl"
726 },
727 {
728 "name" : "next.simple_counter",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800729 "id" : 7,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800730 "is_direct" : true,
731 "binding" : "next.simple"
732 },
733 {
734 "name" : "next.hashed_counter",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800735 "id" : 8,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800736 "is_direct" : true,
737 "binding" : "next.hashed"
738 },
739 {
740 "name" : "next.broadcast_counter",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800741 "id" : 9,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800742 "is_direct" : true,
743 "binding" : "next.broadcast"
744 },
745 {
746 "name" : "port_counters_control.egress_port_counter",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800747 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700748 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800749 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700750 "line" : 23,
751 "column" : 38,
752 "source_fragment" : "egress_port_counter"
753 },
754 "size" : 511,
755 "is_direct" : false
756 },
757 {
758 "name" : "port_counters_control.ingress_port_counter",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800759 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700760 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800761 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700762 "line" : 24,
763 "column" : 38,
764 "source_fragment" : "ingress_port_counter"
765 },
766 "size" : 511,
767 "is_direct" : false
768 }
769 ],
770 "register_arrays" : [],
771 "calculations" : [
772 {
773 "name" : "calc",
774 "id" : 0,
775 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800776 "filename" : "include/checksum.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800777 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -0700778 "column" : 8,
779 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
780 },
781 "algo" : "csum16",
782 "input" : [
783 {
784 "type" : "field",
785 "value" : ["ipv4", "version"]
786 },
787 {
788 "type" : "field",
789 "value" : ["ipv4", "ihl"]
790 },
791 {
792 "type" : "field",
793 "value" : ["ipv4", "diffserv"]
794 },
795 {
796 "type" : "field",
797 "value" : ["ipv4", "total_len"]
798 },
799 {
800 "type" : "field",
801 "value" : ["ipv4", "identification"]
802 },
803 {
804 "type" : "field",
805 "value" : ["ipv4", "flags"]
806 },
807 {
808 "type" : "field",
809 "value" : ["ipv4", "frag_offset"]
810 },
811 {
812 "type" : "field",
813 "value" : ["ipv4", "ttl"]
814 },
815 {
816 "type" : "field",
817 "value" : ["ipv4", "protocol"]
818 },
819 {
820 "type" : "field",
821 "value" : ["ipv4", "src_addr"]
822 },
823 {
824 "type" : "field",
825 "value" : ["ipv4", "dst_addr"]
826 }
827 ]
828 },
829 {
830 "name" : "calc_0",
831 "id" : 1,
832 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800833 "filename" : "include/checksum.p4",
834 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700835 "column" : 8,
836 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
837 },
838 "algo" : "csum16",
839 "input" : [
840 {
841 "type" : "field",
842 "value" : ["ipv4", "version"]
843 },
844 {
845 "type" : "field",
846 "value" : ["ipv4", "ihl"]
847 },
848 {
849 "type" : "field",
850 "value" : ["ipv4", "diffserv"]
851 },
852 {
853 "type" : "field",
854 "value" : ["ipv4", "total_len"]
855 },
856 {
857 "type" : "field",
858 "value" : ["ipv4", "identification"]
859 },
860 {
861 "type" : "field",
862 "value" : ["ipv4", "flags"]
863 },
864 {
865 "type" : "field",
866 "value" : ["ipv4", "frag_offset"]
867 },
868 {
869 "type" : "field",
870 "value" : ["ipv4", "ttl"]
871 },
872 {
873 "type" : "field",
874 "value" : ["ipv4", "protocol"]
875 },
876 {
877 "type" : "field",
878 "value" : ["ipv4", "src_addr"]
879 },
880 {
881 "type" : "field",
882 "value" : ["ipv4", "dst_addr"]
883 }
884 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700885 }
886 ],
887 "learn_lists" : [],
888 "actions" : [
889 {
890 "name" : "nop",
891 "id" : 0,
892 "runtime_data" : [],
893 "primitives" : []
894 },
895 {
896 "name" : "nop",
897 "id" : 1,
898 "runtime_data" : [],
899 "primitives" : []
900 },
901 {
Yi Tseng1d842672017-11-28 16:06:52 -0800902 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700903 "id" : 2,
904 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800905 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700906 },
907 {
Yi Tseng1d842672017-11-28 16:06:52 -0800908 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700909 "id" : 3,
910 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800911 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700912 },
913 {
914 "name" : "NoAction",
915 "id" : 4,
916 "runtime_data" : [],
917 "primitives" : []
918 },
919 {
920 "name" : "NoAction",
921 "id" : 5,
922 "runtime_data" : [],
923 "primitives" : []
924 },
925 {
926 "name" : "NoAction",
927 "id" : 6,
928 "runtime_data" : [],
929 "primitives" : []
930 },
931 {
932 "name" : "NoAction",
933 "id" : 7,
934 "runtime_data" : [],
935 "primitives" : []
936 },
937 {
938 "name" : "NoAction",
939 "id" : 8,
940 "runtime_data" : [],
941 "primitives" : []
942 },
943 {
Yi Tseng1d842672017-11-28 16:06:52 -0800944 "name" : "filtering.drop",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800945 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700946 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800947 "primitives" : [
948 {
949 "op" : "drop",
950 "parameters" : [],
951 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800952 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800953 "line" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -0800954 "column" : 8,
955 "source_fragment" : "mark_to_drop()"
956 }
957 }
958 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700959 },
960 {
Yi Tsengbe342052017-11-03 10:21:23 -0700961 "name" : "filtering.set_vlan",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800962 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700963 "runtime_data" : [
964 {
965 "name" : "new_vlan_id",
966 "bitwidth" : 12
967 }
968 ],
969 "primitives" : [
970 {
971 "op" : "assign",
972 "parameters" : [
973 {
974 "type" : "field",
975 "value" : ["vlan_tag", "vlan_id"]
976 },
977 {
978 "type" : "runtime_data",
979 "value" : 0
980 }
981 ],
982 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800983 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800984 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -0700985 "column" : 8,
986 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
987 }
988 }
989 ]
990 },
991 {
992 "name" : "filtering.push_internal_vlan",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800993 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700994 "runtime_data" : [
995 {
996 "name" : "new_vlan_id",
997 "bitwidth" : 12
998 }
999 ],
1000 "primitives" : [
1001 {
1002 "op" : "add_header",
1003 "parameters" : [
1004 {
1005 "type" : "header",
1006 "value" : "vlan_tag"
1007 }
1008 ],
1009 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001010 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001011 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001012 "column" : 8,
1013 "source_fragment" : "hdr.vlan_tag.setValid()"
1014 }
1015 },
1016 {
1017 "op" : "assign",
1018 "parameters" : [
1019 {
1020 "type" : "field",
1021 "value" : ["vlan_tag", "cfi"]
1022 },
1023 {
1024 "type" : "hexstr",
1025 "value" : "0x00"
1026 }
1027 ],
1028 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001029 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001030 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001031 "column" : 8,
1032 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1033 }
1034 },
1035 {
1036 "op" : "assign",
1037 "parameters" : [
1038 {
1039 "type" : "field",
1040 "value" : ["vlan_tag", "pri"]
1041 },
1042 {
1043 "type" : "hexstr",
1044 "value" : "0x00"
1045 }
1046 ],
1047 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001048 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001049 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001050 "column" : 8,
1051 "source_fragment" : "hdr.vlan_tag.pri = 0"
1052 }
1053 },
1054 {
1055 "op" : "assign",
1056 "parameters" : [
1057 {
1058 "type" : "field",
1059 "value" : ["vlan_tag", "ether_type"]
1060 },
1061 {
Yi Tseng1d842672017-11-28 16:06:52 -08001062 "type" : "field",
1063 "value" : ["ethernet", "ether_type"]
1064 }
1065 ],
1066 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001067 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001068 "line" : 44,
Yi Tseng1d842672017-11-28 16:06:52 -08001069 "column" : 8,
1070 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1071 }
1072 },
1073 {
1074 "op" : "assign",
1075 "parameters" : [
1076 {
1077 "type" : "field",
1078 "value" : ["ethernet", "ether_type"]
1079 },
1080 {
Yi Tsengbe342052017-11-03 10:21:23 -07001081 "type" : "hexstr",
1082 "value" : "0x8100"
1083 }
1084 ],
1085 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001086 "filename" : "include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001087 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001088 "column" : 31,
1089 "source_fragment" : "0x8100; ..."
1090 }
1091 },
1092 {
1093 "op" : "assign",
1094 "parameters" : [
1095 {
1096 "type" : "field",
1097 "value" : ["vlan_tag", "vlan_id"]
1098 },
1099 {
1100 "type" : "runtime_data",
1101 "value" : 0
1102 }
1103 ],
1104 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001105 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001106 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001107 "column" : 8,
1108 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1109 }
1110 },
1111 {
1112 "op" : "assign",
1113 "parameters" : [
1114 {
1115 "type" : "field",
1116 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1117 },
1118 {
1119 "type" : "expression",
1120 "value" : {
1121 "type" : "expression",
1122 "value" : {
1123 "op" : "b2d",
1124 "left" : null,
1125 "right" : {
1126 "type" : "bool",
1127 "value" : true
1128 }
1129 }
1130 }
1131 }
1132 ],
1133 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001134 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001135 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001136 "column" : 8,
1137 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1138 }
1139 }
1140 ]
1141 },
1142 {
1143 "name" : "filtering.set_forwarding_type",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001144 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001145 "runtime_data" : [
1146 {
1147 "name" : "fwd_type",
1148 "bitwidth" : 3
1149 }
1150 ],
1151 "primitives" : [
1152 {
1153 "op" : "assign",
1154 "parameters" : [
1155 {
1156 "type" : "field",
1157 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1158 },
1159 {
1160 "type" : "runtime_data",
1161 "value" : 0
1162 }
1163 ],
1164 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001165 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001166 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07001167 "column" : 8,
1168 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1169 }
1170 }
1171 ]
1172 },
1173 {
Yi Tseng1d842672017-11-28 16:06:52 -08001174 "name" : "forwarding.drop",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001175 "id" : 13,
Yi Tseng1d842672017-11-28 16:06:52 -08001176 "runtime_data" : [],
1177 "primitives" : [
1178 {
1179 "op" : "drop",
1180 "parameters" : [],
1181 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001182 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001183 "line" : 37,
Yi Tseng1d842672017-11-28 16:06:52 -08001184 "column" : 8,
1185 "source_fragment" : "mark_to_drop()"
1186 }
1187 }
1188 ]
1189 },
1190 {
Yi Tsengbe342052017-11-03 10:21:23 -07001191 "name" : "forwarding.set_next_id",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001192 "id" : 14,
1193 "runtime_data" : [
1194 {
1195 "name" : "next_id",
1196 "bitwidth" : 32
1197 }
1198 ],
1199 "primitives" : [
1200 {
1201 "op" : "assign",
1202 "parameters" : [
1203 {
1204 "type" : "field",
1205 "value" : ["scalars", "fabric_metadata_t.next_id"]
1206 },
1207 {
1208 "type" : "runtime_data",
1209 "value" : 0
1210 }
1211 ],
1212 "source_info" : {
1213 "filename" : "include/control/forwarding.p4",
1214 "line" : 41,
1215 "column" : 8,
1216 "source_fragment" : "fabric_metadata.next_id = next_id"
1217 }
1218 }
1219 ]
1220 },
1221 {
1222 "name" : "forwarding.set_next_id",
1223 "id" : 15,
1224 "runtime_data" : [
1225 {
1226 "name" : "next_id",
1227 "bitwidth" : 32
1228 }
1229 ],
1230 "primitives" : [
1231 {
1232 "op" : "assign",
1233 "parameters" : [
1234 {
1235 "type" : "field",
1236 "value" : ["scalars", "fabric_metadata_t.next_id"]
1237 },
1238 {
1239 "type" : "runtime_data",
1240 "value" : 0
1241 }
1242 ],
1243 "source_info" : {
1244 "filename" : "include/control/forwarding.p4",
1245 "line" : 41,
1246 "column" : 8,
1247 "source_fragment" : "fabric_metadata.next_id = next_id"
1248 }
1249 }
1250 ]
1251 },
1252 {
1253 "name" : "forwarding.set_next_id",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001254 "id" : 16,
1255 "runtime_data" : [
1256 {
1257 "name" : "next_id",
1258 "bitwidth" : 32
1259 }
1260 ],
1261 "primitives" : [
1262 {
1263 "op" : "assign",
1264 "parameters" : [
1265 {
1266 "type" : "field",
1267 "value" : ["scalars", "fabric_metadata_t.next_id"]
1268 },
1269 {
1270 "type" : "runtime_data",
1271 "value" : 0
1272 }
1273 ],
1274 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001275 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001276 "line" : 41,
Yi Tsengf55eaa82017-11-29 15:51:28 -08001277 "column" : 8,
1278 "source_fragment" : "fabric_metadata.next_id = next_id"
1279 }
1280 }
1281 ]
1282 },
1283 {
1284 "name" : "forwarding.set_next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07001285 "id" : 17,
1286 "runtime_data" : [
1287 {
1288 "name" : "next_id",
1289 "bitwidth" : 32
1290 }
1291 ],
1292 "primitives" : [
1293 {
1294 "op" : "assign",
1295 "parameters" : [
1296 {
1297 "type" : "field",
1298 "value" : ["scalars", "fabric_metadata_t.next_id"]
1299 },
1300 {
1301 "type" : "runtime_data",
1302 "value" : 0
1303 }
1304 ],
1305 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001306 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001307 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001308 "column" : 8,
1309 "source_fragment" : "fabric_metadata.next_id = next_id"
1310 }
1311 }
1312 ]
1313 },
1314 {
Yi Tsengbe342052017-11-03 10:21:23 -07001315 "name" : "forwarding.pop_mpls_and_next",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001316 "id" : 18,
Yi Tsengbe342052017-11-03 10:21:23 -07001317 "runtime_data" : [
1318 {
1319 "name" : "next_id",
1320 "bitwidth" : 32
1321 }
1322 ],
1323 "primitives" : [
1324 {
1325 "op" : "remove_header",
1326 "parameters" : [
1327 {
1328 "type" : "header",
1329 "value" : "mpls"
1330 }
1331 ],
1332 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001333 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001334 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001335 "column" : 8,
1336 "source_fragment" : "hdr.mpls.setInvalid()"
1337 }
1338 },
1339 {
1340 "op" : "assign",
1341 "parameters" : [
1342 {
1343 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001344 "value" : ["scalars", "fabric_metadata_t.next_id"]
1345 },
1346 {
1347 "type" : "runtime_data",
1348 "value" : 0
1349 }
1350 ],
1351 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001352 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001353 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07001354 "column" : 8,
1355 "source_fragment" : "fabric_metadata.next_id = next_id"
1356 }
1357 }
1358 ]
1359 },
1360 {
Yi Tsengbe342052017-11-03 10:21:23 -07001361 "name" : "forwarding.duplicate_to_controller",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001362 "id" : 19,
Yi Tsengbe342052017-11-03 10:21:23 -07001363 "runtime_data" : [],
1364 "primitives" : [
1365 {
1366 "op" : "assign",
1367 "parameters" : [
1368 {
1369 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001370 "value" : ["standard_metadata", "egress_spec"]
1371 },
1372 {
1373 "type" : "hexstr",
1374 "value" : "0x00ff"
1375 }
1376 ],
1377 "source_info" : {
Carmelo Casconeb531b682018-01-30 17:55:56 -08001378 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001379 "line" : 50,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001380 "column" : 8,
1381 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001382 }
1383 }
1384 ]
1385 },
1386 {
Yi Tsengbe342052017-11-03 10:21:23 -07001387 "name" : "next.output",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001388 "id" : 20,
Yi Tsengbe342052017-11-03 10:21:23 -07001389 "runtime_data" : [
1390 {
1391 "name" : "port_num",
1392 "bitwidth" : 9
1393 }
1394 ],
1395 "primitives" : [
1396 {
1397 "op" : "assign",
1398 "parameters" : [
1399 {
1400 "type" : "field",
1401 "value" : ["standard_metadata", "egress_spec"]
1402 },
1403 {
1404 "type" : "runtime_data",
1405 "value" : 0
1406 }
1407 ],
1408 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001409 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001410 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001411 "column" : 8,
1412 "source_fragment" : "standard_metadata.egress_spec = port_num"
1413 }
Yi Tsengbe342052017-11-03 10:21:23 -07001414 }
1415 ]
1416 },
1417 {
1418 "name" : "next.set_vlan_output",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001419 "id" : 21,
Yi Tsengbe342052017-11-03 10:21:23 -07001420 "runtime_data" : [
1421 {
1422 "name" : "new_vlan_id",
1423 "bitwidth" : 12
1424 },
1425 {
1426 "name" : "port_num",
1427 "bitwidth" : 9
1428 }
1429 ],
1430 "primitives" : [
1431 {
1432 "op" : "assign",
1433 "parameters" : [
1434 {
1435 "type" : "field",
1436 "value" : ["vlan_tag", "vlan_id"]
1437 },
1438 {
1439 "type" : "runtime_data",
1440 "value" : 0
1441 }
1442 ],
1443 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001444 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001445 "line" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07001446 "column" : 8,
1447 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1448 }
1449 },
1450 {
1451 "op" : "assign",
1452 "parameters" : [
1453 {
1454 "type" : "field",
1455 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1456 },
1457 {
1458 "type" : "expression",
1459 "value" : {
1460 "type" : "expression",
1461 "value" : {
1462 "op" : "b2d",
1463 "left" : null,
1464 "right" : {
1465 "type" : "bool",
1466 "value" : false
1467 }
1468 }
1469 }
1470 }
1471 ],
1472 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001473 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001474 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001475 "column" : 8,
1476 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
1477 }
1478 },
1479 {
1480 "op" : "assign",
1481 "parameters" : [
1482 {
1483 "type" : "field",
1484 "value" : ["standard_metadata", "egress_spec"]
1485 },
1486 {
1487 "type" : "runtime_data",
1488 "value" : 1
1489 }
1490 ],
1491 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001492 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001493 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001494 "column" : 8,
1495 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1496 }
Yi Tsengbe342052017-11-03 10:21:23 -07001497 }
1498 ]
1499 },
1500 {
1501 "name" : "next.l3_routing",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001502 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07001503 "runtime_data" : [
1504 {
1505 "name" : "port_num",
1506 "bitwidth" : 9
1507 },
1508 {
1509 "name" : "smac",
1510 "bitwidth" : 48
1511 },
1512 {
1513 "name" : "dmac",
1514 "bitwidth" : 48
1515 }
1516 ],
1517 "primitives" : [
1518 {
1519 "op" : "assign",
1520 "parameters" : [
1521 {
1522 "type" : "field",
1523 "value" : ["ethernet", "src_addr"]
1524 },
1525 {
1526 "type" : "runtime_data",
1527 "value" : 1
1528 }
1529 ],
1530 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001531 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001532 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001533 "column" : 8,
1534 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1535 }
1536 },
1537 {
1538 "op" : "assign",
1539 "parameters" : [
1540 {
1541 "type" : "field",
1542 "value" : ["ethernet", "dst_addr"]
1543 },
1544 {
1545 "type" : "runtime_data",
1546 "value" : 2
1547 }
1548 ],
1549 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001550 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001551 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001552 "column" : 8,
1553 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1554 }
1555 },
1556 {
1557 "op" : "assign",
1558 "parameters" : [
1559 {
1560 "type" : "field",
1561 "value" : ["standard_metadata", "egress_spec"]
1562 },
1563 {
1564 "type" : "runtime_data",
1565 "value" : 0
1566 }
1567 ],
1568 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001569 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001570 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001571 "column" : 8,
1572 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1573 }
Yi Tsengbe342052017-11-03 10:21:23 -07001574 }
1575 ]
1576 },
1577 {
1578 "name" : "next.l3_routing",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001579 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07001580 "runtime_data" : [
1581 {
1582 "name" : "port_num",
1583 "bitwidth" : 9
1584 },
1585 {
1586 "name" : "smac",
1587 "bitwidth" : 48
1588 },
1589 {
1590 "name" : "dmac",
1591 "bitwidth" : 48
1592 }
1593 ],
1594 "primitives" : [
1595 {
1596 "op" : "assign",
1597 "parameters" : [
1598 {
1599 "type" : "field",
1600 "value" : ["ethernet", "src_addr"]
1601 },
1602 {
1603 "type" : "runtime_data",
1604 "value" : 1
1605 }
1606 ],
1607 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001608 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001609 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001610 "column" : 8,
1611 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1612 }
1613 },
1614 {
1615 "op" : "assign",
1616 "parameters" : [
1617 {
1618 "type" : "field",
1619 "value" : ["ethernet", "dst_addr"]
1620 },
1621 {
1622 "type" : "runtime_data",
1623 "value" : 2
1624 }
1625 ],
1626 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001627 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001628 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001629 "column" : 8,
1630 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1631 }
1632 },
1633 {
1634 "op" : "assign",
1635 "parameters" : [
1636 {
1637 "type" : "field",
1638 "value" : ["standard_metadata", "egress_spec"]
1639 },
1640 {
1641 "type" : "runtime_data",
1642 "value" : 0
1643 }
1644 ],
1645 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001646 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001647 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001648 "column" : 8,
1649 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1650 }
Yi Tsengbe342052017-11-03 10:21:23 -07001651 }
1652 ]
1653 },
1654 {
1655 "name" : "next.set_mcast_group",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001656 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07001657 "runtime_data" : [
1658 {
1659 "name" : "gid",
1660 "bitwidth" : 16
1661 },
1662 {
1663 "name" : "smac",
1664 "bitwidth" : 48
1665 }
1666 ],
1667 "primitives" : [
1668 {
1669 "op" : "assign",
1670 "parameters" : [
1671 {
1672 "type" : "field",
1673 "value" : ["standard_metadata", "mcast_grp"]
1674 },
1675 {
1676 "type" : "runtime_data",
1677 "value" : 0
1678 }
1679 ],
1680 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001681 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001682 "line" : 59,
Yi Tsengbe342052017-11-03 10:21:23 -07001683 "column" : 8,
1684 "source_fragment" : "standard_metadata.mcast_grp = gid"
1685 }
1686 },
1687 {
1688 "op" : "assign",
1689 "parameters" : [
1690 {
1691 "type" : "field",
1692 "value" : ["ethernet", "src_addr"]
1693 },
1694 {
1695 "type" : "runtime_data",
1696 "value" : 1
1697 }
1698 ],
1699 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001700 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001701 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001702 "column" : 8,
1703 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1704 }
1705 }
1706 ]
1707 },
1708 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001709 "name" : "next.mpls_routing_v4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001710 "id" : 25,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001711 "runtime_data" : [
1712 {
1713 "name" : "port_num",
1714 "bitwidth" : 9
1715 },
1716 {
1717 "name" : "smac",
1718 "bitwidth" : 48
1719 },
1720 {
1721 "name" : "dmac",
1722 "bitwidth" : 48
1723 },
1724 {
1725 "name" : "label",
1726 "bitwidth" : 20
1727 }
1728 ],
1729 "primitives" : [
1730 {
1731 "op" : "assign",
1732 "parameters" : [
1733 {
1734 "type" : "field",
1735 "value" : ["ethernet", "src_addr"]
1736 },
1737 {
1738 "type" : "runtime_data",
1739 "value" : 1
1740 }
1741 ],
1742 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001743 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001744 "line" : 45,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001745 "column" : 8,
1746 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1747 }
1748 },
1749 {
1750 "op" : "assign",
1751 "parameters" : [
1752 {
1753 "type" : "field",
1754 "value" : ["ethernet", "dst_addr"]
1755 },
1756 {
1757 "type" : "runtime_data",
1758 "value" : 2
1759 }
1760 ],
1761 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001762 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001763 "line" : 49,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001764 "column" : 8,
1765 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1766 }
1767 },
1768 {
1769 "op" : "assign",
1770 "parameters" : [
1771 {
1772 "type" : "field",
1773 "value" : ["standard_metadata", "egress_spec"]
1774 },
1775 {
1776 "type" : "runtime_data",
1777 "value" : 0
1778 }
1779 ],
1780 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001781 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001782 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001783 "column" : 8,
1784 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1785 }
1786 },
1787 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001788 "op" : "add_header",
1789 "parameters" : [
1790 {
1791 "type" : "header",
1792 "value" : "mpls"
1793 }
1794 ],
1795 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001796 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001797 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001798 "column" : 8,
1799 "source_fragment" : "hdr.mpls.setValid()"
1800 }
1801 },
1802 {
1803 "op" : "assign",
1804 "parameters" : [
1805 {
1806 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08001807 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08001808 },
1809 {
1810 "type" : "hexstr",
1811 "value" : "0x8847"
1812 }
1813 ],
1814 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001815 "filename" : "include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001816 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001817 "column" : 31,
1818 "source_fragment" : "0x8847; ..."
1819 }
1820 },
1821 {
1822 "op" : "assign",
1823 "parameters" : [
1824 {
1825 "type" : "field",
1826 "value" : ["mpls", "label"]
1827 },
1828 {
1829 "type" : "runtime_data",
1830 "value" : 3
1831 }
1832 ],
1833 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001834 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001835 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001836 "column" : 8,
1837 "source_fragment" : "hdr.mpls.label = label; ..."
1838 }
1839 },
1840 {
1841 "op" : "assign",
1842 "parameters" : [
1843 {
1844 "type" : "field",
1845 "value" : ["mpls", "tc"]
1846 },
1847 {
Yi Tseng1d842672017-11-28 16:06:52 -08001848 "type" : "hexstr",
1849 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08001850 }
1851 ],
1852 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001853 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001854 "line" : 68,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001855 "column" : 8,
1856 "source_fragment" : "hdr.mpls.tc = tc; ..."
1857 }
1858 },
1859 {
1860 "op" : "assign",
1861 "parameters" : [
1862 {
1863 "type" : "field",
1864 "value" : ["mpls", "bos"]
1865 },
1866 {
1867 "type" : "hexstr",
1868 "value" : "0x01"
1869 }
1870 ],
1871 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001872 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001873 "line" : 69,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001874 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08001875 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08001876 }
1877 },
1878 {
1879 "op" : "assign",
1880 "parameters" : [
1881 {
1882 "type" : "field",
1883 "value" : ["mpls", "ttl"]
1884 },
1885 {
1886 "type" : "hexstr",
1887 "value" : "0x40"
1888 }
1889 ],
1890 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001891 "filename" : "include/control/../define.p4",
1892 "line" : 60,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001893 "column" : 32,
1894 "source_fragment" : "64; ..."
1895 }
1896 }
1897 ]
1898 },
1899 {
Yi Tseng3a5731e2018-01-22 11:38:58 -08001900 "name" : "next.mpls_routing_v4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001901 "id" : 26,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001902 "runtime_data" : [
1903 {
1904 "name" : "port_num",
1905 "bitwidth" : 9
1906 },
1907 {
1908 "name" : "smac",
1909 "bitwidth" : 48
1910 },
1911 {
1912 "name" : "dmac",
1913 "bitwidth" : 48
1914 },
1915 {
1916 "name" : "label",
1917 "bitwidth" : 20
1918 }
1919 ],
1920 "primitives" : [
1921 {
1922 "op" : "assign",
1923 "parameters" : [
1924 {
1925 "type" : "field",
1926 "value" : ["ethernet", "src_addr"]
1927 },
1928 {
1929 "type" : "runtime_data",
1930 "value" : 1
1931 }
1932 ],
1933 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001934 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001935 "line" : 45,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001936 "column" : 8,
1937 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1938 }
1939 },
1940 {
1941 "op" : "assign",
1942 "parameters" : [
1943 {
1944 "type" : "field",
1945 "value" : ["ethernet", "dst_addr"]
1946 },
1947 {
1948 "type" : "runtime_data",
1949 "value" : 2
1950 }
1951 ],
1952 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001953 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001954 "line" : 49,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001955 "column" : 8,
1956 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1957 }
1958 },
1959 {
1960 "op" : "assign",
1961 "parameters" : [
1962 {
1963 "type" : "field",
1964 "value" : ["standard_metadata", "egress_spec"]
1965 },
1966 {
1967 "type" : "runtime_data",
1968 "value" : 0
1969 }
1970 ],
1971 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001972 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001973 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001974 "column" : 8,
1975 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1976 }
1977 },
1978 {
Yi Tseng1b154bd2017-11-20 17:48:19 -08001979 "op" : "add_header",
1980 "parameters" : [
1981 {
1982 "type" : "header",
1983 "value" : "mpls"
1984 }
1985 ],
1986 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08001987 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001988 "line" : 65,
Yi Tseng1b154bd2017-11-20 17:48:19 -08001989 "column" : 8,
1990 "source_fragment" : "hdr.mpls.setValid()"
1991 }
1992 },
1993 {
1994 "op" : "assign",
1995 "parameters" : [
1996 {
1997 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08001998 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08001999 },
2000 {
2001 "type" : "hexstr",
2002 "value" : "0x8847"
2003 }
2004 ],
2005 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002006 "filename" : "include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002007 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002008 "column" : 31,
2009 "source_fragment" : "0x8847; ..."
2010 }
2011 },
2012 {
2013 "op" : "assign",
2014 "parameters" : [
2015 {
2016 "type" : "field",
2017 "value" : ["mpls", "label"]
2018 },
2019 {
2020 "type" : "runtime_data",
2021 "value" : 3
2022 }
2023 ],
2024 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002025 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002026 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002027 "column" : 8,
2028 "source_fragment" : "hdr.mpls.label = label; ..."
2029 }
2030 },
2031 {
2032 "op" : "assign",
2033 "parameters" : [
2034 {
2035 "type" : "field",
2036 "value" : ["mpls", "tc"]
2037 },
2038 {
Yi Tseng1d842672017-11-28 16:06:52 -08002039 "type" : "hexstr",
2040 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002041 }
2042 ],
2043 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002044 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002045 "line" : 68,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002046 "column" : 8,
2047 "source_fragment" : "hdr.mpls.tc = tc; ..."
2048 }
2049 },
2050 {
2051 "op" : "assign",
2052 "parameters" : [
2053 {
2054 "type" : "field",
2055 "value" : ["mpls", "bos"]
2056 },
2057 {
2058 "type" : "hexstr",
2059 "value" : "0x01"
2060 }
2061 ],
2062 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002063 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002064 "line" : 69,
2065 "column" : 8,
2066 "source_fragment" : "hdr.mpls.bos = 1w1"
2067 }
2068 },
2069 {
2070 "op" : "assign",
2071 "parameters" : [
2072 {
2073 "type" : "field",
2074 "value" : ["mpls", "ttl"]
2075 },
2076 {
2077 "type" : "hexstr",
2078 "value" : "0x40"
2079 }
2080 ],
2081 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002082 "filename" : "include/control/../define.p4",
2083 "line" : 60,
Yi Tseng3a5731e2018-01-22 11:38:58 -08002084 "column" : 32,
2085 "source_fragment" : "64; ..."
2086 }
2087 }
2088 ]
2089 },
2090 {
2091 "name" : "next.mpls_routing_v6",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002092 "id" : 27,
Yi Tseng3a5731e2018-01-22 11:38:58 -08002093 "runtime_data" : [
2094 {
2095 "name" : "port_num",
2096 "bitwidth" : 9
2097 },
2098 {
2099 "name" : "smac",
2100 "bitwidth" : 48
2101 },
2102 {
2103 "name" : "dmac",
2104 "bitwidth" : 48
2105 },
2106 {
2107 "name" : "label",
2108 "bitwidth" : 20
2109 }
2110 ],
2111 "primitives" : [
2112 {
2113 "op" : "assign",
2114 "parameters" : [
2115 {
2116 "type" : "field",
2117 "value" : ["ethernet", "src_addr"]
2118 },
2119 {
2120 "type" : "runtime_data",
2121 "value" : 1
2122 }
2123 ],
2124 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002125 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002126 "line" : 45,
2127 "column" : 8,
2128 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2129 }
2130 },
2131 {
2132 "op" : "assign",
2133 "parameters" : [
2134 {
2135 "type" : "field",
2136 "value" : ["ethernet", "dst_addr"]
2137 },
2138 {
2139 "type" : "runtime_data",
2140 "value" : 2
2141 }
2142 ],
2143 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002144 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002145 "line" : 49,
2146 "column" : 8,
2147 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2148 }
2149 },
2150 {
2151 "op" : "assign",
2152 "parameters" : [
2153 {
2154 "type" : "field",
2155 "value" : ["standard_metadata", "egress_spec"]
2156 },
2157 {
2158 "type" : "runtime_data",
2159 "value" : 0
2160 }
2161 ],
2162 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002163 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002164 "line" : 33,
2165 "column" : 8,
2166 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2167 }
2168 },
2169 {
2170 "op" : "add_header",
2171 "parameters" : [
2172 {
2173 "type" : "header",
2174 "value" : "mpls"
2175 }
2176 ],
2177 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002178 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002179 "line" : 65,
2180 "column" : 8,
2181 "source_fragment" : "hdr.mpls.setValid()"
2182 }
2183 },
2184 {
2185 "op" : "assign",
2186 "parameters" : [
2187 {
2188 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002189 "value" : ["vlan_tag", "ether_type"]
Yi Tseng3a5731e2018-01-22 11:38:58 -08002190 },
2191 {
2192 "type" : "hexstr",
2193 "value" : "0x8847"
2194 }
2195 ],
2196 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002197 "filename" : "include/control/../define.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002198 "line" : 33,
2199 "column" : 31,
2200 "source_fragment" : "0x8847; ..."
2201 }
2202 },
2203 {
2204 "op" : "assign",
2205 "parameters" : [
2206 {
2207 "type" : "field",
2208 "value" : ["mpls", "label"]
2209 },
2210 {
2211 "type" : "runtime_data",
2212 "value" : 3
2213 }
2214 ],
2215 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002216 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002217 "line" : 67,
2218 "column" : 8,
2219 "source_fragment" : "hdr.mpls.label = label; ..."
2220 }
2221 },
2222 {
2223 "op" : "assign",
2224 "parameters" : [
2225 {
2226 "type" : "field",
2227 "value" : ["mpls", "tc"]
2228 },
2229 {
2230 "type" : "hexstr",
2231 "value" : "0x00"
2232 }
2233 ],
2234 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002235 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002236 "line" : 68,
2237 "column" : 8,
2238 "source_fragment" : "hdr.mpls.tc = tc; ..."
2239 }
2240 },
2241 {
2242 "op" : "assign",
2243 "parameters" : [
2244 {
2245 "type" : "field",
2246 "value" : ["mpls", "bos"]
2247 },
2248 {
2249 "type" : "hexstr",
2250 "value" : "0x01"
2251 }
2252 ],
2253 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002254 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002255 "line" : 69,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002256 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002257 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002258 }
2259 },
2260 {
2261 "op" : "assign",
2262 "parameters" : [
2263 {
2264 "type" : "field",
2265 "value" : ["mpls", "ttl"]
2266 },
2267 {
2268 "type" : "hexstr",
2269 "value" : "0x40"
2270 }
2271 ],
2272 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002273 "filename" : "include/control/../define.p4",
2274 "line" : 60,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002275 "column" : 32,
2276 "source_fragment" : "64; ..."
2277 }
2278 }
2279 ]
2280 },
2281 {
Yi Tsengbe342052017-11-03 10:21:23 -07002282 "name" : "act",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002283 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002284 "runtime_data" : [],
2285 "primitives" : [
2286 {
2287 "op" : "assign",
2288 "parameters" : [
2289 {
2290 "type" : "field",
2291 "value" : ["standard_metadata", "egress_spec"]
2292 },
2293 {
2294 "type" : "field",
2295 "value" : ["packet_out", "egress_port"]
2296 }
2297 ],
2298 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002299 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002300 "line" : 26,
2301 "column" : 12,
2302 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2303 }
Yi Tseng1d842672017-11-28 16:06:52 -08002304 },
2305 {
2306 "op" : "remove_header",
2307 "parameters" : [
2308 {
2309 "type" : "header",
2310 "value" : "packet_out"
2311 }
2312 ],
2313 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002314 "filename" : "include/control/packetio.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002315 "line" : 27,
2316 "column" : 12,
2317 "source_fragment" : "hdr.packet_out.setInvalid()"
2318 }
Yi Tsengbe342052017-11-03 10:21:23 -07002319 }
2320 ]
2321 },
2322 {
2323 "name" : "act_0",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002324 "id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002325 "runtime_data" : [],
2326 "primitives" : [
2327 {
2328 "op" : "assign",
2329 "parameters" : [
2330 {
2331 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002332 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002333 },
2334 {
2335 "type" : "hexstr",
2336 "value" : "0x0800"
2337 }
2338 ],
2339 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002340 "filename" : "include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002341 "line" : 35,
2342 "column" : 31,
2343 "source_fragment" : "0x0800; ..."
2344 }
2345 },
2346 {
2347 "op" : "assign",
2348 "parameters" : [
2349 {
2350 "type" : "field",
2351 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2352 },
2353 {
2354 "type" : "hexstr",
2355 "value" : "0x0800"
2356 }
2357 ],
2358 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002359 "filename" : "include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002360 "line" : 35,
2361 "column" : 31,
2362 "source_fragment" : "0x0800; ..."
2363 }
2364 }
2365 ]
2366 },
2367 {
2368 "name" : "act_1",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002369 "id" : 30,
Yi Tseng1d842672017-11-28 16:06:52 -08002370 "runtime_data" : [],
2371 "primitives" : [
2372 {
2373 "op" : "assign",
2374 "parameters" : [
2375 {
2376 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002377 "value" : ["scalars", "next_tmp_0"]
2378 },
2379 {
2380 "type" : "expression",
2381 "value" : {
2382 "type" : "expression",
2383 "value" : {
2384 "op" : "b2d",
2385 "left" : null,
2386 "right" : {
2387 "type" : "bool",
2388 "value" : true
2389 }
2390 }
2391 }
2392 }
2393 ]
2394 }
2395 ]
2396 },
2397 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002398 "name" : "act_2",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002399 "id" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -08002400 "runtime_data" : [],
2401 "primitives" : [
2402 {
2403 "op" : "assign",
2404 "parameters" : [
2405 {
2406 "type" : "field",
2407 "value" : ["scalars", "next_tmp_0"]
2408 },
2409 {
2410 "type" : "expression",
2411 "value" : {
2412 "type" : "expression",
2413 "value" : {
2414 "op" : "b2d",
2415 "left" : null,
2416 "right" : {
2417 "type" : "bool",
2418 "value" : false
2419 }
2420 }
2421 }
2422 }
2423 ]
2424 }
2425 ]
2426 },
2427 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002428 "name" : "act_3",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002429 "id" : 32,
Yi Tseng1d842672017-11-28 16:06:52 -08002430 "runtime_data" : [],
2431 "primitives" : [
2432 {
2433 "op" : "assign",
2434 "parameters" : [
2435 {
2436 "type" : "field",
2437 "value" : ["ipv4", "ttl"]
2438 },
2439 {
2440 "type" : "expression",
2441 "value" : {
2442 "type" : "expression",
2443 "value" : {
2444 "op" : "&",
2445 "left" : {
2446 "type" : "expression",
2447 "value" : {
2448 "op" : "+",
2449 "left" : {
2450 "type" : "field",
2451 "value" : ["ipv4", "ttl"]
2452 },
2453 "right" : {
2454 "type" : "hexstr",
2455 "value" : "0xff"
2456 }
2457 }
2458 },
2459 "right" : {
2460 "type" : "hexstr",
2461 "value" : "0xff"
2462 }
2463 }
2464 }
2465 }
2466 ],
2467 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002468 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002469 "line" : 140,
Yi Tseng1d842672017-11-28 16:06:52 -08002470 "column" : 20,
2471 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2472 }
2473 }
2474 ]
2475 },
2476 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002477 "name" : "act_4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002478 "id" : 33,
Yi Tseng1d842672017-11-28 16:06:52 -08002479 "runtime_data" : [],
2480 "primitives" : [
2481 {
2482 "op" : "assign",
2483 "parameters" : [
2484 {
2485 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002486 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002487 },
2488 {
2489 "type" : "expression",
2490 "value" : {
2491 "type" : "expression",
2492 "value" : {
2493 "op" : "&",
2494 "left" : {
2495 "type" : "field",
2496 "value" : ["standard_metadata", "egress_spec"]
2497 },
2498 "right" : {
2499 "type" : "hexstr",
2500 "value" : "0xffffffff"
2501 }
2502 }
2503 }
2504 }
2505 ]
2506 },
2507 {
2508 "op" : "count",
2509 "parameters" : [
2510 {
2511 "type" : "counter_array",
2512 "value" : "port_counters_control.egress_port_counter"
2513 },
2514 {
2515 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002516 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002517 }
2518 ],
2519 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002520 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002521 "line" : 28,
2522 "column" : 12,
2523 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2524 }
2525 }
2526 ]
2527 },
2528 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002529 "name" : "act_5",
2530 "id" : 34,
Yi Tsengbe342052017-11-03 10:21:23 -07002531 "runtime_data" : [],
2532 "primitives" : [
2533 {
2534 "op" : "assign",
2535 "parameters" : [
2536 {
2537 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002538 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002539 },
2540 {
2541 "type" : "expression",
2542 "value" : {
2543 "type" : "expression",
2544 "value" : {
2545 "op" : "&",
2546 "left" : {
2547 "type" : "field",
2548 "value" : ["standard_metadata", "ingress_port"]
2549 },
2550 "right" : {
2551 "type" : "hexstr",
2552 "value" : "0xffffffff"
2553 }
2554 }
2555 }
2556 }
2557 ]
2558 },
2559 {
2560 "op" : "count",
2561 "parameters" : [
2562 {
2563 "type" : "counter_array",
2564 "value" : "port_counters_control.ingress_port_counter"
2565 },
2566 {
2567 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002568 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002569 }
2570 ],
2571 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002572 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002573 "line" : 31,
2574 "column" : 12,
2575 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2576 }
2577 }
2578 ]
2579 },
2580 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002581 "name" : "act_6",
2582 "id" : 35,
Yi Tseng1d842672017-11-28 16:06:52 -08002583 "runtime_data" : [],
2584 "primitives" : [
2585 {
2586 "op" : "assign",
2587 "parameters" : [
2588 {
2589 "type" : "field",
2590 "value" : ["ethernet", "ether_type"]
2591 },
2592 {
2593 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002594 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002595 }
2596 ],
2597 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002598 "filename" : "include/control/next.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002599 "line" : 162,
Yi Tsengbd46d052018-01-22 17:18:16 -08002600 "column" : 12,
2601 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
Yi Tseng1d842672017-11-28 16:06:52 -08002602 }
Yi Tsengbd46d052018-01-22 17:18:16 -08002603 },
Yi Tsengbe342052017-11-03 10:21:23 -07002604 {
2605 "op" : "remove_header",
2606 "parameters" : [
2607 {
2608 "type" : "header",
2609 "value" : "vlan_tag"
2610 }
2611 ],
2612 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002613 "filename" : "include/control/next.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002614 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -07002615 "column" : 12,
2616 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2617 }
2618 }
2619 ]
2620 },
2621 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002622 "name" : "act_7",
2623 "id" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07002624 "runtime_data" : [],
2625 "primitives" : [
2626 {
2627 "op" : "add_header",
2628 "parameters" : [
2629 {
2630 "type" : "header",
2631 "value" : "packet_in"
2632 }
2633 ],
2634 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002635 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002636 "line" : 39,
2637 "column" : 12,
2638 "source_fragment" : "hdr.packet_in.setValid()"
2639 }
2640 },
2641 {
2642 "op" : "assign",
2643 "parameters" : [
2644 {
2645 "type" : "field",
2646 "value" : ["packet_in", "ingress_port"]
2647 },
2648 {
2649 "type" : "field",
2650 "value" : ["standard_metadata", "ingress_port"]
2651 }
2652 ],
2653 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002654 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002655 "line" : 40,
2656 "column" : 12,
2657 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2658 }
2659 }
2660 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002661 }
2662 ],
2663 "pipelines" : [
2664 {
2665 "name" : "ingress",
2666 "id" : 0,
2667 "source_info" : {
2668 "filename" : "fabric.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002669 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002670 "column" : 8,
2671 "source_fragment" : "FabricIngress"
2672 },
2673 "init_table" : "node_2",
2674 "tables" : [
2675 {
2676 "name" : "tbl_act",
2677 "id" : 0,
2678 "key" : [],
2679 "match_type" : "exact",
2680 "type" : "simple",
2681 "max_size" : 1024,
2682 "with_counters" : false,
2683 "support_timeout" : false,
2684 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002685 "action_ids" : [28],
Yi Tsengbe342052017-11-03 10:21:23 -07002686 "actions" : ["act"],
2687 "base_default_next" : null,
2688 "next_tables" : {
2689 "act" : null
2690 },
2691 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002692 "action_id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002693 "action_const" : true,
2694 "action_data" : [],
2695 "action_entry_const" : true
2696 }
2697 },
2698 {
2699 "name" : "filtering.ingress_port_vlan",
2700 "id" : 1,
2701 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002702 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002703 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07002704 "column" : 10,
2705 "source_fragment" : "ingress_port_vlan"
2706 },
2707 "key" : [
2708 {
2709 "match_type" : "exact",
2710 "target" : ["standard_metadata", "ingress_port"],
2711 "mask" : null
2712 },
2713 {
2714 "match_type" : "exact",
2715 "target" : ["vlan_tag", "$valid$"],
2716 "mask" : null
2717 },
2718 {
2719 "match_type" : "ternary",
2720 "target" : ["vlan_tag", "vlan_id"],
2721 "mask" : null
2722 }
2723 ],
2724 "match_type" : "ternary",
2725 "type" : "simple",
2726 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002727 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002728 "support_timeout" : false,
2729 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002730 "action_ids" : [11, 10, 0, 9],
Yi Tseng1d842672017-11-28 16:06:52 -08002731 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "filtering.drop"],
Yi Tsengbe342052017-11-03 10:21:23 -07002732 "base_default_next" : "filtering.fwd_classifier",
2733 "next_tables" : {
2734 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
2735 "filtering.set_vlan" : "filtering.fwd_classifier",
2736 "nop" : "filtering.fwd_classifier",
Yi Tseng1d842672017-11-28 16:06:52 -08002737 "filtering.drop" : "filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002738 },
2739 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002740 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07002741 "action_const" : true,
2742 "action_data" : [],
2743 "action_entry_const" : true
2744 }
2745 },
2746 {
2747 "name" : "filtering.fwd_classifier",
2748 "id" : 2,
2749 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002750 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002751 "line" : 76,
Yi Tsengbe342052017-11-03 10:21:23 -07002752 "column" : 10,
2753 "source_fragment" : "fwd_classifier"
2754 },
2755 "key" : [
2756 {
2757 "match_type" : "exact",
2758 "target" : ["standard_metadata", "ingress_port"],
2759 "mask" : null
2760 },
2761 {
2762 "match_type" : "exact",
2763 "target" : ["ethernet", "dst_addr"],
2764 "mask" : null
2765 },
2766 {
2767 "match_type" : "exact",
Yi Tseng1d842672017-11-28 16:06:52 -08002768 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002769 "mask" : null
2770 }
2771 ],
2772 "match_type" : "exact",
2773 "type" : "simple",
2774 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002775 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002776 "support_timeout" : false,
2777 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002778 "action_ids" : [12],
Yi Tsengbe342052017-11-03 10:21:23 -07002779 "actions" : ["filtering.set_forwarding_type"],
2780 "base_default_next" : "node_6",
2781 "next_tables" : {
2782 "filtering.set_forwarding_type" : "node_6"
2783 },
2784 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002785 "action_id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07002786 "action_const" : true,
2787 "action_data" : ["0x0"],
2788 "action_entry_const" : true
2789 }
2790 },
2791 {
2792 "name" : "forwarding.bridging",
2793 "id" : 3,
2794 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002795 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002796 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07002797 "column" : 10,
2798 "source_fragment" : "bridging"
2799 },
2800 "key" : [
2801 {
2802 "match_type" : "exact",
2803 "target" : ["vlan_tag", "vlan_id"],
2804 "mask" : null
2805 },
2806 {
2807 "match_type" : "ternary",
2808 "target" : ["ethernet", "dst_addr"],
2809 "mask" : null
2810 }
2811 ],
2812 "match_type" : "ternary",
2813 "type" : "simple",
2814 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002815 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002816 "support_timeout" : false,
2817 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002818 "action_ids" : [14, 2],
Yi Tseng1d842672017-11-28 16:06:52 -08002819 "actions" : ["forwarding.set_next_id", "NoAction"],
2820 "base_default_next" : "forwarding.acl",
2821 "next_tables" : {
2822 "forwarding.set_next_id" : "forwarding.acl",
2823 "NoAction" : "forwarding.acl"
2824 },
2825 "default_entry" : {
2826 "action_id" : 2,
2827 "action_const" : false,
2828 "action_data" : [],
2829 "action_entry_const" : false
2830 }
2831 },
2832 {
2833 "name" : "forwarding.mpls",
2834 "id" : 4,
2835 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002836 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002837 "line" : 65,
Yi Tseng1d842672017-11-28 16:06:52 -08002838 "column" : 10,
2839 "source_fragment" : "mpls"
2840 },
2841 "key" : [
2842 {
2843 "match_type" : "exact",
2844 "target" : ["mpls", "label"],
2845 "mask" : null
2846 }
2847 ],
2848 "match_type" : "exact",
2849 "type" : "simple",
2850 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002851 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002852 "support_timeout" : false,
2853 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002854 "action_ids" : [18, 3],
Yi Tseng1d842672017-11-28 16:06:52 -08002855 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08002856 "base_default_next" : "tbl_act_0",
Yi Tseng1d842672017-11-28 16:06:52 -08002857 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08002858 "forwarding.pop_mpls_and_next" : "tbl_act_0",
2859 "NoAction" : "tbl_act_0"
Yi Tseng1d842672017-11-28 16:06:52 -08002860 },
2861 "default_entry" : {
2862 "action_id" : 3,
2863 "action_const" : false,
2864 "action_data" : [],
2865 "action_entry_const" : false
2866 }
2867 },
2868 {
2869 "name" : "tbl_act_0",
2870 "id" : 5,
2871 "key" : [],
2872 "match_type" : "exact",
2873 "type" : "simple",
2874 "max_size" : 1024,
2875 "with_counters" : false,
2876 "support_timeout" : false,
2877 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002878 "action_ids" : [29],
Yi Tseng1d842672017-11-28 16:06:52 -08002879 "actions" : ["act_0"],
2880 "base_default_next" : "forwarding.acl",
2881 "next_tables" : {
2882 "act_0" : "forwarding.acl"
2883 },
2884 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002885 "action_id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002886 "action_const" : true,
2887 "action_data" : [],
2888 "action_entry_const" : true
2889 }
2890 },
2891 {
Yi Tseng1d842672017-11-28 16:06:52 -08002892 "name" : "forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08002893 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08002894 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002895 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002896 "line" : 76,
Yi Tseng1d842672017-11-28 16:06:52 -08002897 "column" : 10,
2898 "source_fragment" : "unicast_v4"
2899 },
2900 "key" : [
2901 {
2902 "match_type" : "lpm",
2903 "target" : ["ipv4", "dst_addr"],
2904 "mask" : null
2905 }
2906 ],
2907 "match_type" : "lpm",
2908 "type" : "simple",
2909 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002910 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002911 "support_timeout" : false,
2912 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002913 "action_ids" : [15, 4],
Yi Tsengbe342052017-11-03 10:21:23 -07002914 "actions" : ["forwarding.set_next_id", "NoAction"],
2915 "base_default_next" : "forwarding.acl",
2916 "next_tables" : {
2917 "forwarding.set_next_id" : "forwarding.acl",
2918 "NoAction" : "forwarding.acl"
2919 },
2920 "default_entry" : {
2921 "action_id" : 4,
2922 "action_const" : false,
2923 "action_data" : [],
2924 "action_entry_const" : false
2925 }
2926 },
2927 {
Yi Tsengbe342052017-11-03 10:21:23 -07002928 "name" : "forwarding.multicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08002929 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07002930 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002931 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002932 "line" : 87,
Yi Tsengbe342052017-11-03 10:21:23 -07002933 "column" : 10,
2934 "source_fragment" : "multicast_v4"
2935 },
2936 "key" : [
2937 {
2938 "match_type" : "exact",
2939 "target" : ["vlan_tag", "vlan_id"],
2940 "mask" : null
2941 },
2942 {
2943 "match_type" : "lpm",
2944 "target" : ["ipv4", "dst_addr"],
2945 "mask" : null
2946 }
2947 ],
2948 "match_type" : "lpm",
2949 "type" : "simple",
2950 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002951 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002952 "support_timeout" : false,
2953 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002954 "action_ids" : [16, 5],
Yi Tsengbe342052017-11-03 10:21:23 -07002955 "actions" : ["forwarding.set_next_id", "NoAction"],
2956 "base_default_next" : "forwarding.acl",
2957 "next_tables" : {
2958 "forwarding.set_next_id" : "forwarding.acl",
2959 "NoAction" : "forwarding.acl"
2960 },
2961 "default_entry" : {
Yi Tseng1d842672017-11-28 16:06:52 -08002962 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07002963 "action_const" : false,
2964 "action_data" : [],
2965 "action_entry_const" : false
2966 }
2967 },
2968 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002969 "name" : "forwarding.acl",
Yi Tsengbd46d052018-01-22 17:18:16 -08002970 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07002971 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002972 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002973 "line" : 127,
Yi Tsengbe342052017-11-03 10:21:23 -07002974 "column" : 10,
2975 "source_fragment" : "acl"
2976 },
2977 "key" : [
2978 {
2979 "match_type" : "ternary",
2980 "target" : ["standard_metadata", "ingress_port"],
2981 "mask" : null
2982 },
2983 {
2984 "match_type" : "ternary",
2985 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
2986 "mask" : null
2987 },
2988 {
2989 "match_type" : "ternary",
Yi Tseng1d842672017-11-28 16:06:52 -08002990 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
2991 "mask" : null
2992 },
2993 {
2994 "match_type" : "ternary",
2995 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
2996 "mask" : null
2997 },
2998 {
2999 "match_type" : "ternary",
Yi Tsengc6844f52017-12-19 11:58:25 -08003000 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
3001 "mask" : null
3002 },
3003 {
3004 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003005 "target" : ["ethernet", "dst_addr"],
3006 "mask" : null
3007 },
3008 {
3009 "match_type" : "ternary",
3010 "target" : ["ethernet", "src_addr"],
3011 "mask" : null
3012 },
3013 {
3014 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003015 "target" : ["vlan_tag", "vlan_id"],
3016 "mask" : null
3017 },
3018 {
3019 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003020 "target" : ["ipv4", "src_addr"],
3021 "mask" : null
3022 },
3023 {
3024 "match_type" : "ternary",
3025 "target" : ["ipv4", "dst_addr"],
3026 "mask" : null
3027 },
3028 {
3029 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003030 "target" : ["icmp", "icmp_type"],
3031 "mask" : null
3032 },
3033 {
3034 "match_type" : "ternary",
3035 "target" : ["icmp", "icmp_code"],
3036 "mask" : null
3037 }
3038 ],
3039 "match_type" : "ternary",
3040 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003041 "max_size" : 256,
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,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003045 "action_ids" : [17, 19, 13, 1],
Yi Tseng1d842672017-11-28 16:06:52 -08003046 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "forwarding.drop", "nop"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003047 "base_default_next" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07003048 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003049 "forwarding.set_next_id" : "next.simple",
3050 "forwarding.duplicate_to_controller" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003051 "forwarding.drop" : "next.simple",
Yi Tsengf55eaa82017-11-29 15:51:28 -08003052 "nop" : "next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07003053 },
3054 "default_entry" : {
3055 "action_id" : 1,
3056 "action_const" : true,
3057 "action_data" : [],
3058 "action_entry_const" : true
3059 }
3060 },
3061 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003062 "name" : "next.simple",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003063 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003064 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003065 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003066 "line" : 89,
Yi Tsengbe342052017-11-03 10:21:23 -07003067 "column" : 10,
3068 "source_fragment" : "simple"
3069 },
3070 "key" : [
3071 {
3072 "match_type" : "exact",
3073 "target" : ["scalars", "fabric_metadata_t.next_id"],
3074 "mask" : null
3075 }
3076 ],
3077 "match_type" : "exact",
3078 "type" : "simple",
3079 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003080 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003081 "support_timeout" : false,
3082 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003083 "action_ids" : [20, 21, 22, 25, 6],
Yi Tseng3a5731e2018-01-22 11:38:58 -08003084 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "next.mpls_routing_v4", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003085 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003086 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003087 "__HIT__" : "tbl_act_1",
3088 "__MISS__" : "tbl_act_2"
Yi Tsengbe342052017-11-03 10:21:23 -07003089 },
3090 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003091 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003092 "action_const" : false,
3093 "action_data" : [],
3094 "action_entry_const" : false
3095 }
3096 },
3097 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003098 "name" : "tbl_act_1",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003099 "id" : 10,
3100 "key" : [],
3101 "match_type" : "exact",
3102 "type" : "simple",
3103 "max_size" : 1024,
3104 "with_counters" : false,
3105 "support_timeout" : false,
3106 "direct_meters" : null,
3107 "action_ids" : [30],
3108 "actions" : ["act_1"],
3109 "base_default_next" : "node_19",
3110 "next_tables" : {
3111 "act_1" : "node_19"
3112 },
3113 "default_entry" : {
3114 "action_id" : 30,
3115 "action_const" : true,
3116 "action_data" : [],
3117 "action_entry_const" : true
3118 }
3119 },
3120 {
3121 "name" : "tbl_act_2",
3122 "id" : 11,
3123 "key" : [],
3124 "match_type" : "exact",
3125 "type" : "simple",
3126 "max_size" : 1024,
3127 "with_counters" : false,
3128 "support_timeout" : false,
3129 "direct_meters" : null,
3130 "action_ids" : [31],
3131 "actions" : ["act_2"],
3132 "base_default_next" : "node_19",
3133 "next_tables" : {
3134 "act_2" : "node_19"
3135 },
3136 "default_entry" : {
3137 "action_id" : 31,
3138 "action_const" : true,
3139 "action_data" : [],
3140 "action_entry_const" : true
3141 }
3142 },
3143 {
3144 "name" : "tbl_act_3",
Yi Tsengbd46d052018-01-22 17:18:16 -08003145 "id" : 12,
3146 "key" : [],
3147 "match_type" : "exact",
3148 "type" : "simple",
3149 "max_size" : 1024,
3150 "with_counters" : false,
3151 "support_timeout" : false,
3152 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003153 "action_ids" : [32],
Yi Tseng1d842672017-11-28 16:06:52 -08003154 "actions" : ["act_3"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003155 "base_default_next" : "next.hashed",
Yi Tseng1d842672017-11-28 16:06:52 -08003156 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003157 "act_3" : "next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003158 },
3159 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003160 "action_id" : 32,
Yi Tseng1d842672017-11-28 16:06:52 -08003161 "action_const" : true,
3162 "action_data" : [],
3163 "action_entry_const" : true
3164 }
3165 },
3166 {
Yi Tsengbe342052017-11-03 10:21:23 -07003167 "name" : "next.hashed",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003168 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07003169 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003170 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003171 "line" : 103,
Yi Tsengbe342052017-11-03 10:21:23 -07003172 "column" : 10,
3173 "source_fragment" : "hashed"
3174 },
3175 "key" : [
3176 {
3177 "match_type" : "exact",
3178 "target" : ["scalars", "fabric_metadata_t.next_id"],
3179 "mask" : null
3180 }
3181 ],
3182 "match_type" : "exact",
3183 "type" : "indirect_ws",
3184 "action_profile" : "next.ecmp_selector",
3185 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003186 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003187 "support_timeout" : false,
3188 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003189 "action_ids" : [23, 26, 27, 7],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003190 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08003191 "base_default_next" : "next.broadcast",
Yi Tsengbe342052017-11-03 10:21:23 -07003192 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08003193 "next.l3_routing" : "next.broadcast",
3194 "next.mpls_routing_v4" : "next.broadcast",
3195 "next.mpls_routing_v6" : "next.broadcast",
3196 "NoAction" : "next.broadcast"
Yi Tsengbe342052017-11-03 10:21:23 -07003197 }
3198 },
3199 {
3200 "name" : "next.broadcast",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003201 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07003202 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003203 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003204 "line" : 126,
Yi Tsengbe342052017-11-03 10:21:23 -07003205 "column" : 10,
3206 "source_fragment" : "broadcast"
3207 },
3208 "key" : [
3209 {
3210 "match_type" : "exact",
3211 "target" : ["scalars", "fabric_metadata_t.next_id"],
3212 "mask" : null
3213 }
3214 ],
3215 "match_type" : "exact",
3216 "type" : "simple",
3217 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003218 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003219 "support_timeout" : false,
3220 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003221 "action_ids" : [24, 8],
Yi Tsengbe342052017-11-03 10:21:23 -07003222 "actions" : ["next.set_mcast_group", "NoAction"],
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003223 "base_default_next" : "node_25",
Yi Tsengbe342052017-11-03 10:21:23 -07003224 "next_tables" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003225 "next.set_mcast_group" : "node_25",
3226 "NoAction" : "node_25"
Yi Tsengbe342052017-11-03 10:21:23 -07003227 },
3228 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003229 "action_id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003230 "action_const" : false,
3231 "action_data" : [],
3232 "action_entry_const" : false
3233 }
3234 },
3235 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003236 "name" : "tbl_act_4",
3237 "id" : 15,
Yi Tsengbd46d052018-01-22 17:18:16 -08003238 "key" : [],
3239 "match_type" : "exact",
3240 "type" : "simple",
3241 "max_size" : 1024,
3242 "with_counters" : false,
3243 "support_timeout" : false,
3244 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003245 "action_ids" : [33],
3246 "actions" : ["act_4"],
3247 "base_default_next" : "node_27",
Yi Tsengbd46d052018-01-22 17:18:16 -08003248 "next_tables" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003249 "act_4" : "node_27"
Yi Tsengbd46d052018-01-22 17:18:16 -08003250 },
3251 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003252 "action_id" : 33,
3253 "action_const" : true,
3254 "action_data" : [],
3255 "action_entry_const" : true
3256 }
3257 },
3258 {
3259 "name" : "tbl_act_5",
3260 "id" : 16,
3261 "key" : [],
3262 "match_type" : "exact",
3263 "type" : "simple",
3264 "max_size" : 1024,
3265 "with_counters" : false,
3266 "support_timeout" : false,
3267 "direct_meters" : null,
3268 "action_ids" : [34],
3269 "actions" : ["act_5"],
3270 "base_default_next" : "node_29",
3271 "next_tables" : {
3272 "act_5" : "node_29"
3273 },
3274 "default_entry" : {
3275 "action_id" : 34,
Yi Tsengbd46d052018-01-22 17:18:16 -08003276 "action_const" : true,
3277 "action_data" : [],
3278 "action_entry_const" : true
3279 }
3280 },
3281 {
Yi Tseng1d842672017-11-28 16:06:52 -08003282 "name" : "tbl_act_6",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003283 "id" : 17,
Yi Tsengf55eaa82017-11-29 15:51:28 -08003284 "key" : [],
3285 "match_type" : "exact",
3286 "type" : "simple",
3287 "max_size" : 1024,
3288 "with_counters" : false,
3289 "support_timeout" : false,
3290 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003291 "action_ids" : [35],
Yi Tseng1d842672017-11-28 16:06:52 -08003292 "actions" : ["act_6"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003293 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003294 "next_tables" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003295 "act_6" : null
Yi Tsengbe342052017-11-03 10:21:23 -07003296 },
3297 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003298 "action_id" : 35,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003299 "action_const" : true,
3300 "action_data" : [],
3301 "action_entry_const" : true
3302 }
Yi Tsengbe342052017-11-03 10:21:23 -07003303 }
3304 ],
3305 "action_profiles" : [
3306 {
3307 "name" : "next.ecmp_selector",
3308 "id" : 0,
3309 "max_size" : 64,
3310 "selector" : {
3311 "algo" : "crc16",
3312 "input" : [
3313 {
3314 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003315 "value" : ["ethernet", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003316 },
3317 {
3318 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003319 "value" : ["ethernet", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003320 },
3321 {
3322 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003323 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003324 },
3325 {
3326 "type" : "field",
3327 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3328 },
3329 {
3330 "type" : "field",
3331 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3332 }
3333 ]
3334 }
3335 }
3336 ],
3337 "conditionals" : [
3338 {
3339 "name" : "node_2",
3340 "id" : 0,
3341 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003342 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003343 "line" : 25,
3344 "column" : 12,
3345 "source_fragment" : "hdr.packet_out.isValid()"
3346 },
3347 "expression" : {
3348 "type" : "expression",
3349 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003350 "op" : "d2b",
3351 "left" : null,
3352 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003353 "type" : "field",
3354 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003355 }
3356 }
3357 },
3358 "true_next" : "tbl_act",
3359 "false_next" : "filtering.ingress_port_vlan"
3360 },
3361 {
3362 "name" : "node_6",
3363 "id" : 1,
3364 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003365 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003366 "line" : 157,
Yi Tsengbe342052017-11-03 10:21:23 -07003367 "column" : 11,
3368 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3369 },
3370 "expression" : {
3371 "type" : "expression",
3372 "value" : {
3373 "op" : "==",
3374 "left" : {
3375 "type" : "field",
3376 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3377 },
3378 "right" : {
3379 "type" : "hexstr",
3380 "value" : "0x00"
3381 }
3382 }
3383 },
3384 "true_next" : "forwarding.bridging",
3385 "false_next" : "node_8"
3386 },
3387 {
3388 "name" : "node_8",
3389 "id" : 2,
3390 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003391 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003392 "line" : 158,
Yi Tsengbe342052017-11-03 10:21:23 -07003393 "column" : 17,
3394 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3395 },
3396 "expression" : {
3397 "type" : "expression",
3398 "value" : {
3399 "op" : "==",
3400 "left" : {
3401 "type" : "field",
3402 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3403 },
3404 "right" : {
3405 "type" : "hexstr",
3406 "value" : "0x01"
3407 }
3408 }
3409 },
3410 "true_next" : "forwarding.mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -08003411 "false_next" : "node_11"
Yi Tsengbe342052017-11-03 10:21:23 -07003412 },
3413 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003414 "name" : "node_11",
Yi Tsengbe342052017-11-03 10:21:23 -07003415 "id" : 3,
3416 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003417 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003418 "line" : 165,
Yi Tsengbe342052017-11-03 10:21:23 -07003419 "column" : 17,
3420 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3421 },
3422 "expression" : {
3423 "type" : "expression",
3424 "value" : {
3425 "op" : "==",
3426 "left" : {
3427 "type" : "field",
3428 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3429 },
3430 "right" : {
3431 "type" : "hexstr",
3432 "value" : "0x02"
3433 }
3434 }
3435 },
3436 "true_next" : "forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003437 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003438 },
3439 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003440 "name" : "node_13",
3441 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07003442 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003443 "filename" : "include/control/forwarding.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003444 "line" : 166,
Yi Tsengbe342052017-11-03 10:21:23 -07003445 "column" : 17,
3446 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
3447 },
3448 "expression" : {
3449 "type" : "expression",
3450 "value" : {
3451 "op" : "==",
3452 "left" : {
3453 "type" : "field",
3454 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3455 },
3456 "right" : {
3457 "type" : "hexstr",
3458 "value" : "0x03"
3459 }
3460 }
3461 },
3462 "true_next" : "forwarding.multicast_v4",
Yi Tsengbe342052017-11-03 10:21:23 -07003463 "false_next" : "forwarding.acl"
3464 },
3465 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003466 "name" : "node_19",
3467 "id" : 5,
Yi Tseng1d842672017-11-28 16:06:52 -08003468 "expression" : {
3469 "type" : "expression",
3470 "value" : {
3471 "op" : "d2b",
3472 "left" : null,
3473 "right" : {
3474 "type" : "field",
3475 "value" : ["scalars", "next_tmp_0"]
3476 }
3477 }
3478 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003479 "true_next" : "node_20",
Yi Tseng1d842672017-11-28 16:06:52 -08003480 "false_next" : "next.hashed"
3481 },
3482 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003483 "name" : "node_20",
3484 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003485 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003486 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003487 "line" : 138,
Yi Tsengbd46d052018-01-22 17:18:16 -08003488 "column" : 16,
3489 "source_fragment" : "!hdr.mpls.isValid()"
Yi Tseng1d842672017-11-28 16:06:52 -08003490 },
3491 "expression" : {
3492 "type" : "expression",
3493 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003494 "op" : "not",
3495 "left" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003496 "right" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003497 "type" : "expression",
3498 "value" : {
3499 "op" : "d2b",
3500 "left" : null,
3501 "right" : {
3502 "type" : "field",
3503 "value" : ["mpls", "$valid$"]
3504 }
3505 }
Yi Tseng1d842672017-11-28 16:06:52 -08003506 }
3507 }
3508 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003509 "true_next" : "node_21",
Yi Tseng1d842672017-11-28 16:06:52 -08003510 "false_next" : "next.hashed"
3511 },
3512 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003513 "name" : "node_21",
3514 "id" : 7,
Yi Tseng1d842672017-11-28 16:06:52 -08003515 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003516 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003517 "line" : 139,
Yi Tseng1d842672017-11-28 16:06:52 -08003518 "column" : 19,
3519 "source_fragment" : "hdr.ipv4.isValid()"
3520 },
3521 "expression" : {
3522 "type" : "expression",
3523 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003524 "op" : "d2b",
3525 "left" : null,
3526 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003527 "type" : "field",
3528 "value" : ["ipv4", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08003529 }
3530 }
3531 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003532 "true_next" : "tbl_act_3",
Yi Tseng1d842672017-11-28 16:06:52 -08003533 "false_next" : "next.hashed"
3534 },
3535 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003536 "name" : "node_25",
3537 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003538 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003539 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003540 "line" : 27,
3541 "column" : 12,
3542 "source_fragment" : "standard_metadata.egress_spec < 511"
3543 },
3544 "expression" : {
3545 "type" : "expression",
3546 "value" : {
3547 "op" : "<",
3548 "left" : {
3549 "type" : "field",
3550 "value" : ["standard_metadata", "egress_spec"]
3551 },
3552 "right" : {
3553 "type" : "hexstr",
3554 "value" : "0x01ff"
3555 }
3556 }
3557 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003558 "true_next" : "tbl_act_4",
3559 "false_next" : "node_27"
Yi Tsengbe342052017-11-03 10:21:23 -07003560 },
3561 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003562 "name" : "node_27",
3563 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003564 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003565 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003566 "line" : 30,
3567 "column" : 12,
3568 "source_fragment" : "standard_metadata.ingress_port < 511"
3569 },
3570 "expression" : {
3571 "type" : "expression",
3572 "value" : {
3573 "op" : "<",
3574 "left" : {
3575 "type" : "field",
3576 "value" : ["standard_metadata", "ingress_port"]
3577 },
3578 "right" : {
3579 "type" : "hexstr",
3580 "value" : "0x01ff"
3581 }
3582 }
3583 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003584 "true_next" : "tbl_act_5",
3585 "false_next" : "node_29"
Yi Tsengf55eaa82017-11-29 15:51:28 -08003586 },
3587 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003588 "name" : "node_29",
3589 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003590 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003591 "filename" : "include/control/next.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003592 "line" : 161,
Yi Tsengbe342052017-11-03 10:21:23 -07003593 "column" : 12,
3594 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
3595 },
3596 "expression" : {
3597 "type" : "expression",
3598 "value" : {
3599 "op" : "d2b",
3600 "left" : null,
3601 "right" : {
3602 "type" : "field",
3603 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
3604 }
3605 }
3606 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003607 "false_next" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003608 "true_next" : "tbl_act_6"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003609 }
3610 ]
3611 },
3612 {
3613 "name" : "egress",
3614 "id" : 1,
3615 "source_info" : {
3616 "filename" : "fabric.p4",
Carmelo Casconeb531b682018-01-30 17:55:56 -08003617 "line" : 62,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003618 "column" : 8,
3619 "source_fragment" : "FabricEgress"
3620 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003621 "init_table" : "node_33",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003622 "tables" : [
3623 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003624 "name" : "tbl_act_7",
3625 "id" : 18,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003626 "key" : [],
3627 "match_type" : "exact",
3628 "type" : "simple",
3629 "max_size" : 1024,
3630 "with_counters" : false,
3631 "support_timeout" : false,
3632 "direct_meters" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003633 "action_ids" : [36],
3634 "actions" : ["act_7"],
Yi Tseng3a5731e2018-01-22 11:38:58 -08003635 "base_default_next" : null,
3636 "next_tables" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003637 "act_7" : null
Yi Tseng3a5731e2018-01-22 11:38:58 -08003638 },
3639 "default_entry" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003640 "action_id" : 36,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003641 "action_const" : true,
3642 "action_data" : [],
3643 "action_entry_const" : true
3644 }
3645 }
3646 ],
3647 "action_profiles" : [],
3648 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08003649 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003650 "name" : "node_33",
3651 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003652 "source_info" : {
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003653 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003654 "line" : 38,
3655 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08003656 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07003657 },
3658 "expression" : {
3659 "type" : "expression",
3660 "value" : {
3661 "op" : "==",
3662 "left" : {
3663 "type" : "field",
3664 "value" : ["standard_metadata", "egress_port"]
3665 },
3666 "right" : {
3667 "type" : "hexstr",
3668 "value" : "0x00ff"
3669 }
3670 }
3671 },
3672 "false_next" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003673 "true_next" : "tbl_act_7"
Yi Tsengbe342052017-11-03 10:21:23 -07003674 }
3675 ]
3676 }
3677 ],
3678 "checksums" : [
3679 {
3680 "name" : "cksum",
3681 "id" : 0,
3682 "target" : ["ipv4", "hdr_checksum"],
3683 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003684 "calculation" : "calc",
3685 "if_cond" : {
3686 "type" : "expression",
3687 "value" : {
3688 "op" : "d2b",
3689 "left" : null,
3690 "right" : {
3691 "type" : "field",
3692 "value" : ["ipv4", "$valid$"]
3693 }
3694 }
3695 }
Yi Tsengbe342052017-11-03 10:21:23 -07003696 },
3697 {
3698 "name" : "cksum_0",
3699 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07003700 "target" : ["ipv4", "hdr_checksum"],
3701 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003702 "calculation" : "calc_0",
3703 "if_cond" : {
3704 "type" : "expression",
3705 "value" : {
3706 "op" : "d2b",
3707 "left" : null,
3708 "right" : {
3709 "type" : "field",
3710 "value" : ["ipv4", "$valid$"]
3711 }
3712 }
3713 }
Yi Tsengbe342052017-11-03 10:21:23 -07003714 }
3715 ],
3716 "force_arith" : [],
3717 "extern_instances" : [],
3718 "field_aliases" : [
3719 [
3720 "queueing_metadata.enq_timestamp",
3721 ["standard_metadata", "enq_timestamp"]
3722 ],
3723 [
3724 "queueing_metadata.enq_qdepth",
3725 ["standard_metadata", "enq_qdepth"]
3726 ],
3727 [
3728 "queueing_metadata.deq_timedelta",
3729 ["standard_metadata", "deq_timedelta"]
3730 ],
3731 [
3732 "queueing_metadata.deq_qdepth",
3733 ["standard_metadata", "deq_qdepth"]
3734 ],
3735 [
3736 "intrinsic_metadata.ingress_global_timestamp",
3737 ["standard_metadata", "ingress_global_timestamp"]
3738 ],
3739 [
3740 "intrinsic_metadata.lf_field_list",
3741 ["standard_metadata", "lf_field_list"]
3742 ],
3743 [
3744 "intrinsic_metadata.mcast_grp",
3745 ["standard_metadata", "mcast_grp"]
3746 ],
3747 [
3748 "intrinsic_metadata.resubmit_flag",
3749 ["standard_metadata", "resubmit_flag"]
3750 ],
3751 [
3752 "intrinsic_metadata.egress_rid",
3753 ["standard_metadata", "egress_rid"]
3754 ]
3755 ]
3756}