blob: 0462d6a87bdd906d9cce1bb3b9e5ff088e07b245 [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 Cascone5bdffe72018-02-04 14:53:54 -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 Cascone5bdffe72018-02-04 14:53:54 -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 {
Yi Tseng3a5731e2018-01-22 11:38:58 -0800716 "name" : "forwarding.acl_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800717 "id" : 5,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800718 "is_direct" : true,
719 "binding" : "forwarding.acl"
720 },
721 {
722 "name" : "next.simple_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800723 "id" : 6,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800724 "is_direct" : true,
725 "binding" : "next.simple"
726 },
727 {
728 "name" : "next.hashed_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800729 "id" : 7,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800730 "is_direct" : true,
731 "binding" : "next.hashed"
732 },
733 {
Yi Tseng3a5731e2018-01-22 11:38:58 -0800734 "name" : "port_counters_control.egress_port_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800735 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700736 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800737 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700738 "line" : 23,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800739 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700740 "source_fragment" : "egress_port_counter"
741 },
742 "size" : 511,
743 "is_direct" : false
744 },
745 {
746 "name" : "port_counters_control.ingress_port_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800747 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700748 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800749 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700750 "line" : 24,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800751 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700752 "source_fragment" : "ingress_port_counter"
753 },
754 "size" : 511,
755 "is_direct" : false
756 }
757 ],
758 "register_arrays" : [],
759 "calculations" : [
760 {
761 "name" : "calc",
762 "id" : 0,
763 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800764 "filename" : "include/checksum.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800765 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -0700766 "column" : 8,
767 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
768 },
769 "algo" : "csum16",
770 "input" : [
771 {
772 "type" : "field",
773 "value" : ["ipv4", "version"]
774 },
775 {
776 "type" : "field",
777 "value" : ["ipv4", "ihl"]
778 },
779 {
780 "type" : "field",
781 "value" : ["ipv4", "diffserv"]
782 },
783 {
784 "type" : "field",
785 "value" : ["ipv4", "total_len"]
786 },
787 {
788 "type" : "field",
789 "value" : ["ipv4", "identification"]
790 },
791 {
792 "type" : "field",
793 "value" : ["ipv4", "flags"]
794 },
795 {
796 "type" : "field",
797 "value" : ["ipv4", "frag_offset"]
798 },
799 {
800 "type" : "field",
801 "value" : ["ipv4", "ttl"]
802 },
803 {
804 "type" : "field",
805 "value" : ["ipv4", "protocol"]
806 },
807 {
808 "type" : "field",
809 "value" : ["ipv4", "src_addr"]
810 },
811 {
812 "type" : "field",
813 "value" : ["ipv4", "dst_addr"]
814 }
815 ]
816 },
817 {
818 "name" : "calc_0",
819 "id" : 1,
820 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800821 "filename" : "include/checksum.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800822 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700823 "column" : 8,
824 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
825 },
826 "algo" : "csum16",
827 "input" : [
828 {
829 "type" : "field",
830 "value" : ["ipv4", "version"]
831 },
832 {
833 "type" : "field",
834 "value" : ["ipv4", "ihl"]
835 },
836 {
837 "type" : "field",
838 "value" : ["ipv4", "diffserv"]
839 },
840 {
841 "type" : "field",
842 "value" : ["ipv4", "total_len"]
843 },
844 {
845 "type" : "field",
846 "value" : ["ipv4", "identification"]
847 },
848 {
849 "type" : "field",
850 "value" : ["ipv4", "flags"]
851 },
852 {
853 "type" : "field",
854 "value" : ["ipv4", "frag_offset"]
855 },
856 {
857 "type" : "field",
858 "value" : ["ipv4", "ttl"]
859 },
860 {
861 "type" : "field",
862 "value" : ["ipv4", "protocol"]
863 },
864 {
865 "type" : "field",
866 "value" : ["ipv4", "src_addr"]
867 },
868 {
869 "type" : "field",
870 "value" : ["ipv4", "dst_addr"]
871 }
872 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700873 }
874 ],
875 "learn_lists" : [],
876 "actions" : [
877 {
878 "name" : "nop",
879 "id" : 0,
880 "runtime_data" : [],
881 "primitives" : []
882 },
883 {
884 "name" : "nop",
885 "id" : 1,
886 "runtime_data" : [],
887 "primitives" : []
888 },
889 {
Yi Tseng1d842672017-11-28 16:06:52 -0800890 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700891 "id" : 2,
892 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800893 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700894 },
895 {
Yi Tseng1d842672017-11-28 16:06:52 -0800896 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700897 "id" : 3,
898 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800899 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700900 },
901 {
902 "name" : "NoAction",
903 "id" : 4,
904 "runtime_data" : [],
905 "primitives" : []
906 },
907 {
908 "name" : "NoAction",
909 "id" : 5,
910 "runtime_data" : [],
911 "primitives" : []
912 },
913 {
914 "name" : "NoAction",
915 "id" : 6,
916 "runtime_data" : [],
917 "primitives" : []
918 },
919 {
Yi Tseng1d842672017-11-28 16:06:52 -0800920 "name" : "filtering.drop",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800921 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700922 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800923 "primitives" : [
924 {
925 "op" : "drop",
926 "parameters" : [],
927 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800928 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800929 "line" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -0800930 "column" : 8,
931 "source_fragment" : "mark_to_drop()"
932 }
933 }
934 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700935 },
936 {
Yi Tsengbe342052017-11-03 10:21:23 -0700937 "name" : "filtering.set_vlan",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800938 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700939 "runtime_data" : [
940 {
941 "name" : "new_vlan_id",
942 "bitwidth" : 12
943 }
944 ],
945 "primitives" : [
946 {
947 "op" : "assign",
948 "parameters" : [
949 {
950 "type" : "field",
951 "value" : ["vlan_tag", "vlan_id"]
952 },
953 {
954 "type" : "runtime_data",
955 "value" : 0
956 }
957 ],
958 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800959 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800960 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -0700961 "column" : 8,
962 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
963 }
964 }
965 ]
966 },
967 {
968 "name" : "filtering.push_internal_vlan",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800969 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700970 "runtime_data" : [
971 {
972 "name" : "new_vlan_id",
973 "bitwidth" : 12
974 }
975 ],
976 "primitives" : [
977 {
978 "op" : "add_header",
979 "parameters" : [
980 {
981 "type" : "header",
982 "value" : "vlan_tag"
983 }
984 ],
985 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800986 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800987 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -0700988 "column" : 8,
989 "source_fragment" : "hdr.vlan_tag.setValid()"
990 }
991 },
992 {
993 "op" : "assign",
994 "parameters" : [
995 {
996 "type" : "field",
997 "value" : ["vlan_tag", "cfi"]
998 },
999 {
1000 "type" : "hexstr",
1001 "value" : "0x00"
1002 }
1003 ],
1004 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001005 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001006 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001007 "column" : 8,
1008 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1009 }
1010 },
1011 {
1012 "op" : "assign",
1013 "parameters" : [
1014 {
1015 "type" : "field",
1016 "value" : ["vlan_tag", "pri"]
1017 },
1018 {
1019 "type" : "hexstr",
1020 "value" : "0x00"
1021 }
1022 ],
1023 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001024 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001025 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001026 "column" : 8,
1027 "source_fragment" : "hdr.vlan_tag.pri = 0"
1028 }
1029 },
1030 {
1031 "op" : "assign",
1032 "parameters" : [
1033 {
1034 "type" : "field",
1035 "value" : ["vlan_tag", "ether_type"]
1036 },
1037 {
Yi Tseng1d842672017-11-28 16:06:52 -08001038 "type" : "field",
1039 "value" : ["ethernet", "ether_type"]
1040 }
1041 ],
1042 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001043 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001044 "line" : 44,
Yi Tseng1d842672017-11-28 16:06:52 -08001045 "column" : 8,
1046 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1047 }
1048 },
1049 {
1050 "op" : "assign",
1051 "parameters" : [
1052 {
1053 "type" : "field",
1054 "value" : ["ethernet", "ether_type"]
1055 },
1056 {
Yi Tsengbe342052017-11-03 10:21:23 -07001057 "type" : "hexstr",
1058 "value" : "0x8100"
1059 }
1060 ],
1061 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001062 "filename" : "include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001063 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001064 "column" : 31,
1065 "source_fragment" : "0x8100; ..."
1066 }
1067 },
1068 {
1069 "op" : "assign",
1070 "parameters" : [
1071 {
1072 "type" : "field",
1073 "value" : ["vlan_tag", "vlan_id"]
1074 },
1075 {
1076 "type" : "runtime_data",
1077 "value" : 0
1078 }
1079 ],
1080 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001081 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001082 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001083 "column" : 8,
1084 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1085 }
1086 },
1087 {
1088 "op" : "assign",
1089 "parameters" : [
1090 {
1091 "type" : "field",
1092 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1093 },
1094 {
1095 "type" : "expression",
1096 "value" : {
1097 "type" : "expression",
1098 "value" : {
1099 "op" : "b2d",
1100 "left" : null,
1101 "right" : {
1102 "type" : "bool",
1103 "value" : true
1104 }
1105 }
1106 }
1107 }
1108 ],
1109 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001110 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001111 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001112 "column" : 8,
1113 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1114 }
1115 }
1116 ]
1117 },
1118 {
1119 "name" : "filtering.set_forwarding_type",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001120 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07001121 "runtime_data" : [
1122 {
1123 "name" : "fwd_type",
1124 "bitwidth" : 3
1125 }
1126 ],
1127 "primitives" : [
1128 {
1129 "op" : "assign",
1130 "parameters" : [
1131 {
1132 "type" : "field",
1133 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1134 },
1135 {
1136 "type" : "runtime_data",
1137 "value" : 0
1138 }
1139 ],
1140 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001141 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001142 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07001143 "column" : 8,
1144 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1145 }
1146 }
1147 ]
1148 },
1149 {
Yi Tseng1d842672017-11-28 16:06:52 -08001150 "name" : "forwarding.drop",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001151 "id" : 11,
Yi Tseng1d842672017-11-28 16:06:52 -08001152 "runtime_data" : [],
1153 "primitives" : [
1154 {
1155 "op" : "drop",
1156 "parameters" : [],
1157 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001158 "filename" : "include/control/forwarding.p4",
1159 "line" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08001160 "column" : 8,
1161 "source_fragment" : "mark_to_drop()"
1162 }
1163 }
1164 ]
1165 },
1166 {
Yi Tsengbe342052017-11-03 10:21:23 -07001167 "name" : "forwarding.set_next_id",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001168 "id" : 12,
1169 "runtime_data" : [
1170 {
1171 "name" : "next_id",
1172 "bitwidth" : 32
1173 }
1174 ],
1175 "primitives" : [
1176 {
1177 "op" : "assign",
1178 "parameters" : [
1179 {
1180 "type" : "field",
1181 "value" : ["scalars", "fabric_metadata_t.next_id"]
1182 },
1183 {
1184 "type" : "runtime_data",
1185 "value" : 0
1186 }
1187 ],
1188 "source_info" : {
1189 "filename" : "include/control/forwarding.p4",
1190 "line" : 40,
1191 "column" : 8,
1192 "source_fragment" : "fabric_metadata.next_id = next_id"
1193 }
1194 }
1195 ]
1196 },
1197 {
1198 "name" : "forwarding.set_next_id",
1199 "id" : 13,
1200 "runtime_data" : [
1201 {
1202 "name" : "next_id",
1203 "bitwidth" : 32
1204 }
1205 ],
1206 "primitives" : [
1207 {
1208 "op" : "assign",
1209 "parameters" : [
1210 {
1211 "type" : "field",
1212 "value" : ["scalars", "fabric_metadata_t.next_id"]
1213 },
1214 {
1215 "type" : "runtime_data",
1216 "value" : 0
1217 }
1218 ],
1219 "source_info" : {
1220 "filename" : "include/control/forwarding.p4",
1221 "line" : 40,
1222 "column" : 8,
1223 "source_fragment" : "fabric_metadata.next_id = next_id"
1224 }
1225 }
1226 ]
1227 },
1228 {
1229 "name" : "forwarding.set_next_id",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001230 "id" : 14,
1231 "runtime_data" : [
1232 {
1233 "name" : "next_id",
1234 "bitwidth" : 32
1235 }
1236 ],
1237 "primitives" : [
1238 {
1239 "op" : "assign",
1240 "parameters" : [
1241 {
1242 "type" : "field",
1243 "value" : ["scalars", "fabric_metadata_t.next_id"]
1244 },
1245 {
1246 "type" : "runtime_data",
1247 "value" : 0
1248 }
1249 ],
1250 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001251 "filename" : "include/control/forwarding.p4",
1252 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001253 "column" : 8,
1254 "source_fragment" : "fabric_metadata.next_id = next_id"
1255 }
1256 }
1257 ]
1258 },
1259 {
Yi Tsengbe342052017-11-03 10:21:23 -07001260 "name" : "forwarding.pop_mpls_and_next",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001261 "id" : 15,
Yi Tsengbe342052017-11-03 10:21:23 -07001262 "runtime_data" : [
1263 {
1264 "name" : "next_id",
1265 "bitwidth" : 32
1266 }
1267 ],
1268 "primitives" : [
1269 {
1270 "op" : "remove_header",
1271 "parameters" : [
1272 {
1273 "type" : "header",
1274 "value" : "mpls"
1275 }
1276 ],
1277 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001278 "filename" : "include/control/forwarding.p4",
1279 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07001280 "column" : 8,
1281 "source_fragment" : "hdr.mpls.setInvalid()"
1282 }
1283 },
1284 {
1285 "op" : "assign",
1286 "parameters" : [
1287 {
1288 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001289 "value" : ["scalars", "fabric_metadata_t.next_id"]
1290 },
1291 {
1292 "type" : "runtime_data",
1293 "value" : 0
1294 }
1295 ],
1296 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001297 "filename" : "include/control/forwarding.p4",
1298 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001299 "column" : 8,
1300 "source_fragment" : "fabric_metadata.next_id = next_id"
1301 }
1302 }
1303 ]
1304 },
1305 {
Yi Tsengbe342052017-11-03 10:21:23 -07001306 "name" : "forwarding.duplicate_to_controller",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001307 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07001308 "runtime_data" : [],
1309 "primitives" : [
1310 {
1311 "op" : "assign",
1312 "parameters" : [
1313 {
1314 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001315 "value" : ["standard_metadata", "egress_spec"]
1316 },
1317 {
1318 "type" : "hexstr",
1319 "value" : "0x00ff"
1320 }
1321 ],
1322 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001323 "filename" : "include/control/forwarding.p4",
1324 "line" : 49,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001325 "column" : 8,
1326 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001327 }
1328 }
1329 ]
1330 },
1331 {
Yi Tsengbe342052017-11-03 10:21:23 -07001332 "name" : "next.output",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001333 "id" : 17,
Yi Tsengbe342052017-11-03 10:21:23 -07001334 "runtime_data" : [
1335 {
1336 "name" : "port_num",
1337 "bitwidth" : 9
1338 }
1339 ],
1340 "primitives" : [
1341 {
1342 "op" : "assign",
1343 "parameters" : [
1344 {
1345 "type" : "field",
1346 "value" : ["standard_metadata", "egress_spec"]
1347 },
1348 {
1349 "type" : "runtime_data",
1350 "value" : 0
1351 }
1352 ],
1353 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001354 "filename" : "include/control/next.p4",
1355 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001356 "column" : 8,
1357 "source_fragment" : "standard_metadata.egress_spec = port_num"
1358 }
Yi Tsengbe342052017-11-03 10:21:23 -07001359 }
1360 ]
1361 },
1362 {
1363 "name" : "next.set_vlan_output",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001364 "id" : 18,
Yi Tsengbe342052017-11-03 10:21:23 -07001365 "runtime_data" : [
1366 {
1367 "name" : "new_vlan_id",
1368 "bitwidth" : 12
1369 },
1370 {
1371 "name" : "port_num",
1372 "bitwidth" : 9
1373 }
1374 ],
1375 "primitives" : [
1376 {
1377 "op" : "assign",
1378 "parameters" : [
1379 {
1380 "type" : "field",
1381 "value" : ["vlan_tag", "vlan_id"]
1382 },
1383 {
1384 "type" : "runtime_data",
1385 "value" : 0
1386 }
1387 ],
1388 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001389 "filename" : "include/control/next.p4",
1390 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001391 "column" : 8,
1392 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1393 }
1394 },
1395 {
1396 "op" : "assign",
1397 "parameters" : [
1398 {
1399 "type" : "field",
1400 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1401 },
1402 {
1403 "type" : "expression",
1404 "value" : {
1405 "type" : "expression",
1406 "value" : {
1407 "op" : "b2d",
1408 "left" : null,
1409 "right" : {
1410 "type" : "bool",
1411 "value" : false
1412 }
1413 }
1414 }
1415 }
1416 ],
1417 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001418 "filename" : "include/control/next.p4",
1419 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07001420 "column" : 8,
1421 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
1422 }
1423 },
1424 {
1425 "op" : "assign",
1426 "parameters" : [
1427 {
1428 "type" : "field",
1429 "value" : ["standard_metadata", "egress_spec"]
1430 },
1431 {
1432 "type" : "runtime_data",
1433 "value" : 1
1434 }
1435 ],
1436 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001437 "filename" : "include/control/next.p4",
1438 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001439 "column" : 8,
1440 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1441 }
Yi Tsengbe342052017-11-03 10:21:23 -07001442 }
1443 ]
1444 },
1445 {
1446 "name" : "next.l3_routing",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001447 "id" : 19,
1448 "runtime_data" : [
1449 {
1450 "name" : "port_num",
1451 "bitwidth" : 9
1452 },
1453 {
1454 "name" : "smac",
1455 "bitwidth" : 48
1456 },
1457 {
1458 "name" : "dmac",
1459 "bitwidth" : 48
1460 }
1461 ],
1462 "primitives" : [
1463 {
1464 "op" : "assign",
1465 "parameters" : [
1466 {
1467 "type" : "field",
1468 "value" : ["ethernet", "src_addr"]
1469 },
1470 {
1471 "type" : "runtime_data",
1472 "value" : 1
1473 }
1474 ],
1475 "source_info" : {
1476 "filename" : "include/control/next.p4",
1477 "line" : 44,
1478 "column" : 8,
1479 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1480 }
1481 },
1482 {
1483 "op" : "assign",
1484 "parameters" : [
1485 {
1486 "type" : "field",
1487 "value" : ["ethernet", "dst_addr"]
1488 },
1489 {
1490 "type" : "runtime_data",
1491 "value" : 2
1492 }
1493 ],
1494 "source_info" : {
1495 "filename" : "include/control/next.p4",
1496 "line" : 48,
1497 "column" : 8,
1498 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1499 }
1500 },
1501 {
1502 "op" : "assign",
1503 "parameters" : [
1504 {
1505 "type" : "field",
1506 "value" : ["standard_metadata", "egress_spec"]
1507 },
1508 {
1509 "type" : "runtime_data",
1510 "value" : 0
1511 }
1512 ],
1513 "source_info" : {
1514 "filename" : "include/control/next.p4",
1515 "line" : 32,
1516 "column" : 8,
1517 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1518 }
1519 }
1520 ]
1521 },
1522 {
1523 "name" : "next.l3_routing",
1524 "id" : 20,
1525 "runtime_data" : [
1526 {
1527 "name" : "port_num",
1528 "bitwidth" : 9
1529 },
1530 {
1531 "name" : "smac",
1532 "bitwidth" : 48
1533 },
1534 {
1535 "name" : "dmac",
1536 "bitwidth" : 48
1537 }
1538 ],
1539 "primitives" : [
1540 {
1541 "op" : "assign",
1542 "parameters" : [
1543 {
1544 "type" : "field",
1545 "value" : ["ethernet", "src_addr"]
1546 },
1547 {
1548 "type" : "runtime_data",
1549 "value" : 1
1550 }
1551 ],
1552 "source_info" : {
1553 "filename" : "include/control/next.p4",
1554 "line" : 44,
1555 "column" : 8,
1556 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1557 }
1558 },
1559 {
1560 "op" : "assign",
1561 "parameters" : [
1562 {
1563 "type" : "field",
1564 "value" : ["ethernet", "dst_addr"]
1565 },
1566 {
1567 "type" : "runtime_data",
1568 "value" : 2
1569 }
1570 ],
1571 "source_info" : {
1572 "filename" : "include/control/next.p4",
1573 "line" : 48,
1574 "column" : 8,
1575 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1576 }
1577 },
1578 {
1579 "op" : "assign",
1580 "parameters" : [
1581 {
1582 "type" : "field",
1583 "value" : ["standard_metadata", "egress_spec"]
1584 },
1585 {
1586 "type" : "runtime_data",
1587 "value" : 0
1588 }
1589 ],
1590 "source_info" : {
1591 "filename" : "include/control/next.p4",
1592 "line" : 32,
1593 "column" : 8,
1594 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1595 }
1596 }
1597 ]
1598 },
1599 {
1600 "name" : "next.mpls_routing_v4",
1601 "id" : 21,
1602 "runtime_data" : [
1603 {
1604 "name" : "port_num",
1605 "bitwidth" : 9
1606 },
1607 {
1608 "name" : "smac",
1609 "bitwidth" : 48
1610 },
1611 {
1612 "name" : "dmac",
1613 "bitwidth" : 48
1614 },
1615 {
1616 "name" : "label",
1617 "bitwidth" : 20
1618 }
1619 ],
1620 "primitives" : [
1621 {
1622 "op" : "assign",
1623 "parameters" : [
1624 {
1625 "type" : "field",
1626 "value" : ["ethernet", "src_addr"]
1627 },
1628 {
1629 "type" : "runtime_data",
1630 "value" : 1
1631 }
1632 ],
1633 "source_info" : {
1634 "filename" : "include/control/next.p4",
1635 "line" : 44,
1636 "column" : 8,
1637 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1638 }
1639 },
1640 {
1641 "op" : "assign",
1642 "parameters" : [
1643 {
1644 "type" : "field",
1645 "value" : ["ethernet", "dst_addr"]
1646 },
1647 {
1648 "type" : "runtime_data",
1649 "value" : 2
1650 }
1651 ],
1652 "source_info" : {
1653 "filename" : "include/control/next.p4",
1654 "line" : 48,
1655 "column" : 8,
1656 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1657 }
1658 },
1659 {
1660 "op" : "assign",
1661 "parameters" : [
1662 {
1663 "type" : "field",
1664 "value" : ["standard_metadata", "egress_spec"]
1665 },
1666 {
1667 "type" : "runtime_data",
1668 "value" : 0
1669 }
1670 ],
1671 "source_info" : {
1672 "filename" : "include/control/next.p4",
1673 "line" : 32,
1674 "column" : 8,
1675 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1676 }
1677 },
1678 {
1679 "op" : "add_header",
1680 "parameters" : [
1681 {
1682 "type" : "header",
1683 "value" : "mpls"
1684 }
1685 ],
1686 "source_info" : {
1687 "filename" : "include/control/next.p4",
1688 "line" : 59,
1689 "column" : 8,
1690 "source_fragment" : "hdr.mpls.setValid()"
1691 }
1692 },
1693 {
1694 "op" : "assign",
1695 "parameters" : [
1696 {
1697 "type" : "field",
1698 "value" : ["vlan_tag", "ether_type"]
1699 },
1700 {
1701 "type" : "hexstr",
1702 "value" : "0x8847"
1703 }
1704 ],
1705 "source_info" : {
1706 "filename" : "include/control/../define.p4",
1707 "line" : 33,
1708 "column" : 31,
1709 "source_fragment" : "0x8847; ..."
1710 }
1711 },
1712 {
1713 "op" : "assign",
1714 "parameters" : [
1715 {
1716 "type" : "field",
1717 "value" : ["mpls", "label"]
1718 },
1719 {
1720 "type" : "runtime_data",
1721 "value" : 3
1722 }
1723 ],
1724 "source_info" : {
1725 "filename" : "include/control/next.p4",
1726 "line" : 61,
1727 "column" : 8,
1728 "source_fragment" : "hdr.mpls.label = label; ..."
1729 }
1730 },
1731 {
1732 "op" : "assign",
1733 "parameters" : [
1734 {
1735 "type" : "field",
1736 "value" : ["mpls", "tc"]
1737 },
1738 {
1739 "type" : "hexstr",
1740 "value" : "0x00"
1741 }
1742 ],
1743 "source_info" : {
1744 "filename" : "include/control/next.p4",
1745 "line" : 62,
1746 "column" : 8,
1747 "source_fragment" : "hdr.mpls.tc = tc; ..."
1748 }
1749 },
1750 {
1751 "op" : "assign",
1752 "parameters" : [
1753 {
1754 "type" : "field",
1755 "value" : ["mpls", "bos"]
1756 },
1757 {
1758 "type" : "hexstr",
1759 "value" : "0x01"
1760 }
1761 ],
1762 "source_info" : {
1763 "filename" : "include/control/next.p4",
1764 "line" : 63,
1765 "column" : 8,
1766 "source_fragment" : "hdr.mpls.bos = 1w1"
1767 }
1768 },
1769 {
1770 "op" : "assign",
1771 "parameters" : [
1772 {
1773 "type" : "field",
1774 "value" : ["mpls", "ttl"]
1775 },
1776 {
1777 "type" : "hexstr",
1778 "value" : "0x40"
1779 }
1780 ],
1781 "source_info" : {
1782 "filename" : "include/control/../define.p4",
1783 "line" : 67,
1784 "column" : 32,
1785 "source_fragment" : "64; ..."
1786 }
1787 }
1788 ]
1789 },
1790 {
1791 "name" : "next.mpls_routing_v4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001792 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07001793 "runtime_data" : [
1794 {
1795 "name" : "port_num",
1796 "bitwidth" : 9
1797 },
1798 {
1799 "name" : "smac",
1800 "bitwidth" : 48
1801 },
1802 {
1803 "name" : "dmac",
1804 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001805 },
1806 {
1807 "name" : "label",
1808 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001809 }
1810 ],
1811 "primitives" : [
1812 {
1813 "op" : "assign",
1814 "parameters" : [
1815 {
1816 "type" : "field",
1817 "value" : ["ethernet", "src_addr"]
1818 },
1819 {
1820 "type" : "runtime_data",
1821 "value" : 1
1822 }
1823 ],
1824 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001825 "filename" : "include/control/next.p4",
1826 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07001827 "column" : 8,
1828 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1829 }
1830 },
1831 {
1832 "op" : "assign",
1833 "parameters" : [
1834 {
1835 "type" : "field",
1836 "value" : ["ethernet", "dst_addr"]
1837 },
1838 {
1839 "type" : "runtime_data",
1840 "value" : 2
1841 }
1842 ],
1843 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001844 "filename" : "include/control/next.p4",
1845 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07001846 "column" : 8,
1847 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1848 }
1849 },
1850 {
1851 "op" : "assign",
1852 "parameters" : [
1853 {
1854 "type" : "field",
1855 "value" : ["standard_metadata", "egress_spec"]
1856 },
1857 {
1858 "type" : "runtime_data",
1859 "value" : 0
1860 }
1861 ],
1862 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001863 "filename" : "include/control/next.p4",
1864 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001865 "column" : 8,
1866 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1867 }
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001868 },
1869 {
1870 "op" : "add_header",
1871 "parameters" : [
1872 {
1873 "type" : "header",
1874 "value" : "mpls"
1875 }
1876 ],
1877 "source_info" : {
1878 "filename" : "include/control/next.p4",
1879 "line" : 59,
1880 "column" : 8,
1881 "source_fragment" : "hdr.mpls.setValid()"
1882 }
1883 },
1884 {
1885 "op" : "assign",
1886 "parameters" : [
1887 {
1888 "type" : "field",
1889 "value" : ["vlan_tag", "ether_type"]
1890 },
1891 {
1892 "type" : "hexstr",
1893 "value" : "0x8847"
1894 }
1895 ],
1896 "source_info" : {
1897 "filename" : "include/control/../define.p4",
1898 "line" : 33,
1899 "column" : 31,
1900 "source_fragment" : "0x8847; ..."
1901 }
1902 },
1903 {
1904 "op" : "assign",
1905 "parameters" : [
1906 {
1907 "type" : "field",
1908 "value" : ["mpls", "label"]
1909 },
1910 {
1911 "type" : "runtime_data",
1912 "value" : 3
1913 }
1914 ],
1915 "source_info" : {
1916 "filename" : "include/control/next.p4",
1917 "line" : 61,
1918 "column" : 8,
1919 "source_fragment" : "hdr.mpls.label = label; ..."
1920 }
1921 },
1922 {
1923 "op" : "assign",
1924 "parameters" : [
1925 {
1926 "type" : "field",
1927 "value" : ["mpls", "tc"]
1928 },
1929 {
1930 "type" : "hexstr",
1931 "value" : "0x00"
1932 }
1933 ],
1934 "source_info" : {
1935 "filename" : "include/control/next.p4",
1936 "line" : 62,
1937 "column" : 8,
1938 "source_fragment" : "hdr.mpls.tc = tc; ..."
1939 }
1940 },
1941 {
1942 "op" : "assign",
1943 "parameters" : [
1944 {
1945 "type" : "field",
1946 "value" : ["mpls", "bos"]
1947 },
1948 {
1949 "type" : "hexstr",
1950 "value" : "0x01"
1951 }
1952 ],
1953 "source_info" : {
1954 "filename" : "include/control/next.p4",
1955 "line" : 63,
1956 "column" : 8,
1957 "source_fragment" : "hdr.mpls.bos = 1w1"
1958 }
1959 },
1960 {
1961 "op" : "assign",
1962 "parameters" : [
1963 {
1964 "type" : "field",
1965 "value" : ["mpls", "ttl"]
1966 },
1967 {
1968 "type" : "hexstr",
1969 "value" : "0x40"
1970 }
1971 ],
1972 "source_info" : {
1973 "filename" : "include/control/../define.p4",
1974 "line" : 67,
1975 "column" : 32,
1976 "source_fragment" : "64; ..."
1977 }
Yi Tsengbe342052017-11-03 10:21:23 -07001978 }
1979 ]
1980 },
1981 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001982 "name" : "next.mpls_routing_v6",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001983 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07001984 "runtime_data" : [
1985 {
1986 "name" : "port_num",
1987 "bitwidth" : 9
1988 },
1989 {
1990 "name" : "smac",
1991 "bitwidth" : 48
1992 },
1993 {
1994 "name" : "dmac",
1995 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001996 },
1997 {
1998 "name" : "label",
1999 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07002000 }
2001 ],
2002 "primitives" : [
2003 {
2004 "op" : "assign",
2005 "parameters" : [
2006 {
2007 "type" : "field",
2008 "value" : ["ethernet", "src_addr"]
2009 },
2010 {
2011 "type" : "runtime_data",
2012 "value" : 1
2013 }
2014 ],
2015 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002016 "filename" : "include/control/next.p4",
2017 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07002018 "column" : 8,
2019 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2020 }
2021 },
2022 {
2023 "op" : "assign",
2024 "parameters" : [
2025 {
2026 "type" : "field",
2027 "value" : ["ethernet", "dst_addr"]
2028 },
2029 {
2030 "type" : "runtime_data",
2031 "value" : 2
2032 }
2033 ],
2034 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002035 "filename" : "include/control/next.p4",
2036 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07002037 "column" : 8,
2038 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2039 }
2040 },
2041 {
2042 "op" : "assign",
2043 "parameters" : [
2044 {
2045 "type" : "field",
2046 "value" : ["standard_metadata", "egress_spec"]
2047 },
2048 {
2049 "type" : "runtime_data",
2050 "value" : 0
2051 }
2052 ],
2053 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002054 "filename" : "include/control/next.p4",
2055 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002056 "column" : 8,
2057 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2058 }
Yi Tsengbe342052017-11-03 10:21:23 -07002059 },
2060 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002061 "op" : "add_header",
Yi Tsengbe342052017-11-03 10:21:23 -07002062 "parameters" : [
2063 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002064 "type" : "header",
2065 "value" : "mpls"
Yi Tsengbe342052017-11-03 10:21:23 -07002066 }
2067 ],
2068 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002069 "filename" : "include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002070 "line" : 59,
Yi Tsengbe342052017-11-03 10:21:23 -07002071 "column" : 8,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002072 "source_fragment" : "hdr.mpls.setValid()"
2073 }
2074 },
2075 {
2076 "op" : "assign",
2077 "parameters" : [
2078 {
2079 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002080 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08002081 },
2082 {
2083 "type" : "hexstr",
2084 "value" : "0x8847"
2085 }
2086 ],
2087 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002088 "filename" : "include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002089 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002090 "column" : 31,
2091 "source_fragment" : "0x8847; ..."
2092 }
2093 },
2094 {
2095 "op" : "assign",
2096 "parameters" : [
2097 {
2098 "type" : "field",
2099 "value" : ["mpls", "label"]
2100 },
2101 {
2102 "type" : "runtime_data",
2103 "value" : 3
2104 }
2105 ],
2106 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002107 "filename" : "include/control/next.p4",
2108 "line" : 61,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002109 "column" : 8,
2110 "source_fragment" : "hdr.mpls.label = label; ..."
2111 }
2112 },
2113 {
2114 "op" : "assign",
2115 "parameters" : [
2116 {
2117 "type" : "field",
2118 "value" : ["mpls", "tc"]
2119 },
2120 {
Yi Tseng1d842672017-11-28 16:06:52 -08002121 "type" : "hexstr",
2122 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002123 }
2124 ],
2125 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002126 "filename" : "include/control/next.p4",
2127 "line" : 62,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002128 "column" : 8,
2129 "source_fragment" : "hdr.mpls.tc = tc; ..."
2130 }
2131 },
2132 {
2133 "op" : "assign",
2134 "parameters" : [
2135 {
2136 "type" : "field",
2137 "value" : ["mpls", "bos"]
2138 },
2139 {
2140 "type" : "hexstr",
2141 "value" : "0x01"
2142 }
2143 ],
2144 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002145 "filename" : "include/control/next.p4",
2146 "line" : 63,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002147 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002148 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002149 }
2150 },
2151 {
2152 "op" : "assign",
2153 "parameters" : [
2154 {
2155 "type" : "field",
2156 "value" : ["mpls", "ttl"]
2157 },
2158 {
2159 "type" : "hexstr",
2160 "value" : "0x40"
2161 }
2162 ],
2163 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002164 "filename" : "include/control/../define.p4",
Yi Tseng3d3956d2018-01-31 17:28:05 -08002165 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002166 "column" : 32,
2167 "source_fragment" : "64; ..."
2168 }
2169 }
2170 ]
2171 },
2172 {
Yi Tsengbe342052017-11-03 10:21:23 -07002173 "name" : "act",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002174 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07002175 "runtime_data" : [],
2176 "primitives" : [
2177 {
2178 "op" : "assign",
2179 "parameters" : [
2180 {
2181 "type" : "field",
2182 "value" : ["standard_metadata", "egress_spec"]
2183 },
2184 {
2185 "type" : "field",
2186 "value" : ["packet_out", "egress_port"]
2187 }
2188 ],
2189 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002190 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002191 "line" : 26,
2192 "column" : 12,
2193 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2194 }
Yi Tseng1d842672017-11-28 16:06:52 -08002195 },
2196 {
2197 "op" : "remove_header",
2198 "parameters" : [
2199 {
2200 "type" : "header",
2201 "value" : "packet_out"
2202 }
2203 ],
2204 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002205 "filename" : "include/control/packetio.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002206 "line" : 27,
2207 "column" : 12,
2208 "source_fragment" : "hdr.packet_out.setInvalid()"
2209 }
Yi Tsengbe342052017-11-03 10:21:23 -07002210 }
2211 ]
2212 },
2213 {
2214 "name" : "act_0",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002215 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07002216 "runtime_data" : [],
2217 "primitives" : [
2218 {
2219 "op" : "assign",
2220 "parameters" : [
2221 {
2222 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002223 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002224 },
2225 {
2226 "type" : "hexstr",
2227 "value" : "0x0800"
2228 }
2229 ],
2230 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002231 "filename" : "include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002232 "line" : 35,
2233 "column" : 31,
2234 "source_fragment" : "0x0800; ..."
2235 }
2236 },
2237 {
2238 "op" : "assign",
2239 "parameters" : [
2240 {
2241 "type" : "field",
2242 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2243 },
2244 {
2245 "type" : "hexstr",
2246 "value" : "0x0800"
2247 }
2248 ],
2249 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002250 "filename" : "include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002251 "line" : 35,
2252 "column" : 31,
2253 "source_fragment" : "0x0800; ..."
2254 }
2255 }
2256 ]
2257 },
2258 {
2259 "name" : "act_1",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002260 "id" : 26,
Yi Tseng1d842672017-11-28 16:06:52 -08002261 "runtime_data" : [],
2262 "primitives" : [
2263 {
2264 "op" : "assign",
2265 "parameters" : [
2266 {
2267 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002268 "value" : ["scalars", "next_tmp_0"]
2269 },
2270 {
2271 "type" : "expression",
2272 "value" : {
2273 "type" : "expression",
2274 "value" : {
2275 "op" : "b2d",
2276 "left" : null,
2277 "right" : {
2278 "type" : "bool",
2279 "value" : true
2280 }
2281 }
2282 }
2283 }
2284 ]
2285 }
2286 ]
2287 },
2288 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002289 "name" : "act_2",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002290 "id" : 27,
Yi Tseng1d842672017-11-28 16:06:52 -08002291 "runtime_data" : [],
2292 "primitives" : [
2293 {
2294 "op" : "assign",
2295 "parameters" : [
2296 {
2297 "type" : "field",
2298 "value" : ["scalars", "next_tmp_0"]
2299 },
2300 {
2301 "type" : "expression",
2302 "value" : {
2303 "type" : "expression",
2304 "value" : {
2305 "op" : "b2d",
2306 "left" : null,
2307 "right" : {
2308 "type" : "bool",
2309 "value" : false
2310 }
2311 }
2312 }
2313 }
2314 ]
2315 }
2316 ]
2317 },
2318 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002319 "name" : "act_3",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002320 "id" : 28,
Yi Tseng1d842672017-11-28 16:06:52 -08002321 "runtime_data" : [],
2322 "primitives" : [
2323 {
2324 "op" : "assign",
2325 "parameters" : [
2326 {
2327 "type" : "field",
2328 "value" : ["ipv4", "ttl"]
2329 },
2330 {
2331 "type" : "expression",
2332 "value" : {
2333 "type" : "expression",
2334 "value" : {
2335 "op" : "&",
2336 "left" : {
2337 "type" : "expression",
2338 "value" : {
2339 "op" : "+",
2340 "left" : {
2341 "type" : "field",
2342 "value" : ["ipv4", "ttl"]
2343 },
2344 "right" : {
2345 "type" : "hexstr",
2346 "value" : "0xff"
2347 }
2348 }
2349 },
2350 "right" : {
2351 "type" : "hexstr",
2352 "value" : "0xff"
2353 }
2354 }
2355 }
2356 }
2357 ],
2358 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002359 "filename" : "include/control/next.p4",
2360 "line" : 143,
Yi Tseng1d842672017-11-28 16:06:52 -08002361 "column" : 20,
2362 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2363 }
2364 }
2365 ]
2366 },
2367 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002368 "name" : "act_4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002369 "id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002370 "runtime_data" : [],
2371 "primitives" : [
2372 {
2373 "op" : "assign",
2374 "parameters" : [
2375 {
2376 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002377 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002378 },
2379 {
2380 "type" : "expression",
2381 "value" : {
2382 "type" : "expression",
2383 "value" : {
2384 "op" : "&",
2385 "left" : {
2386 "type" : "field",
2387 "value" : ["standard_metadata", "egress_spec"]
2388 },
2389 "right" : {
2390 "type" : "hexstr",
2391 "value" : "0xffffffff"
2392 }
2393 }
2394 }
2395 }
2396 ]
2397 },
2398 {
2399 "op" : "count",
2400 "parameters" : [
2401 {
2402 "type" : "counter_array",
2403 "value" : "port_counters_control.egress_port_counter"
2404 },
2405 {
2406 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002407 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002408 }
2409 ],
2410 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002411 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002412 "line" : 28,
2413 "column" : 12,
2414 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2415 }
2416 }
2417 ]
2418 },
2419 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002420 "name" : "act_5",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002421 "id" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07002422 "runtime_data" : [],
2423 "primitives" : [
2424 {
2425 "op" : "assign",
2426 "parameters" : [
2427 {
2428 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002429 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002430 },
2431 {
2432 "type" : "expression",
2433 "value" : {
2434 "type" : "expression",
2435 "value" : {
2436 "op" : "&",
2437 "left" : {
2438 "type" : "field",
2439 "value" : ["standard_metadata", "ingress_port"]
2440 },
2441 "right" : {
2442 "type" : "hexstr",
2443 "value" : "0xffffffff"
2444 }
2445 }
2446 }
2447 }
2448 ]
2449 },
2450 {
2451 "op" : "count",
2452 "parameters" : [
2453 {
2454 "type" : "counter_array",
2455 "value" : "port_counters_control.ingress_port_counter"
2456 },
2457 {
2458 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002459 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002460 }
2461 ],
2462 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002463 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002464 "line" : 31,
2465 "column" : 12,
2466 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2467 }
2468 }
2469 ]
2470 },
2471 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002472 "name" : "act_6",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002473 "id" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -08002474 "runtime_data" : [],
2475 "primitives" : [
2476 {
2477 "op" : "assign",
2478 "parameters" : [
2479 {
2480 "type" : "field",
2481 "value" : ["ethernet", "ether_type"]
2482 },
2483 {
2484 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002485 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002486 }
2487 ],
2488 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002489 "filename" : "include/control/next.p4",
2490 "line" : 167,
Yi Tsengbd46d052018-01-22 17:18:16 -08002491 "column" : 12,
2492 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
Yi Tseng1d842672017-11-28 16:06:52 -08002493 }
Yi Tsengbd46d052018-01-22 17:18:16 -08002494 },
Yi Tsengbe342052017-11-03 10:21:23 -07002495 {
2496 "op" : "remove_header",
2497 "parameters" : [
2498 {
2499 "type" : "header",
2500 "value" : "vlan_tag"
2501 }
2502 ],
2503 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002504 "filename" : "include/control/next.p4",
2505 "line" : 168,
Yi Tsengbe342052017-11-03 10:21:23 -07002506 "column" : 12,
2507 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2508 }
2509 }
2510 ]
2511 },
2512 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002513 "name" : "act_7",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002514 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002515 "runtime_data" : [],
2516 "primitives" : [
2517 {
2518 "op" : "add_header",
2519 "parameters" : [
2520 {
2521 "type" : "header",
2522 "value" : "packet_in"
2523 }
2524 ],
2525 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002526 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002527 "line" : 39,
2528 "column" : 12,
2529 "source_fragment" : "hdr.packet_in.setValid()"
2530 }
2531 },
2532 {
2533 "op" : "assign",
2534 "parameters" : [
2535 {
2536 "type" : "field",
2537 "value" : ["packet_in", "ingress_port"]
2538 },
2539 {
2540 "type" : "field",
2541 "value" : ["standard_metadata", "ingress_port"]
2542 }
2543 ],
2544 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002545 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002546 "line" : 40,
2547 "column" : 12,
2548 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2549 }
2550 }
2551 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002552 }
2553 ],
2554 "pipelines" : [
2555 {
2556 "name" : "ingress",
2557 "id" : 0,
2558 "source_info" : {
2559 "filename" : "fabric.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002560 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002561 "column" : 8,
2562 "source_fragment" : "FabricIngress"
2563 },
2564 "init_table" : "node_2",
2565 "tables" : [
2566 {
2567 "name" : "tbl_act",
2568 "id" : 0,
2569 "key" : [],
2570 "match_type" : "exact",
2571 "type" : "simple",
2572 "max_size" : 1024,
2573 "with_counters" : false,
2574 "support_timeout" : false,
2575 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002576 "action_ids" : [24],
Yi Tsengbe342052017-11-03 10:21:23 -07002577 "actions" : ["act"],
2578 "base_default_next" : null,
2579 "next_tables" : {
2580 "act" : null
2581 },
2582 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002583 "action_id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07002584 "action_const" : true,
2585 "action_data" : [],
2586 "action_entry_const" : true
2587 }
2588 },
2589 {
2590 "name" : "filtering.ingress_port_vlan",
2591 "id" : 1,
2592 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002593 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002594 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07002595 "column" : 10,
2596 "source_fragment" : "ingress_port_vlan"
2597 },
2598 "key" : [
2599 {
2600 "match_type" : "exact",
2601 "target" : ["standard_metadata", "ingress_port"],
2602 "mask" : null
2603 },
2604 {
2605 "match_type" : "exact",
2606 "target" : ["vlan_tag", "$valid$"],
2607 "mask" : null
2608 },
2609 {
2610 "match_type" : "ternary",
2611 "target" : ["vlan_tag", "vlan_id"],
2612 "mask" : null
2613 }
2614 ],
2615 "match_type" : "ternary",
2616 "type" : "simple",
2617 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002618 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002619 "support_timeout" : false,
2620 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002621 "action_ids" : [9, 8, 0, 7],
Yi Tseng1d842672017-11-28 16:06:52 -08002622 "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "filtering.drop"],
Yi Tsengbe342052017-11-03 10:21:23 -07002623 "base_default_next" : "filtering.fwd_classifier",
2624 "next_tables" : {
2625 "filtering.push_internal_vlan" : "filtering.fwd_classifier",
2626 "filtering.set_vlan" : "filtering.fwd_classifier",
2627 "nop" : "filtering.fwd_classifier",
Yi Tseng1d842672017-11-28 16:06:52 -08002628 "filtering.drop" : "filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002629 },
2630 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002631 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07002632 "action_const" : true,
2633 "action_data" : [],
2634 "action_entry_const" : true
2635 }
2636 },
2637 {
2638 "name" : "filtering.fwd_classifier",
2639 "id" : 2,
2640 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002641 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002642 "line" : 76,
Yi Tsengbe342052017-11-03 10:21:23 -07002643 "column" : 10,
2644 "source_fragment" : "fwd_classifier"
2645 },
2646 "key" : [
2647 {
2648 "match_type" : "exact",
2649 "target" : ["standard_metadata", "ingress_port"],
2650 "mask" : null
2651 },
2652 {
2653 "match_type" : "exact",
2654 "target" : ["ethernet", "dst_addr"],
2655 "mask" : null
2656 },
2657 {
2658 "match_type" : "exact",
Yi Tseng1d842672017-11-28 16:06:52 -08002659 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002660 "mask" : null
2661 }
2662 ],
2663 "match_type" : "exact",
2664 "type" : "simple",
2665 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002666 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002667 "support_timeout" : false,
2668 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002669 "action_ids" : [10],
Yi Tsengbe342052017-11-03 10:21:23 -07002670 "actions" : ["filtering.set_forwarding_type"],
2671 "base_default_next" : "node_6",
2672 "next_tables" : {
2673 "filtering.set_forwarding_type" : "node_6"
2674 },
2675 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002676 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07002677 "action_const" : true,
2678 "action_data" : ["0x0"],
2679 "action_entry_const" : true
2680 }
2681 },
2682 {
2683 "name" : "forwarding.bridging",
2684 "id" : 3,
2685 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002686 "filename" : "include/control/forwarding.p4",
2687 "line" : 52,
Yi Tsengbe342052017-11-03 10:21:23 -07002688 "column" : 10,
2689 "source_fragment" : "bridging"
2690 },
2691 "key" : [
2692 {
2693 "match_type" : "exact",
2694 "target" : ["vlan_tag", "vlan_id"],
2695 "mask" : null
2696 },
2697 {
2698 "match_type" : "ternary",
2699 "target" : ["ethernet", "dst_addr"],
2700 "mask" : null
2701 }
2702 ],
2703 "match_type" : "ternary",
2704 "type" : "simple",
2705 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002706 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002707 "support_timeout" : false,
2708 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002709 "action_ids" : [12, 2],
Yi Tseng1d842672017-11-28 16:06:52 -08002710 "actions" : ["forwarding.set_next_id", "NoAction"],
2711 "base_default_next" : "forwarding.acl",
2712 "next_tables" : {
2713 "forwarding.set_next_id" : "forwarding.acl",
2714 "NoAction" : "forwarding.acl"
2715 },
2716 "default_entry" : {
2717 "action_id" : 2,
2718 "action_const" : false,
2719 "action_data" : [],
2720 "action_entry_const" : false
2721 }
2722 },
2723 {
2724 "name" : "forwarding.mpls",
2725 "id" : 4,
2726 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002727 "filename" : "include/control/forwarding.p4",
2728 "line" : 64,
Yi Tseng1d842672017-11-28 16:06:52 -08002729 "column" : 10,
2730 "source_fragment" : "mpls"
2731 },
2732 "key" : [
2733 {
2734 "match_type" : "exact",
2735 "target" : ["mpls", "label"],
2736 "mask" : null
2737 }
2738 ],
2739 "match_type" : "exact",
2740 "type" : "simple",
2741 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002742 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002743 "support_timeout" : false,
2744 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002745 "action_ids" : [15, 3],
Yi Tseng1d842672017-11-28 16:06:52 -08002746 "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08002747 "base_default_next" : "tbl_act_0",
Yi Tseng1d842672017-11-28 16:06:52 -08002748 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08002749 "forwarding.pop_mpls_and_next" : "tbl_act_0",
2750 "NoAction" : "tbl_act_0"
Yi Tseng1d842672017-11-28 16:06:52 -08002751 },
2752 "default_entry" : {
2753 "action_id" : 3,
2754 "action_const" : false,
2755 "action_data" : [],
2756 "action_entry_const" : false
2757 }
2758 },
2759 {
2760 "name" : "tbl_act_0",
2761 "id" : 5,
2762 "key" : [],
2763 "match_type" : "exact",
2764 "type" : "simple",
2765 "max_size" : 1024,
2766 "with_counters" : false,
2767 "support_timeout" : false,
2768 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002769 "action_ids" : [25],
Yi Tseng1d842672017-11-28 16:06:52 -08002770 "actions" : ["act_0"],
2771 "base_default_next" : "forwarding.acl",
2772 "next_tables" : {
2773 "act_0" : "forwarding.acl"
2774 },
2775 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002776 "action_id" : 25,
Yi Tseng1d842672017-11-28 16:06:52 -08002777 "action_const" : true,
2778 "action_data" : [],
2779 "action_entry_const" : true
2780 }
2781 },
2782 {
Yi Tseng1d842672017-11-28 16:06:52 -08002783 "name" : "forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08002784 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08002785 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002786 "filename" : "include/control/forwarding.p4",
2787 "line" : 75,
Yi Tseng1d842672017-11-28 16:06:52 -08002788 "column" : 10,
2789 "source_fragment" : "unicast_v4"
2790 },
2791 "key" : [
2792 {
2793 "match_type" : "lpm",
2794 "target" : ["ipv4", "dst_addr"],
2795 "mask" : null
2796 }
2797 ],
2798 "match_type" : "lpm",
2799 "type" : "simple",
2800 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002801 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002802 "support_timeout" : false,
2803 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002804 "action_ids" : [13, 4],
Yi Tsengbe342052017-11-03 10:21:23 -07002805 "actions" : ["forwarding.set_next_id", "NoAction"],
2806 "base_default_next" : "forwarding.acl",
2807 "next_tables" : {
2808 "forwarding.set_next_id" : "forwarding.acl",
2809 "NoAction" : "forwarding.acl"
2810 },
2811 "default_entry" : {
2812 "action_id" : 4,
2813 "action_const" : false,
2814 "action_data" : [],
2815 "action_entry_const" : false
2816 }
2817 },
2818 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002819 "name" : "forwarding.acl",
Yi Tsengbd46d052018-01-22 17:18:16 -08002820 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07002821 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002822 "filename" : "include/control/forwarding.p4",
2823 "line" : 133,
Yi Tsengbe342052017-11-03 10:21:23 -07002824 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07002825 "source_fragment" : "acl"
2826 },
2827 "key" : [
2828 {
2829 "match_type" : "ternary",
2830 "target" : ["standard_metadata", "ingress_port"],
2831 "mask" : null
2832 },
2833 {
2834 "match_type" : "ternary",
2835 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
2836 "mask" : null
2837 },
2838 {
2839 "match_type" : "ternary",
Yi Tseng1d842672017-11-28 16:06:52 -08002840 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
2841 "mask" : null
2842 },
2843 {
2844 "match_type" : "ternary",
2845 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
2846 "mask" : null
2847 },
2848 {
2849 "match_type" : "ternary",
Yi Tsengc6844f52017-12-19 11:58:25 -08002850 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
2851 "mask" : null
2852 },
2853 {
2854 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002855 "target" : ["ethernet", "dst_addr"],
2856 "mask" : null
2857 },
2858 {
2859 "match_type" : "ternary",
2860 "target" : ["ethernet", "src_addr"],
2861 "mask" : null
2862 },
2863 {
2864 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002865 "target" : ["vlan_tag", "vlan_id"],
2866 "mask" : null
2867 },
2868 {
2869 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002870 "target" : ["ipv4", "src_addr"],
2871 "mask" : null
2872 },
2873 {
2874 "match_type" : "ternary",
2875 "target" : ["ipv4", "dst_addr"],
2876 "mask" : null
2877 },
2878 {
2879 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002880 "target" : ["icmp", "icmp_type"],
2881 "mask" : null
2882 },
2883 {
2884 "match_type" : "ternary",
2885 "target" : ["icmp", "icmp_code"],
2886 "mask" : null
2887 }
2888 ],
2889 "match_type" : "ternary",
2890 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08002891 "max_size" : 256,
Yi Tsengbd46d052018-01-22 17:18:16 -08002892 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002893 "support_timeout" : false,
2894 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002895 "action_ids" : [14, 16, 11, 1],
Yi Tseng1d842672017-11-28 16:06:52 -08002896 "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "forwarding.drop", "nop"],
Yi Tsengf55eaa82017-11-29 15:51:28 -08002897 "base_default_next" : "next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07002898 "next_tables" : {
Yi Tsengf55eaa82017-11-29 15:51:28 -08002899 "forwarding.set_next_id" : "next.simple",
2900 "forwarding.duplicate_to_controller" : "next.simple",
Yi Tseng1d842672017-11-28 16:06:52 -08002901 "forwarding.drop" : "next.simple",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002902 "nop" : "next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07002903 },
2904 "default_entry" : {
2905 "action_id" : 1,
2906 "action_const" : true,
2907 "action_data" : [],
2908 "action_entry_const" : true
2909 }
2910 },
2911 {
Yi Tsengf55eaa82017-11-29 15:51:28 -08002912 "name" : "next.simple",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002913 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07002914 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002915 "filename" : "include/control/next.p4",
2916 "line" : 83,
Yi Tsengbe342052017-11-03 10:21:23 -07002917 "column" : 10,
2918 "source_fragment" : "simple"
2919 },
2920 "key" : [
2921 {
2922 "match_type" : "exact",
2923 "target" : ["scalars", "fabric_metadata_t.next_id"],
2924 "mask" : null
2925 }
2926 ],
2927 "match_type" : "exact",
2928 "type" : "simple",
2929 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002930 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002931 "support_timeout" : false,
2932 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002933 "action_ids" : [17, 18, 19, 21, 5],
Yi Tseng3a5731e2018-01-22 11:38:58 -08002934 "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "next.mpls_routing_v4", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08002935 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07002936 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08002937 "__HIT__" : "tbl_act_1",
2938 "__MISS__" : "tbl_act_2"
Yi Tsengbe342052017-11-03 10:21:23 -07002939 },
2940 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002941 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07002942 "action_const" : false,
2943 "action_data" : [],
2944 "action_entry_const" : false
2945 }
2946 },
2947 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002948 "name" : "tbl_act_1",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002949 "id" : 9,
2950 "key" : [],
2951 "match_type" : "exact",
2952 "type" : "simple",
2953 "max_size" : 1024,
2954 "with_counters" : false,
2955 "support_timeout" : false,
2956 "direct_meters" : null,
2957 "action_ids" : [26],
2958 "actions" : ["act_1"],
2959 "base_default_next" : "node_17",
2960 "next_tables" : {
2961 "act_1" : "node_17"
2962 },
2963 "default_entry" : {
2964 "action_id" : 26,
2965 "action_const" : true,
2966 "action_data" : [],
2967 "action_entry_const" : true
2968 }
2969 },
2970 {
2971 "name" : "tbl_act_2",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002972 "id" : 10,
2973 "key" : [],
2974 "match_type" : "exact",
2975 "type" : "simple",
2976 "max_size" : 1024,
2977 "with_counters" : false,
2978 "support_timeout" : false,
2979 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002980 "action_ids" : [27],
2981 "actions" : ["act_2"],
2982 "base_default_next" : "node_17",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002983 "next_tables" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002984 "act_2" : "node_17"
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002985 },
2986 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002987 "action_id" : 27,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002988 "action_const" : true,
2989 "action_data" : [],
2990 "action_entry_const" : true
2991 }
2992 },
2993 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002994 "name" : "tbl_act_3",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08002995 "id" : 11,
2996 "key" : [],
2997 "match_type" : "exact",
2998 "type" : "simple",
2999 "max_size" : 1024,
3000 "with_counters" : false,
3001 "support_timeout" : false,
3002 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003003 "action_ids" : [28],
Yi Tseng1d842672017-11-28 16:06:52 -08003004 "actions" : ["act_3"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003005 "base_default_next" : "next.hashed",
Yi Tseng1d842672017-11-28 16:06:52 -08003006 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003007 "act_3" : "next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003008 },
3009 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003010 "action_id" : 28,
Yi Tseng1d842672017-11-28 16:06:52 -08003011 "action_const" : true,
3012 "action_data" : [],
3013 "action_entry_const" : true
3014 }
3015 },
3016 {
Yi Tsengbe342052017-11-03 10:21:23 -07003017 "name" : "next.hashed",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003018 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003019 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003020 "filename" : "include/control/next.p4",
3021 "line" : 97,
Yi Tsengbe342052017-11-03 10:21:23 -07003022 "column" : 10,
3023 "source_fragment" : "hashed"
3024 },
3025 "key" : [
3026 {
3027 "match_type" : "exact",
3028 "target" : ["scalars", "fabric_metadata_t.next_id"],
3029 "mask" : null
3030 }
3031 ],
3032 "match_type" : "exact",
3033 "type" : "indirect_ws",
3034 "action_profile" : "next.ecmp_selector",
3035 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003036 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003037 "support_timeout" : false,
3038 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003039 "action_ids" : [20, 22, 23, 6],
Yi Tseng1b154bd2017-11-20 17:48:19 -08003040 "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003041 "base_default_next" : "node_22",
Yi Tsengbe342052017-11-03 10:21:23 -07003042 "next_tables" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003043 "next.l3_routing" : "node_22",
3044 "next.mpls_routing_v4" : "node_22",
3045 "next.mpls_routing_v6" : "node_22",
3046 "NoAction" : "node_22"
Yi Tsengbe342052017-11-03 10:21:23 -07003047 }
3048 },
3049 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003050 "name" : "tbl_act_4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003051 "id" : 13,
3052 "key" : [],
3053 "match_type" : "exact",
3054 "type" : "simple",
3055 "max_size" : 1024,
3056 "with_counters" : false,
3057 "support_timeout" : false,
3058 "direct_meters" : null,
3059 "action_ids" : [29],
3060 "actions" : ["act_4"],
3061 "base_default_next" : "node_24",
3062 "next_tables" : {
3063 "act_4" : "node_24"
3064 },
3065 "default_entry" : {
3066 "action_id" : 29,
3067 "action_const" : true,
3068 "action_data" : [],
3069 "action_entry_const" : true
3070 }
3071 },
3072 {
3073 "name" : "tbl_act_5",
3074 "id" : 14,
3075 "key" : [],
3076 "match_type" : "exact",
3077 "type" : "simple",
3078 "max_size" : 1024,
3079 "with_counters" : false,
3080 "support_timeout" : false,
3081 "direct_meters" : null,
3082 "action_ids" : [30],
3083 "actions" : ["act_5"],
3084 "base_default_next" : "node_26",
3085 "next_tables" : {
3086 "act_5" : "node_26"
3087 },
3088 "default_entry" : {
3089 "action_id" : 30,
3090 "action_const" : true,
3091 "action_data" : [],
3092 "action_entry_const" : true
3093 }
3094 },
3095 {
3096 "name" : "tbl_act_6",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003097 "id" : 15,
Yi Tsengbd46d052018-01-22 17:18:16 -08003098 "key" : [],
3099 "match_type" : "exact",
3100 "type" : "simple",
3101 "max_size" : 1024,
3102 "with_counters" : false,
3103 "support_timeout" : false,
3104 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003105 "action_ids" : [31],
Yi Tseng1d842672017-11-28 16:06:52 -08003106 "actions" : ["act_6"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003107 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003108 "next_tables" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003109 "act_6" : null
Yi Tsengbe342052017-11-03 10:21:23 -07003110 },
3111 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003112 "action_id" : 31,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003113 "action_const" : true,
3114 "action_data" : [],
3115 "action_entry_const" : true
3116 }
Yi Tsengbe342052017-11-03 10:21:23 -07003117 }
3118 ],
3119 "action_profiles" : [
3120 {
3121 "name" : "next.ecmp_selector",
3122 "id" : 0,
3123 "max_size" : 64,
3124 "selector" : {
3125 "algo" : "crc16",
3126 "input" : [
3127 {
3128 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003129 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003130 },
3131 {
3132 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003133 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003134 },
3135 {
3136 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003137 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003138 },
3139 {
3140 "type" : "field",
3141 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3142 },
3143 {
3144 "type" : "field",
3145 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3146 }
3147 ]
3148 }
3149 }
3150 ],
3151 "conditionals" : [
3152 {
3153 "name" : "node_2",
3154 "id" : 0,
3155 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003156 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003157 "line" : 25,
3158 "column" : 12,
3159 "source_fragment" : "hdr.packet_out.isValid()"
3160 },
3161 "expression" : {
3162 "type" : "expression",
3163 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003164 "op" : "d2b",
3165 "left" : null,
3166 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003167 "type" : "field",
3168 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003169 }
3170 }
3171 },
3172 "true_next" : "tbl_act",
3173 "false_next" : "filtering.ingress_port_vlan"
3174 },
3175 {
3176 "name" : "node_6",
3177 "id" : 1,
3178 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003179 "filename" : "include/control/forwarding.p4",
3180 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -07003181 "column" : 11,
3182 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3183 },
3184 "expression" : {
3185 "type" : "expression",
3186 "value" : {
3187 "op" : "==",
3188 "left" : {
3189 "type" : "field",
3190 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3191 },
3192 "right" : {
3193 "type" : "hexstr",
3194 "value" : "0x00"
3195 }
3196 }
3197 },
3198 "true_next" : "forwarding.bridging",
3199 "false_next" : "node_8"
3200 },
3201 {
3202 "name" : "node_8",
3203 "id" : 2,
3204 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003205 "filename" : "include/control/forwarding.p4",
3206 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -07003207 "column" : 17,
3208 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3209 },
3210 "expression" : {
3211 "type" : "expression",
3212 "value" : {
3213 "op" : "==",
3214 "left" : {
3215 "type" : "field",
3216 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3217 },
3218 "right" : {
3219 "type" : "hexstr",
3220 "value" : "0x01"
3221 }
3222 }
3223 },
3224 "true_next" : "forwarding.mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -08003225 "false_next" : "node_11"
Yi Tsengbe342052017-11-03 10:21:23 -07003226 },
3227 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003228 "name" : "node_11",
Yi Tsengbe342052017-11-03 10:21:23 -07003229 "id" : 3,
3230 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003231 "filename" : "include/control/forwarding.p4",
3232 "line" : 179,
Yi Tsengbe342052017-11-03 10:21:23 -07003233 "column" : 17,
3234 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3235 },
3236 "expression" : {
3237 "type" : "expression",
3238 "value" : {
3239 "op" : "==",
3240 "left" : {
3241 "type" : "field",
3242 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3243 },
3244 "right" : {
3245 "type" : "hexstr",
3246 "value" : "0x02"
3247 }
3248 }
3249 },
3250 "true_next" : "forwarding.unicast_v4",
Yi Tsengbe342052017-11-03 10:21:23 -07003251 "false_next" : "forwarding.acl"
3252 },
3253 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003254 "name" : "node_17",
3255 "id" : 4,
Yi Tseng1d842672017-11-28 16:06:52 -08003256 "expression" : {
3257 "type" : "expression",
3258 "value" : {
3259 "op" : "d2b",
3260 "left" : null,
3261 "right" : {
3262 "type" : "field",
3263 "value" : ["scalars", "next_tmp_0"]
3264 }
3265 }
3266 },
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003267 "true_next" : "node_18",
Yi Tseng1d842672017-11-28 16:06:52 -08003268 "false_next" : "next.hashed"
3269 },
3270 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003271 "name" : "node_18",
3272 "id" : 5,
Yi Tseng1d842672017-11-28 16:06:52 -08003273 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003274 "filename" : "include/control/next.p4",
3275 "line" : 141,
Yi Tsengbd46d052018-01-22 17:18:16 -08003276 "column" : 16,
3277 "source_fragment" : "!hdr.mpls.isValid()"
Yi Tseng1d842672017-11-28 16:06:52 -08003278 },
3279 "expression" : {
3280 "type" : "expression",
3281 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003282 "op" : "not",
3283 "left" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003284 "right" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003285 "type" : "expression",
3286 "value" : {
3287 "op" : "d2b",
3288 "left" : null,
3289 "right" : {
3290 "type" : "field",
3291 "value" : ["mpls", "$valid$"]
3292 }
3293 }
Yi Tseng1d842672017-11-28 16:06:52 -08003294 }
3295 }
3296 },
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003297 "true_next" : "node_19",
Yi Tseng1d842672017-11-28 16:06:52 -08003298 "false_next" : "next.hashed"
3299 },
3300 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003301 "name" : "node_19",
3302 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003303 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003304 "filename" : "include/control/next.p4",
3305 "line" : 142,
Yi Tseng1d842672017-11-28 16:06:52 -08003306 "column" : 19,
3307 "source_fragment" : "hdr.ipv4.isValid()"
3308 },
3309 "expression" : {
3310 "type" : "expression",
3311 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003312 "op" : "d2b",
3313 "left" : null,
3314 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003315 "type" : "field",
3316 "value" : ["ipv4", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08003317 }
3318 }
3319 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003320 "true_next" : "tbl_act_3",
Yi Tseng1d842672017-11-28 16:06:52 -08003321 "false_next" : "next.hashed"
3322 },
3323 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003324 "name" : "node_22",
3325 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003326 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003327 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003328 "line" : 27,
3329 "column" : 12,
3330 "source_fragment" : "standard_metadata.egress_spec < 511"
3331 },
3332 "expression" : {
3333 "type" : "expression",
3334 "value" : {
3335 "op" : "<",
3336 "left" : {
3337 "type" : "field",
3338 "value" : ["standard_metadata", "egress_spec"]
3339 },
3340 "right" : {
3341 "type" : "hexstr",
3342 "value" : "0x01ff"
3343 }
3344 }
3345 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003346 "true_next" : "tbl_act_4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003347 "false_next" : "node_24"
Yi Tsengbe342052017-11-03 10:21:23 -07003348 },
3349 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003350 "name" : "node_24",
3351 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003352 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003353 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003354 "line" : 30,
3355 "column" : 12,
3356 "source_fragment" : "standard_metadata.ingress_port < 511"
3357 },
3358 "expression" : {
3359 "type" : "expression",
3360 "value" : {
3361 "op" : "<",
3362 "left" : {
3363 "type" : "field",
3364 "value" : ["standard_metadata", "ingress_port"]
3365 },
3366 "right" : {
3367 "type" : "hexstr",
3368 "value" : "0x01ff"
3369 }
3370 }
3371 },
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003372 "true_next" : "tbl_act_5",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003373 "false_next" : "node_26"
Yi Tsengf55eaa82017-11-29 15:51:28 -08003374 },
3375 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003376 "name" : "node_26",
3377 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003378 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003379 "filename" : "include/control/next.p4",
3380 "line" : 166,
Yi Tsengbe342052017-11-03 10:21:23 -07003381 "column" : 12,
3382 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
3383 },
3384 "expression" : {
3385 "type" : "expression",
3386 "value" : {
3387 "op" : "d2b",
3388 "left" : null,
3389 "right" : {
3390 "type" : "field",
3391 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
3392 }
3393 }
3394 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003395 "false_next" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003396 "true_next" : "tbl_act_6"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003397 }
3398 ]
3399 },
3400 {
3401 "name" : "egress",
3402 "id" : 1,
3403 "source_info" : {
3404 "filename" : "fabric.p4",
Carmelo Casconeb531b682018-01-30 17:55:56 -08003405 "line" : 62,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003406 "column" : 8,
3407 "source_fragment" : "FabricEgress"
3408 },
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003409 "init_table" : "node_30",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003410 "tables" : [
3411 {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003412 "name" : "tbl_act_7",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003413 "id" : 16,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003414 "key" : [],
3415 "match_type" : "exact",
3416 "type" : "simple",
3417 "max_size" : 1024,
3418 "with_counters" : false,
3419 "support_timeout" : false,
3420 "direct_meters" : null,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003421 "action_ids" : [32],
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003422 "actions" : ["act_7"],
Yi Tseng3a5731e2018-01-22 11:38:58 -08003423 "base_default_next" : null,
3424 "next_tables" : {
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003425 "act_7" : null
Yi Tseng3a5731e2018-01-22 11:38:58 -08003426 },
3427 "default_entry" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003428 "action_id" : 32,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003429 "action_const" : true,
3430 "action_data" : [],
3431 "action_entry_const" : true
3432 }
3433 }
3434 ],
3435 "action_profiles" : [],
3436 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08003437 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003438 "name" : "node_30",
3439 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003440 "source_info" : {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003441 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003442 "line" : 38,
3443 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08003444 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07003445 },
3446 "expression" : {
3447 "type" : "expression",
3448 "value" : {
3449 "op" : "==",
3450 "left" : {
3451 "type" : "field",
3452 "value" : ["standard_metadata", "egress_port"]
3453 },
3454 "right" : {
3455 "type" : "hexstr",
3456 "value" : "0x00ff"
3457 }
3458 }
3459 },
3460 "false_next" : null,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003461 "true_next" : "tbl_act_7"
Yi Tsengbe342052017-11-03 10:21:23 -07003462 }
3463 ]
3464 }
3465 ],
3466 "checksums" : [
3467 {
3468 "name" : "cksum",
3469 "id" : 0,
3470 "target" : ["ipv4", "hdr_checksum"],
3471 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003472 "calculation" : "calc",
3473 "if_cond" : {
3474 "type" : "expression",
3475 "value" : {
3476 "op" : "d2b",
3477 "left" : null,
3478 "right" : {
3479 "type" : "field",
3480 "value" : ["ipv4", "$valid$"]
3481 }
3482 }
3483 }
Yi Tsengbe342052017-11-03 10:21:23 -07003484 },
3485 {
3486 "name" : "cksum_0",
3487 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07003488 "target" : ["ipv4", "hdr_checksum"],
3489 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003490 "calculation" : "calc_0",
3491 "if_cond" : {
3492 "type" : "expression",
3493 "value" : {
3494 "op" : "d2b",
3495 "left" : null,
3496 "right" : {
3497 "type" : "field",
3498 "value" : ["ipv4", "$valid$"]
3499 }
3500 }
3501 }
Yi Tsengbe342052017-11-03 10:21:23 -07003502 }
3503 ],
3504 "force_arith" : [],
3505 "extern_instances" : [],
3506 "field_aliases" : [
3507 [
3508 "queueing_metadata.enq_timestamp",
3509 ["standard_metadata", "enq_timestamp"]
3510 ],
3511 [
3512 "queueing_metadata.enq_qdepth",
3513 ["standard_metadata", "enq_qdepth"]
3514 ],
3515 [
3516 "queueing_metadata.deq_timedelta",
3517 ["standard_metadata", "deq_timedelta"]
3518 ],
3519 [
3520 "queueing_metadata.deq_qdepth",
3521 ["standard_metadata", "deq_qdepth"]
3522 ],
3523 [
3524 "intrinsic_metadata.ingress_global_timestamp",
3525 ["standard_metadata", "ingress_global_timestamp"]
3526 ],
3527 [
3528 "intrinsic_metadata.lf_field_list",
3529 ["standard_metadata", "lf_field_list"]
3530 ],
3531 [
3532 "intrinsic_metadata.mcast_grp",
3533 ["standard_metadata", "mcast_grp"]
3534 ],
3535 [
3536 "intrinsic_metadata.resubmit_flag",
3537 ["standard_metadata", "resubmit_flag"]
3538 ],
3539 [
3540 "intrinsic_metadata.egress_rid",
3541 ["standard_metadata", "egress_rid"]
3542 ]
3543 ]
3544}