blob: 4c60e76b9412eabe197f93cd397f016d8d530b3a [file] [log] [blame]
Carmelo Cascone700648c2018-04-11 12:02:16 -07001{
Carmelo Cascone700648c2018-04-11 12:02:16 -07002 "header_types" : [
3 {
4 "name" : "scalars_0",
5 "id" : 0,
6 "fields" : [
7 ["tmp", 32, false],
8 ["tmp_1", 32, false],
9 ["tmp_0", 1, false],
10 ["hasReturned_0", 1, false],
11 ["_padding_2", 6, false]
12 ]
13 },
14 {
Carmelo Cascone700648c2018-04-11 12:02:16 -070015 "name" : "standard_metadata",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +020016 "id" : 1,
Carmelo Cascone700648c2018-04-11 12:02:16 -070017 "fields" : [
18 ["ingress_port", 9, false],
19 ["egress_spec", 9, false],
20 ["egress_port", 9, false],
21 ["clone_spec", 32, false],
22 ["instance_type", 32, false],
23 ["drop", 1, false],
24 ["recirculate_port", 16, false],
25 ["packet_length", 32, false],
26 ["enq_timestamp", 32, false],
27 ["enq_qdepth", 19, false],
28 ["deq_timedelta", 32, false],
29 ["deq_qdepth", 19, false],
30 ["ingress_global_timestamp", 48, false],
31 ["egress_global_timestamp", 48, false],
32 ["lf_field_list", 32, false],
33 ["mcast_grp", 16, false],
34 ["resubmit_flag", 32, false],
35 ["egress_rid", 16, false],
36 ["checksum_error", 1, false],
37 ["recirculate_flag", 32, false],
Carmelo Cascone4bf427f2018-06-19 23:23:32 +020038 ["_padding", 5, false]
39 ]
40 },
41 {
42 "name" : "ethernet_t",
43 "id" : 2,
44 "fields" : [
45 ["dst_addr", 48, false],
46 ["src_addr", 48, false],
47 ["ether_type", 16, false]
48 ]
49 },
50 {
51 "name" : "my_tunnel_t",
52 "id" : 3,
53 "fields" : [
54 ["proto_id", 16, false],
55 ["tun_id", 32, false]
56 ]
57 },
58 {
59 "name" : "ipv4_t",
60 "id" : 4,
61 "fields" : [
62 ["version", 4, false],
63 ["ihl", 4, false],
64 ["diffserv", 8, false],
65 ["len", 16, false],
66 ["identification", 16, false],
67 ["flags", 3, false],
68 ["frag_offset", 13, false],
69 ["ttl", 8, false],
70 ["protocol", 8, false],
71 ["hdr_checksum", 16, false],
72 ["src_addr", 32, false],
73 ["dst_addr", 32, false]
74 ]
75 },
76 {
77 "name" : "packet_out_header_t",
78 "id" : 5,
79 "fields" : [
80 ["egress_port", 9, false],
81 ["_padding_0", 7, false]
82 ]
83 },
84 {
85 "name" : "packet_in_header_t",
86 "id" : 6,
87 "fields" : [
88 ["ingress_port", 9, false],
89 ["_padding_1", 7, false]
Carmelo Cascone700648c2018-04-11 12:02:16 -070090 ]
91 }
92 ],
93 "headers" : [
94 {
95 "name" : "scalars",
96 "id" : 0,
97 "header_type" : "scalars_0",
98 "metadata" : true,
99 "pi_omit" : true
100 },
101 {
102 "name" : "standard_metadata",
103 "id" : 1,
104 "header_type" : "standard_metadata",
105 "metadata" : true,
106 "pi_omit" : true
107 },
108 {
109 "name" : "ethernet",
110 "id" : 2,
111 "header_type" : "ethernet_t",
112 "metadata" : false,
113 "pi_omit" : true
114 },
115 {
116 "name" : "my_tunnel",
117 "id" : 3,
118 "header_type" : "my_tunnel_t",
119 "metadata" : false,
120 "pi_omit" : true
121 },
122 {
123 "name" : "ipv4",
124 "id" : 4,
125 "header_type" : "ipv4_t",
126 "metadata" : false,
127 "pi_omit" : true
128 },
129 {
130 "name" : "packet_out",
131 "id" : 5,
132 "header_type" : "packet_out_header_t",
133 "metadata" : false,
134 "pi_omit" : true
135 },
136 {
137 "name" : "packet_in",
138 "id" : 6,
139 "header_type" : "packet_in_header_t",
140 "metadata" : false,
141 "pi_omit" : true
142 }
143 ],
144 "header_stacks" : [],
145 "header_union_types" : [],
146 "header_unions" : [],
147 "header_union_stacks" : [],
148 "field_lists" : [],
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200149 "errors" : [],
Carmelo Cascone700648c2018-04-11 12:02:16 -0700150 "enums" : [],
151 "parsers" : [
152 {
153 "name" : "parser",
154 "id" : 0,
155 "init_state" : "start",
156 "parse_states" : [
157 {
158 "name" : "start",
159 "id" : 0,
160 "parser_ops" : [],
161 "transitions" : [
162 {
163 "type" : "hexstr",
164 "value" : "0x00ff",
165 "mask" : null,
166 "next_state" : "parse_packet_out"
167 },
168 {
169 "value" : "default",
170 "mask" : null,
171 "next_state" : "parse_ethernet"
172 }
173 ],
174 "transition_key" : [
175 {
176 "type" : "field",
177 "value" : ["standard_metadata", "ingress_port"]
178 }
179 ]
180 },
181 {
182 "name" : "parse_packet_out",
183 "id" : 1,
184 "parser_ops" : [
185 {
186 "parameters" : [
187 {
188 "type" : "regular",
189 "value" : "packet_out"
190 }
191 ],
192 "op" : "extract"
193 }
194 ],
195 "transitions" : [
196 {
197 "value" : "default",
198 "mask" : null,
199 "next_state" : "parse_ethernet"
200 }
201 ],
202 "transition_key" : []
203 },
204 {
205 "name" : "parse_ethernet",
206 "id" : 2,
207 "parser_ops" : [
208 {
209 "parameters" : [
210 {
211 "type" : "regular",
212 "value" : "ethernet"
213 }
214 ],
215 "op" : "extract"
216 }
217 ],
218 "transitions" : [
219 {
220 "type" : "hexstr",
221 "value" : "0x1212",
222 "mask" : null,
223 "next_state" : "parse_my_tunnel"
224 },
225 {
226 "type" : "hexstr",
227 "value" : "0x0800",
228 "mask" : null,
229 "next_state" : "parse_ipv4"
230 },
231 {
232 "value" : "default",
233 "mask" : null,
234 "next_state" : null
235 }
236 ],
237 "transition_key" : [
238 {
239 "type" : "field",
240 "value" : ["ethernet", "ether_type"]
241 }
242 ]
243 },
244 {
245 "name" : "parse_my_tunnel",
246 "id" : 3,
247 "parser_ops" : [
248 {
249 "parameters" : [
250 {
251 "type" : "regular",
252 "value" : "my_tunnel"
253 }
254 ],
255 "op" : "extract"
256 }
257 ],
258 "transitions" : [
259 {
260 "type" : "hexstr",
261 "value" : "0x0800",
262 "mask" : null,
263 "next_state" : "parse_ipv4"
264 },
265 {
266 "value" : "default",
267 "mask" : null,
268 "next_state" : null
269 }
270 ],
271 "transition_key" : [
272 {
273 "type" : "field",
274 "value" : ["my_tunnel", "proto_id"]
275 }
276 ]
277 },
278 {
279 "name" : "parse_ipv4",
280 "id" : 4,
281 "parser_ops" : [
282 {
283 "parameters" : [
284 {
285 "type" : "regular",
286 "value" : "ipv4"
287 }
288 ],
289 "op" : "extract"
290 }
291 ],
292 "transitions" : [
293 {
294 "value" : "default",
295 "mask" : null,
296 "next_state" : null
297 }
298 ],
299 "transition_key" : []
300 }
301 ]
302 }
303 ],
304 "parse_vsets" : [],
305 "deparsers" : [
306 {
307 "name" : "deparser",
308 "id" : 0,
309 "source_info" : {
310 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200311 "line" : 304,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700312 "column" : 8,
313 "source_fragment" : "c_deparser"
314 },
315 "order" : ["packet_in", "ethernet", "my_tunnel", "ipv4"]
316 }
317 ],
318 "meter_arrays" : [],
319 "counter_arrays" : [
320 {
321 "name" : "c_ingress.tx_port_counter",
322 "id" : 0,
323 "source_info" : {
324 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200325 "line" : 152,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700326 "column" : 48,
327 "source_fragment" : "tx_port_counter"
328 },
329 "size" : 255,
330 "is_direct" : false
331 },
332 {
333 "name" : "c_ingress.rx_port_counter",
334 "id" : 1,
335 "source_info" : {
336 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200337 "line" : 153,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700338 "column" : 48,
339 "source_fragment" : "rx_port_counter"
340 },
341 "size" : 255,
342 "is_direct" : false
343 },
344 {
345 "name" : "c_ingress.l2_fwd_counter",
346 "id" : 2,
347 "is_direct" : true,
348 "binding" : "c_ingress.t_l2_fwd"
349 }
350 ],
351 "register_arrays" : [],
352 "calculations" : [],
353 "learn_lists" : [],
354 "actions" : [
355 {
356 "name" : "NoAction",
357 "id" : 0,
358 "runtime_data" : [],
359 "primitives" : []
360 },
361 {
362 "name" : "c_ingress.send_to_cpu",
363 "id" : 1,
364 "runtime_data" : [],
365 "primitives" : [
366 {
367 "op" : "assign",
368 "parameters" : [
369 {
370 "type" : "field",
371 "value" : ["standard_metadata", "egress_spec"]
372 },
373 {
374 "type" : "hexstr",
375 "value" : "0x00ff"
376 }
377 ],
378 "source_info" : {
379 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200380 "line" : 35,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700381 "column" : 24,
382 "source_fragment" : "255; ..."
383 }
384 },
385 {
386 "op" : "add_header",
387 "parameters" : [
388 {
389 "type" : "header",
390 "value" : "packet_in"
391 }
392 ],
393 "source_info" : {
394 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200395 "line" : 160,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700396 "column" : 8,
397 "source_fragment" : "hdr.packet_in.setValid()"
398 }
399 },
400 {
401 "op" : "assign",
402 "parameters" : [
403 {
404 "type" : "field",
405 "value" : ["packet_in", "ingress_port"]
406 },
407 {
408 "type" : "field",
409 "value" : ["standard_metadata", "ingress_port"]
410 }
411 ],
412 "source_info" : {
413 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200414 "line" : 161,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700415 "column" : 8,
416 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
417 }
418 }
419 ]
420 },
421 {
422 "name" : "c_ingress.set_out_port",
423 "id" : 2,
424 "runtime_data" : [
425 {
426 "name" : "port",
427 "bitwidth" : 9
428 }
429 ],
430 "primitives" : [
431 {
432 "op" : "assign",
433 "parameters" : [
434 {
435 "type" : "field",
436 "value" : ["standard_metadata", "egress_spec"]
437 },
438 {
439 "type" : "runtime_data",
440 "value" : 0
441 }
442 ],
443 "source_info" : {
444 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200445 "line" : 167,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700446 "column" : 8,
447 "source_fragment" : "standard_metadata.egress_spec = port"
448 }
449 }
450 ]
451 },
452 {
453 "name" : "c_ingress.set_out_port",
454 "id" : 3,
455 "runtime_data" : [
456 {
457 "name" : "port",
458 "bitwidth" : 9
459 }
460 ],
461 "primitives" : [
462 {
463 "op" : "assign",
464 "parameters" : [
465 {
466 "type" : "field",
467 "value" : ["standard_metadata", "egress_spec"]
468 },
469 {
470 "type" : "runtime_data",
471 "value" : 0
472 }
473 ],
474 "source_info" : {
475 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200476 "line" : 167,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700477 "column" : 8,
478 "source_fragment" : "standard_metadata.egress_spec = port"
479 }
480 }
481 ]
482 },
483 {
484 "name" : "c_ingress._drop",
485 "id" : 4,
486 "runtime_data" : [],
487 "primitives" : [
488 {
489 "op" : "drop",
490 "parameters" : [],
491 "source_info" : {
492 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200493 "line" : 171,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700494 "column" : 8,
495 "source_fragment" : "mark_to_drop()"
496 }
497 }
498 ]
499 },
500 {
501 "name" : "c_ingress._drop",
502 "id" : 5,
503 "runtime_data" : [],
504 "primitives" : [
505 {
506 "op" : "drop",
507 "parameters" : [],
508 "source_info" : {
509 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200510 "line" : 171,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700511 "column" : 8,
512 "source_fragment" : "mark_to_drop()"
513 }
514 }
515 ]
516 },
517 {
518 "name" : "c_ingress._drop",
519 "id" : 6,
520 "runtime_data" : [],
521 "primitives" : [
522 {
523 "op" : "drop",
524 "parameters" : [],
525 "source_info" : {
526 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200527 "line" : 171,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700528 "column" : 8,
529 "source_fragment" : "mark_to_drop()"
530 }
531 }
532 ]
533 },
534 {
535 "name" : "c_ingress.my_tunnel_ingress",
536 "id" : 7,
537 "runtime_data" : [
538 {
539 "name" : "tun_id",
540 "bitwidth" : 32
541 }
542 ],
543 "primitives" : [
544 {
545 "op" : "add_header",
546 "parameters" : [
547 {
548 "type" : "header",
549 "value" : "my_tunnel"
550 }
551 ],
552 "source_info" : {
553 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200554 "line" : 175,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700555 "column" : 8,
556 "source_fragment" : "hdr.my_tunnel.setValid()"
557 }
558 },
559 {
560 "op" : "assign",
561 "parameters" : [
562 {
563 "type" : "field",
564 "value" : ["my_tunnel", "tun_id"]
565 },
566 {
567 "type" : "runtime_data",
568 "value" : 0
569 }
570 ],
571 "source_info" : {
572 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200573 "line" : 176,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700574 "column" : 8,
575 "source_fragment" : "hdr.my_tunnel.tun_id = tun_id"
576 }
577 },
578 {
579 "op" : "assign",
580 "parameters" : [
581 {
582 "type" : "field",
583 "value" : ["my_tunnel", "proto_id"]
584 },
585 {
586 "type" : "field",
587 "value" : ["ethernet", "ether_type"]
588 }
589 ],
590 "source_info" : {
591 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200592 "line" : 177,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700593 "column" : 8,
594 "source_fragment" : "hdr.my_tunnel.proto_id = hdr.ethernet.ether_type"
595 }
596 },
597 {
598 "op" : "assign",
599 "parameters" : [
600 {
601 "type" : "field",
602 "value" : ["ethernet", "ether_type"]
603 },
604 {
605 "type" : "hexstr",
606 "value" : "0x1212"
607 }
608 ],
609 "source_info" : {
610 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200611 "line" : 31,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700612 "column" : 34,
613 "source_fragment" : "0x1212; ..."
614 }
615 }
616 ]
617 },
618 {
619 "name" : "c_ingress.my_tunnel_egress",
620 "id" : 8,
621 "runtime_data" : [
622 {
623 "name" : "port",
624 "bitwidth" : 9
625 }
626 ],
627 "primitives" : [
628 {
629 "op" : "assign",
630 "parameters" : [
631 {
632 "type" : "field",
633 "value" : ["standard_metadata", "egress_spec"]
634 },
635 {
636 "type" : "runtime_data",
637 "value" : 0
638 }
639 ],
640 "source_info" : {
641 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200642 "line" : 182,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700643 "column" : 8,
644 "source_fragment" : "standard_metadata.egress_spec = port"
645 }
646 },
647 {
648 "op" : "assign",
649 "parameters" : [
650 {
651 "type" : "field",
652 "value" : ["ethernet", "ether_type"]
653 },
654 {
655 "type" : "field",
656 "value" : ["my_tunnel", "proto_id"]
657 }
658 ],
659 "source_info" : {
660 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200661 "line" : 183,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700662 "column" : 8,
663 "source_fragment" : "hdr.ethernet.ether_type = hdr.my_tunnel.proto_id"
664 }
665 },
666 {
667 "op" : "remove_header",
668 "parameters" : [
669 {
670 "type" : "header",
671 "value" : "my_tunnel"
672 }
673 ],
674 "source_info" : {
675 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200676 "line" : 184,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700677 "column" : 8,
678 "source_fragment" : "hdr.my_tunnel.setInvalid()"
679 }
680 }
681 ]
682 },
683 {
684 "name" : "act",
685 "id" : 9,
686 "runtime_data" : [],
687 "primitives" : [
688 {
689 "op" : "assign",
690 "parameters" : [
691 {
692 "type" : "field",
693 "value" : ["standard_metadata", "egress_spec"]
694 },
695 {
696 "type" : "field",
697 "value" : ["packet_out", "egress_port"]
698 }
699 ],
700 "source_info" : {
701 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200702 "line" : 239,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700703 "column" : 12,
704 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
705 }
706 },
707 {
708 "op" : "remove_header",
709 "parameters" : [
710 {
711 "type" : "header",
712 "value" : "packet_out"
713 }
714 ],
715 "source_info" : {
716 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200717 "line" : 240,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700718 "column" : 12,
719 "source_fragment" : "hdr.packet_out.setInvalid()"
720 }
721 }
722 ]
723 },
724 {
725 "name" : "act_0",
726 "id" : 10,
727 "runtime_data" : [],
728 "primitives" : [
729 {
730 "op" : "assign",
731 "parameters" : [
732 {
733 "type" : "field",
734 "value" : ["scalars", "tmp_0"]
735 },
736 {
737 "type" : "expression",
738 "value" : {
739 "type" : "expression",
740 "value" : {
741 "op" : "b2d",
742 "left" : null,
743 "right" : {
744 "type" : "bool",
745 "value" : true
746 }
747 }
748 }
749 }
750 ]
751 }
752 ]
753 },
754 {
755 "name" : "act_1",
756 "id" : 11,
757 "runtime_data" : [],
758 "primitives" : [
759 {
760 "op" : "assign",
761 "parameters" : [
762 {
763 "type" : "field",
764 "value" : ["scalars", "tmp_0"]
765 },
766 {
767 "type" : "expression",
768 "value" : {
769 "type" : "expression",
770 "value" : {
771 "op" : "b2d",
772 "left" : null,
773 "right" : {
774 "type" : "bool",
775 "value" : false
776 }
777 }
778 }
779 }
780 ]
781 }
782 ]
783 },
784 {
785 "name" : "act_2",
786 "id" : 12,
787 "runtime_data" : [],
788 "primitives" : [
789 {
790 "op" : "assign",
791 "parameters" : [
792 {
793 "type" : "field",
794 "value" : ["scalars", "hasReturned_0"]
795 },
796 {
797 "type" : "expression",
798 "value" : {
799 "type" : "expression",
800 "value" : {
801 "op" : "b2d",
802 "left" : null,
803 "right" : {
804 "type" : "bool",
805 "value" : true
806 }
807 }
808 }
809 }
810 ],
811 "source_info" : {
812 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200813 "line" : 248,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700814 "column" : 16,
815 "source_fragment" : "return"
816 }
817 }
818 ]
819 },
820 {
821 "name" : "act_3",
822 "id" : 13,
823 "runtime_data" : [],
824 "primitives" : [
825 {
826 "op" : "assign",
827 "parameters" : [
828 {
829 "type" : "field",
830 "value" : ["scalars", "hasReturned_0"]
831 },
832 {
833 "type" : "expression",
834 "value" : {
835 "type" : "expression",
836 "value" : {
837 "op" : "b2d",
838 "left" : null,
839 "right" : {
840 "type" : "bool",
841 "value" : false
842 }
843 }
844 }
845 }
846 ]
847 }
848 ]
849 },
850 {
851 "name" : "act_4",
852 "id" : 14,
853 "runtime_data" : [],
854 "primitives" : [
855 {
856 "op" : "assign",
857 "parameters" : [
858 {
859 "type" : "field",
860 "value" : ["scalars", "tmp"]
861 },
862 {
863 "type" : "expression",
864 "value" : {
865 "type" : "expression",
866 "value" : {
867 "op" : "&",
868 "left" : {
869 "type" : "field",
870 "value" : ["standard_metadata", "egress_spec"]
871 },
872 "right" : {
873 "type" : "hexstr",
874 "value" : "0xffffffff"
875 }
876 }
877 }
878 }
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200879 ],
880 "source_info" : {
881 "filename" : "mytunnel.p4",
882 "line" : 264,
883 "column" : 34,
884 "source_fragment" : "(bit<32>) standard_metadata.egress_spec"
885 }
Carmelo Cascone700648c2018-04-11 12:02:16 -0700886 },
887 {
888 "op" : "count",
889 "parameters" : [
890 {
891 "type" : "counter_array",
892 "value" : "c_ingress.tx_port_counter"
893 },
894 {
895 "type" : "field",
896 "value" : ["scalars", "tmp"]
897 }
898 ],
899 "source_info" : {
900 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200901 "line" : 264,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700902 "column" : 12,
903 "source_fragment" : "tx_port_counter.count((bit<32>) standard_metadata.egress_spec)"
904 }
905 }
906 ]
907 },
908 {
909 "name" : "act_5",
910 "id" : 15,
911 "runtime_data" : [],
912 "primitives" : [
913 {
914 "op" : "assign",
915 "parameters" : [
916 {
917 "type" : "field",
918 "value" : ["scalars", "tmp_1"]
919 },
920 {
921 "type" : "expression",
922 "value" : {
923 "type" : "expression",
924 "value" : {
925 "op" : "&",
926 "left" : {
927 "type" : "field",
928 "value" : ["standard_metadata", "ingress_port"]
929 },
930 "right" : {
931 "type" : "hexstr",
932 "value" : "0xffffffff"
933 }
934 }
935 }
936 }
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200937 ],
938 "source_info" : {
939 "filename" : "mytunnel.p4",
940 "line" : 267,
941 "column" : 34,
942 "source_fragment" : "(bit<32>) standard_metadata.ingress_port"
943 }
Carmelo Cascone700648c2018-04-11 12:02:16 -0700944 },
945 {
946 "op" : "count",
947 "parameters" : [
948 {
949 "type" : "counter_array",
950 "value" : "c_ingress.rx_port_counter"
951 },
952 {
953 "type" : "field",
954 "value" : ["scalars", "tmp_1"]
955 }
956 ],
957 "source_info" : {
958 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200959 "line" : 267,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700960 "column" : 12,
961 "source_fragment" : "rx_port_counter.count((bit<32>) standard_metadata.ingress_port)"
962 }
963 }
964 ]
965 }
966 ],
967 "pipelines" : [
968 {
969 "name" : "ingress",
970 "id" : 0,
971 "source_info" : {
972 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +0200973 "line" : 146,
Carmelo Cascone700648c2018-04-11 12:02:16 -0700974 "column" : 8,
975 "source_fragment" : "c_ingress"
976 },
977 "init_table" : "tbl_act",
978 "tables" : [
979 {
980 "name" : "tbl_act",
981 "id" : 0,
982 "key" : [],
983 "match_type" : "exact",
984 "type" : "simple",
985 "max_size" : 1024,
986 "with_counters" : false,
987 "support_timeout" : false,
988 "direct_meters" : null,
989 "action_ids" : [13],
990 "actions" : ["act_3"],
991 "base_default_next" : "node_3",
992 "next_tables" : {
993 "act_3" : "node_3"
994 },
995 "default_entry" : {
996 "action_id" : 13,
997 "action_const" : true,
998 "action_data" : [],
999 "action_entry_const" : true
1000 }
1001 },
1002 {
1003 "name" : "tbl_act_0",
1004 "id" : 1,
1005 "key" : [],
1006 "match_type" : "exact",
1007 "type" : "simple",
1008 "max_size" : 1024,
1009 "with_counters" : false,
1010 "support_timeout" : false,
1011 "direct_meters" : null,
1012 "action_ids" : [9],
1013 "actions" : ["act"],
1014 "base_default_next" : "node_15",
1015 "next_tables" : {
1016 "act" : "node_15"
1017 },
1018 "default_entry" : {
1019 "action_id" : 9,
1020 "action_const" : true,
1021 "action_data" : [],
1022 "action_entry_const" : true
1023 }
1024 },
1025 {
1026 "name" : "c_ingress.t_l2_fwd",
1027 "id" : 2,
1028 "source_info" : {
1029 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001030 "line" : 191,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001031 "column" : 10,
1032 "source_fragment" : "t_l2_fwd"
1033 },
1034 "key" : [
1035 {
1036 "match_type" : "ternary",
1037 "name" : "standard_metadata.ingress_port",
1038 "target" : ["standard_metadata", "ingress_port"],
1039 "mask" : null
1040 },
1041 {
1042 "match_type" : "ternary",
1043 "name" : "hdr.ethernet.dst_addr",
1044 "target" : ["ethernet", "dst_addr"],
1045 "mask" : null
1046 },
1047 {
1048 "match_type" : "ternary",
1049 "name" : "hdr.ethernet.src_addr",
1050 "target" : ["ethernet", "src_addr"],
1051 "mask" : null
1052 },
1053 {
1054 "match_type" : "ternary",
1055 "name" : "hdr.ethernet.ether_type",
1056 "target" : ["ethernet", "ether_type"],
1057 "mask" : null
1058 }
1059 ],
1060 "match_type" : "ternary",
1061 "type" : "simple",
1062 "max_size" : 1024,
1063 "with_counters" : true,
1064 "support_timeout" : false,
1065 "direct_meters" : null,
1066 "action_ids" : [2, 1, 4, 0],
1067 "actions" : ["c_ingress.set_out_port", "c_ingress.send_to_cpu", "c_ingress._drop", "NoAction"],
1068 "base_default_next" : null,
1069 "next_tables" : {
1070 "__HIT__" : "tbl_act_1",
1071 "__MISS__" : "tbl_act_2"
1072 },
1073 "default_entry" : {
1074 "action_id" : 0,
1075 "action_const" : false,
1076 "action_data" : [],
1077 "action_entry_const" : false
1078 }
1079 },
1080 {
1081 "name" : "tbl_act_1",
1082 "id" : 3,
1083 "key" : [],
1084 "match_type" : "exact",
1085 "type" : "simple",
1086 "max_size" : 1024,
1087 "with_counters" : false,
1088 "support_timeout" : false,
1089 "direct_meters" : null,
1090 "action_ids" : [10],
1091 "actions" : ["act_0"],
1092 "base_default_next" : "node_8",
1093 "next_tables" : {
1094 "act_0" : "node_8"
1095 },
1096 "default_entry" : {
1097 "action_id" : 10,
1098 "action_const" : true,
1099 "action_data" : [],
1100 "action_entry_const" : true
1101 }
1102 },
1103 {
1104 "name" : "tbl_act_2",
1105 "id" : 4,
1106 "key" : [],
1107 "match_type" : "exact",
1108 "type" : "simple",
1109 "max_size" : 1024,
1110 "with_counters" : false,
1111 "support_timeout" : false,
1112 "direct_meters" : null,
1113 "action_ids" : [11],
1114 "actions" : ["act_1"],
1115 "base_default_next" : "node_8",
1116 "next_tables" : {
1117 "act_1" : "node_8"
1118 },
1119 "default_entry" : {
1120 "action_id" : 11,
1121 "action_const" : true,
1122 "action_data" : [],
1123 "action_entry_const" : true
1124 }
1125 },
1126 {
1127 "name" : "tbl_act_3",
1128 "id" : 5,
1129 "key" : [],
1130 "match_type" : "exact",
1131 "type" : "simple",
1132 "max_size" : 1024,
1133 "with_counters" : false,
1134 "support_timeout" : false,
1135 "direct_meters" : null,
1136 "action_ids" : [12],
1137 "actions" : ["act_2"],
1138 "base_default_next" : "node_10",
1139 "next_tables" : {
1140 "act_2" : "node_10"
1141 },
1142 "default_entry" : {
1143 "action_id" : 12,
1144 "action_const" : true,
1145 "action_data" : [],
1146 "action_entry_const" : true
1147 }
1148 },
1149 {
1150 "name" : "c_ingress.t_tunnel_ingress",
1151 "id" : 6,
1152 "source_info" : {
1153 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001154 "line" : 208,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001155 "column" : 10,
1156 "source_fragment" : "t_tunnel_ingress"
1157 },
1158 "key" : [
1159 {
1160 "match_type" : "lpm",
1161 "name" : "hdr.ipv4.dst_addr",
1162 "target" : ["ipv4", "dst_addr"],
1163 "mask" : null
1164 }
1165 ],
1166 "match_type" : "lpm",
1167 "type" : "simple",
1168 "max_size" : 1024,
1169 "with_counters" : false,
1170 "support_timeout" : false,
1171 "direct_meters" : null,
1172 "action_ids" : [7, 5],
1173 "actions" : ["c_ingress.my_tunnel_ingress", "c_ingress._drop"],
1174 "base_default_next" : "node_13",
1175 "next_tables" : {
1176 "c_ingress.my_tunnel_ingress" : "node_13",
1177 "c_ingress._drop" : "node_13"
1178 },
1179 "default_entry" : {
1180 "action_id" : 5,
1181 "action_const" : false,
1182 "action_data" : [],
1183 "action_entry_const" : false
1184 }
1185 },
1186 {
1187 "name" : "c_ingress.t_tunnel_fwd",
1188 "id" : 7,
1189 "source_info" : {
1190 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001191 "line" : 219,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001192 "column" : 10,
1193 "source_fragment" : "t_tunnel_fwd"
1194 },
1195 "key" : [
1196 {
1197 "match_type" : "exact",
1198 "name" : "hdr.my_tunnel.tun_id",
1199 "target" : ["my_tunnel", "tun_id"],
1200 "mask" : null
1201 }
1202 ],
1203 "match_type" : "exact",
1204 "type" : "simple",
1205 "max_size" : 1024,
1206 "with_counters" : false,
1207 "support_timeout" : false,
1208 "direct_meters" : null,
1209 "action_ids" : [3, 8, 6],
1210 "actions" : ["c_ingress.set_out_port", "c_ingress.my_tunnel_egress", "c_ingress._drop"],
1211 "base_default_next" : "node_15",
1212 "next_tables" : {
1213 "c_ingress.set_out_port" : "node_15",
1214 "c_ingress.my_tunnel_egress" : "node_15",
1215 "c_ingress._drop" : "node_15"
1216 },
1217 "default_entry" : {
1218 "action_id" : 6,
1219 "action_const" : false,
1220 "action_data" : [],
1221 "action_entry_const" : false
1222 }
1223 },
1224 {
1225 "name" : "tbl_act_4",
1226 "id" : 8,
1227 "key" : [],
1228 "match_type" : "exact",
1229 "type" : "simple",
1230 "max_size" : 1024,
1231 "with_counters" : false,
1232 "support_timeout" : false,
1233 "direct_meters" : null,
1234 "action_ids" : [14],
1235 "actions" : ["act_4"],
1236 "base_default_next" : "node_18",
1237 "next_tables" : {
1238 "act_4" : "node_18"
1239 },
1240 "default_entry" : {
1241 "action_id" : 14,
1242 "action_const" : true,
1243 "action_data" : [],
1244 "action_entry_const" : true
1245 }
1246 },
1247 {
1248 "name" : "tbl_act_5",
1249 "id" : 9,
1250 "key" : [],
1251 "match_type" : "exact",
1252 "type" : "simple",
1253 "max_size" : 1024,
1254 "with_counters" : false,
1255 "support_timeout" : false,
1256 "direct_meters" : null,
1257 "action_ids" : [15],
1258 "actions" : ["act_5"],
1259 "base_default_next" : null,
1260 "next_tables" : {
1261 "act_5" : null
1262 },
1263 "default_entry" : {
1264 "action_id" : 15,
1265 "action_const" : true,
1266 "action_data" : [],
1267 "action_entry_const" : true
1268 }
1269 }
1270 ],
1271 "action_profiles" : [],
1272 "conditionals" : [
1273 {
1274 "name" : "node_3",
1275 "id" : 0,
1276 "source_info" : {
1277 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001278 "line" : 234,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001279 "column" : 12,
1280 "source_fragment" : "standard_metadata.ingress_port == CPU_PORT"
1281 },
1282 "expression" : {
1283 "type" : "expression",
1284 "value" : {
1285 "op" : "==",
1286 "left" : {
1287 "type" : "field",
1288 "value" : ["standard_metadata", "ingress_port"]
1289 },
1290 "right" : {
1291 "type" : "hexstr",
1292 "value" : "0x00ff"
1293 }
1294 }
1295 },
1296 "true_next" : "tbl_act_0",
1297 "false_next" : "c_ingress.t_l2_fwd"
1298 },
1299 {
1300 "name" : "node_8",
1301 "id" : 1,
1302 "expression" : {
1303 "type" : "expression",
1304 "value" : {
1305 "op" : "d2b",
1306 "left" : null,
1307 "right" : {
1308 "type" : "field",
1309 "value" : ["scalars", "tmp_0"]
1310 }
1311 }
1312 },
1313 "true_next" : "tbl_act_3",
1314 "false_next" : "node_10"
1315 },
1316 {
1317 "name" : "node_10",
1318 "id" : 2,
1319 "expression" : {
1320 "type" : "expression",
1321 "value" : {
1322 "op" : "not",
1323 "left" : null,
1324 "right" : {
1325 "type" : "expression",
1326 "value" : {
1327 "op" : "d2b",
1328 "left" : null,
1329 "right" : {
1330 "type" : "field",
1331 "value" : ["scalars", "hasReturned_0"]
1332 }
1333 }
1334 }
1335 }
1336 },
1337 "true_next" : "node_11",
1338 "false_next" : "node_15"
1339 },
1340 {
1341 "name" : "node_11",
1342 "id" : 3,
1343 "source_info" : {
1344 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001345 "line" : 251,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001346 "column" : 16,
1347 "source_fragment" : "hdr.ipv4.isValid() && !hdr.my_tunnel.isValid()"
1348 },
1349 "expression" : {
1350 "type" : "expression",
1351 "value" : {
1352 "op" : "and",
1353 "left" : {
1354 "type" : "expression",
1355 "value" : {
1356 "op" : "d2b",
1357 "left" : null,
1358 "right" : {
1359 "type" : "field",
1360 "value" : ["ipv4", "$valid$"]
1361 }
1362 }
1363 },
1364 "right" : {
1365 "type" : "expression",
1366 "value" : {
1367 "op" : "not",
1368 "left" : null,
1369 "right" : {
1370 "type" : "expression",
1371 "value" : {
1372 "op" : "d2b",
1373 "left" : null,
1374 "right" : {
1375 "type" : "field",
1376 "value" : ["my_tunnel", "$valid$"]
1377 }
1378 }
1379 }
1380 }
1381 }
1382 }
1383 },
1384 "true_next" : "c_ingress.t_tunnel_ingress",
1385 "false_next" : "node_13"
1386 },
1387 {
1388 "name" : "node_13",
1389 "id" : 4,
1390 "source_info" : {
1391 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001392 "line" : 256,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001393 "column" : 16,
1394 "source_fragment" : "hdr.my_tunnel.isValid()"
1395 },
1396 "expression" : {
1397 "type" : "expression",
1398 "value" : {
1399 "op" : "d2b",
1400 "left" : null,
1401 "right" : {
1402 "type" : "field",
1403 "value" : ["my_tunnel", "$valid$"]
1404 }
1405 }
1406 },
1407 "true_next" : "c_ingress.t_tunnel_fwd",
1408 "false_next" : "node_15"
1409 },
1410 {
1411 "name" : "node_15",
1412 "id" : 5,
1413 "expression" : {
1414 "type" : "expression",
1415 "value" : {
1416 "op" : "not",
1417 "left" : null,
1418 "right" : {
1419 "type" : "expression",
1420 "value" : {
1421 "op" : "d2b",
1422 "left" : null,
1423 "right" : {
1424 "type" : "field",
1425 "value" : ["scalars", "hasReturned_0"]
1426 }
1427 }
1428 }
1429 }
1430 },
1431 "false_next" : null,
1432 "true_next" : "node_16"
1433 },
1434 {
1435 "name" : "node_16",
1436 "id" : 6,
1437 "source_info" : {
1438 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001439 "line" : 263,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001440 "column" : 12,
1441 "source_fragment" : "standard_metadata.egress_spec < 255"
1442 },
1443 "expression" : {
1444 "type" : "expression",
1445 "value" : {
1446 "op" : "<",
1447 "left" : {
1448 "type" : "field",
1449 "value" : ["standard_metadata", "egress_spec"]
1450 },
1451 "right" : {
1452 "type" : "hexstr",
1453 "value" : "0x00ff"
1454 }
1455 }
1456 },
1457 "true_next" : "tbl_act_4",
1458 "false_next" : "node_18"
1459 },
1460 {
1461 "name" : "node_18",
1462 "id" : 7,
1463 "source_info" : {
1464 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001465 "line" : 266,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001466 "column" : 12,
1467 "source_fragment" : "standard_metadata.ingress_port < 255"
1468 },
1469 "expression" : {
1470 "type" : "expression",
1471 "value" : {
1472 "op" : "<",
1473 "left" : {
1474 "type" : "field",
1475 "value" : ["standard_metadata", "ingress_port"]
1476 },
1477 "right" : {
1478 "type" : "hexstr",
1479 "value" : "0x00ff"
1480 }
1481 }
1482 },
1483 "false_next" : null,
1484 "true_next" : "tbl_act_5"
1485 }
1486 ]
1487 },
1488 {
1489 "name" : "egress",
1490 "id" : 1,
1491 "source_info" : {
1492 "filename" : "mytunnel.p4",
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001493 "line" : 276,
Carmelo Cascone700648c2018-04-11 12:02:16 -07001494 "column" : 8,
1495 "source_fragment" : "c_egress"
1496 },
1497 "init_table" : null,
1498 "tables" : [],
1499 "action_profiles" : [],
1500 "conditionals" : []
1501 }
1502 ],
1503 "checksums" : [],
1504 "force_arith" : [],
1505 "extern_instances" : [],
1506 "field_aliases" : [
1507 [
1508 "queueing_metadata.enq_timestamp",
1509 ["standard_metadata", "enq_timestamp"]
1510 ],
1511 [
1512 "queueing_metadata.enq_qdepth",
1513 ["standard_metadata", "enq_qdepth"]
1514 ],
1515 [
1516 "queueing_metadata.deq_timedelta",
1517 ["standard_metadata", "deq_timedelta"]
1518 ],
1519 [
1520 "queueing_metadata.deq_qdepth",
1521 ["standard_metadata", "deq_qdepth"]
1522 ],
1523 [
1524 "intrinsic_metadata.ingress_global_timestamp",
1525 ["standard_metadata", "ingress_global_timestamp"]
1526 ],
1527 [
1528 "intrinsic_metadata.egress_global_timestamp",
1529 ["standard_metadata", "egress_global_timestamp"]
1530 ],
1531 [
1532 "intrinsic_metadata.lf_field_list",
1533 ["standard_metadata", "lf_field_list"]
1534 ],
1535 [
1536 "intrinsic_metadata.mcast_grp",
1537 ["standard_metadata", "mcast_grp"]
1538 ],
1539 [
1540 "intrinsic_metadata.resubmit_flag",
1541 ["standard_metadata", "resubmit_flag"]
1542 ],
1543 [
1544 "intrinsic_metadata.egress_rid",
1545 ["standard_metadata", "egress_rid"]
1546 ],
1547 [
1548 "intrinsic_metadata.recirculate_flag",
1549 ["standard_metadata", "recirculate_flag"]
1550 ]
Carmelo Cascone4bf427f2018-06-19 23:23:32 +02001551 ],
1552 "program" : "mytunnel.p4",
1553 "__meta__" : {
1554 "version" : [2, 18],
1555 "compiler" : "https://github.com/p4lang/p4c"
1556 }
Carmelo Cascone700648c2018-04-11 12:02:16 -07001557}