blob: e9378ef1356ccbe09f1cc190c1575aaf4ae7a5a6 [file] [log] [blame]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001{
2 "program" : "basic.p4",
3 "__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" : [
12 ["tmp", 32, false],
13 ["tmp_0", 32, false],
Frank Wangd7e3b4b2017-09-24 13:37:54 +090014 ["port_meters_ingress_ingress_color_0", 32, false],
15 ["host_meter_control_tmp_1", 1, false],
16 ["host_meter_control_tmp_2", 1, false],
17 ["tmp_1", 32, false],
18 ["tmp_2", 32, false],
19 ["port_meters_egress_egress_color_0", 32, false],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070020 ["local_metadata_t.l4_src_port", 16, false],
21 ["local_metadata_t.l4_dst_port", 16, false],
Frank Wangd7e3b4b2017-09-24 13:37:54 +090022 ["local_metadata_t.next_hop_id", 16, false],
23 ["local_metadata_t.meter_tag", 32, false],
24 ["_padding_2", 6, false]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070025 ]
26 },
27 {
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -080028 "name" : "packet_out_header_t",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070029 "id" : 1,
30 "fields" : [
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -080031 ["egress_port", 9, false],
32 ["_padding", 7, false]
33 ]
34 },
35 {
36 "name" : "packet_in_header_t",
37 "id" : 2,
38 "fields" : [
39 ["ingress_port", 9, false],
40 ["_padding_0", 7, false]
41 ]
42 },
43 {
44 "name" : "ethernet_t",
45 "id" : 3,
46 "fields" : [
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070047 ["dst_addr", 48, false],
48 ["src_addr", 48, false],
49 ["ether_type", 16, false]
50 ]
51 },
52 {
53 "name" : "ipv4_t",
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -080054 "id" : 4,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070055 "fields" : [
56 ["version", 4, false],
57 ["ihl", 4, false],
Jonghwan Hyun8be03392017-12-04 15:48:44 -080058 ["dscp", 6, false],
59 ["ecn", 2, false],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070060 ["len", 16, false],
61 ["identification", 16, false],
62 ["flags", 3, false],
63 ["frag_offset", 13, false],
64 ["ttl", 8, false],
65 ["protocol", 8, false],
66 ["hdr_checksum", 16, false],
67 ["src_addr", 32, false],
68 ["dst_addr", 32, false]
69 ]
70 },
71 {
72 "name" : "tcp_t",
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -080073 "id" : 5,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070074 "fields" : [
75 ["src_port", 16, false],
76 ["dst_port", 16, false],
77 ["seq_no", 32, false],
78 ["ack_no", 32, false],
79 ["data_offset", 4, false],
80 ["res", 3, false],
81 ["ecn", 3, false],
82 ["ctrl", 6, false],
83 ["window", 16, false],
84 ["checksum", 16, false],
85 ["urgent_ptr", 16, false]
86 ]
87 },
88 {
89 "name" : "udp_t",
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -080090 "id" : 6,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070091 "fields" : [
92 ["src_port", 16, false],
93 ["dst_port", 16, false],
94 ["length_", 16, false],
95 ["checksum", 16, false]
96 ]
97 },
98 {
Carmelo Casconeca94bcf2017-10-27 14:16:59 -070099 "name" : "standard_metadata",
100 "id" : 7,
101 "fields" : [
102 ["ingress_port", 9, false],
103 ["egress_spec", 9, false],
104 ["egress_port", 9, false],
105 ["clone_spec", 32, false],
106 ["instance_type", 32, false],
107 ["drop", 1, false],
108 ["recirculate_port", 16, false],
109 ["packet_length", 32, false],
110 ["enq_timestamp", 32, false],
111 ["enq_qdepth", 19, false],
112 ["deq_timedelta", 32, false],
113 ["deq_qdepth", 19, false],
114 ["ingress_global_timestamp", 48, false],
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700115 ["egress_global_timestamp", 48, false],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700116 ["lf_field_list", 32, false],
117 ["mcast_grp", 16, false],
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700118 ["resubmit_flag", 32, false],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700119 ["egress_rid", 16, false],
120 ["checksum_error", 1, false],
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700121 ["recirculate_flag", 32, false],
122 ["_padding_1", 5, false]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700123 ]
124 }
125 ],
126 "headers" : [
127 {
128 "name" : "scalars",
129 "id" : 0,
130 "header_type" : "scalars_0",
131 "metadata" : true,
132 "pi_omit" : true
133 },
134 {
135 "name" : "standard_metadata",
136 "id" : 1,
137 "header_type" : "standard_metadata",
138 "metadata" : true,
139 "pi_omit" : true
140 },
141 {
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700142 "name" : "packet_out",
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -0800143 "id" : 2,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700144 "header_type" : "packet_out_header_t",
145 "metadata" : false,
146 "pi_omit" : true
147 },
148 {
149 "name" : "packet_in",
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -0800150 "id" : 3,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700151 "header_type" : "packet_in_header_t",
152 "metadata" : false,
153 "pi_omit" : true
Jonghwan Hyun4a9a6712017-11-13 14:43:55 -0800154 },
155 {
156 "name" : "ethernet",
157 "id" : 4,
158 "header_type" : "ethernet_t",
159 "metadata" : false,
160 "pi_omit" : true
161 },
162 {
163 "name" : "ipv4",
164 "id" : 5,
165 "header_type" : "ipv4_t",
166 "metadata" : false,
167 "pi_omit" : true
168 },
169 {
170 "name" : "tcp",
171 "id" : 6,
172 "header_type" : "tcp_t",
173 "metadata" : false,
174 "pi_omit" : true
175 },
176 {
177 "name" : "udp",
178 "id" : 7,
179 "header_type" : "udp_t",
180 "metadata" : false,
181 "pi_omit" : true
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700182 }
183 ],
184 "header_stacks" : [],
185 "header_union_types" : [],
186 "header_unions" : [],
187 "header_union_stacks" : [],
188 "field_lists" : [],
189 "errors" : [
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900190 ["NoError", 1],
191 ["PacketTooShort", 2],
192 ["NoMatch", 3],
193 ["StackOutOfBounds", 4],
194 ["HeaderTooShort", 5],
195 ["ParserTimeout", 6]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700196 ],
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900197 "enums" : [
198 {
199 "name" : "MeterColor_t",
200 "entries" : [
201 ["GREEN", 0],
202 ["RED", 2],
203 ["YELLOW", 1]
204 ]
205 }
206 ],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700207 "parsers" : [
208 {
209 "name" : "parser",
210 "id" : 0,
211 "init_state" : "start",
212 "parse_states" : [
213 {
214 "name" : "start",
215 "id" : 0,
216 "parser_ops" : [],
217 "transitions" : [
218 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700219 "type" : "hexstr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700220 "value" : "0x00ff",
221 "mask" : null,
222 "next_state" : "parse_packet_out"
223 },
224 {
225 "value" : "default",
226 "mask" : null,
227 "next_state" : "parse_ethernet"
228 }
229 ],
230 "transition_key" : [
231 {
232 "type" : "field",
233 "value" : ["standard_metadata", "ingress_port"]
234 }
235 ]
236 },
237 {
238 "name" : "parse_packet_out",
239 "id" : 1,
240 "parser_ops" : [
241 {
242 "parameters" : [
243 {
244 "type" : "regular",
245 "value" : "packet_out"
246 }
247 ],
248 "op" : "extract"
249 }
250 ],
251 "transitions" : [
252 {
253 "value" : "default",
254 "mask" : null,
255 "next_state" : "parse_ethernet"
256 }
257 ],
258 "transition_key" : []
259 },
260 {
261 "name" : "parse_ethernet",
262 "id" : 2,
263 "parser_ops" : [
264 {
265 "parameters" : [
266 {
267 "type" : "regular",
268 "value" : "ethernet"
269 }
270 ],
271 "op" : "extract"
272 }
273 ],
274 "transitions" : [
275 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700276 "type" : "hexstr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700277 "value" : "0x0800",
278 "mask" : null,
279 "next_state" : "parse_ipv4"
280 },
281 {
282 "value" : "default",
283 "mask" : null,
284 "next_state" : null
285 }
286 ],
287 "transition_key" : [
288 {
289 "type" : "field",
290 "value" : ["ethernet", "ether_type"]
291 }
292 ]
293 },
294 {
295 "name" : "parse_ipv4",
296 "id" : 3,
297 "parser_ops" : [
298 {
299 "parameters" : [
300 {
301 "type" : "regular",
302 "value" : "ipv4"
303 }
304 ],
305 "op" : "extract"
306 }
307 ],
308 "transitions" : [
309 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700310 "type" : "hexstr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700311 "value" : "0x06",
312 "mask" : null,
313 "next_state" : "parse_tcp"
314 },
315 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700316 "type" : "hexstr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700317 "value" : "0x11",
318 "mask" : null,
319 "next_state" : "parse_udp"
320 },
321 {
322 "value" : "default",
323 "mask" : null,
324 "next_state" : null
325 }
326 ],
327 "transition_key" : [
328 {
329 "type" : "field",
330 "value" : ["ipv4", "protocol"]
331 }
332 ]
333 },
334 {
335 "name" : "parse_tcp",
336 "id" : 4,
337 "parser_ops" : [
338 {
339 "parameters" : [
340 {
341 "type" : "regular",
342 "value" : "tcp"
343 }
344 ],
345 "op" : "extract"
346 },
347 {
348 "parameters" : [
349 {
350 "type" : "field",
351 "value" : ["scalars", "local_metadata_t.l4_src_port"]
352 },
353 {
354 "type" : "field",
355 "value" : ["tcp", "src_port"]
356 }
357 ],
358 "op" : "set"
359 },
360 {
361 "parameters" : [
362 {
363 "type" : "field",
364 "value" : ["scalars", "local_metadata_t.l4_dst_port"]
365 },
366 {
367 "type" : "field",
368 "value" : ["tcp", "dst_port"]
369 }
370 ],
371 "op" : "set"
372 }
373 ],
374 "transitions" : [
375 {
376 "value" : "default",
377 "mask" : null,
378 "next_state" : null
379 }
380 ],
381 "transition_key" : []
382 },
383 {
384 "name" : "parse_udp",
385 "id" : 5,
386 "parser_ops" : [
387 {
388 "parameters" : [
389 {
390 "type" : "regular",
391 "value" : "udp"
392 }
393 ],
394 "op" : "extract"
395 },
396 {
397 "parameters" : [
398 {
399 "type" : "field",
400 "value" : ["scalars", "local_metadata_t.l4_src_port"]
401 },
402 {
403 "type" : "field",
404 "value" : ["udp", "src_port"]
405 }
406 ],
407 "op" : "set"
408 },
409 {
410 "parameters" : [
411 {
412 "type" : "field",
413 "value" : ["scalars", "local_metadata_t.l4_dst_port"]
414 },
415 {
416 "type" : "field",
417 "value" : ["udp", "dst_port"]
418 }
419 ],
420 "op" : "set"
421 }
422 ],
423 "transitions" : [
424 {
425 "value" : "default",
426 "mask" : null,
427 "next_state" : null
428 }
429 ],
430 "transition_key" : []
431 }
432 ]
433 }
434 ],
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700435 "parse_vsets" : [],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700436 "deparsers" : [
437 {
438 "name" : "deparser",
439 "id" : 0,
440 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900441 "filename" : "include/parsers.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700442 "line" : 72,
443 "column" : 8,
444 "source_fragment" : "deparser"
445 },
446 "order" : ["packet_in", "ethernet", "ipv4", "tcp", "udp"]
447 }
448 ],
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900449 "meter_arrays" : [
450 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700451 "name" : "ingress.port_meters_ingress.ingress_port_meter",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900452 "id" : 0,
453 "source_info" : {
454 "filename" : "include/port_meters.p4",
455 "line" : 23,
456 "column" : 32,
457 "source_fragment" : "ingress_port_meter"
458 },
459 "is_direct" : false,
460 "size" : 511,
461 "rate_count" : 2,
462 "type" : "bytes"
463 },
464 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700465 "name" : "ingress.host_meter_control.host_meter",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900466 "id" : 1,
467 "source_info" : {
468 "filename" : "include/host_meter_table.p4",
469 "line" : 27,
470 "column" : 43,
471 "source_fragment" : "host_meter"
472 },
473 "is_direct" : true,
474 "rate_count" : 2,
475 "type" : "bytes",
476 "size" : 1024,
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700477 "binding" : "ingress.host_meter_control.host_meter_table",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900478 "result_target" : ["scalars", "local_metadata_t.meter_tag"]
479 },
480 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700481 "name" : "egress.port_meters_egress.egress_port_meter",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900482 "id" : 2,
483 "source_info" : {
484 "filename" : "include/port_meters.p4",
485 "line" : 37,
486 "column" : 32,
487 "source_fragment" : "egress_port_meter"
488 },
489 "is_direct" : false,
490 "size" : 511,
491 "rate_count" : 2,
492 "type" : "bytes"
493 }
494 ],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700495 "counter_arrays" : [
496 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700497 "name" : "ingress.port_counters_ingress.ingress_port_counter",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700498 "id" : 0,
499 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900500 "filename" : "include/port_counters.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700501 "line" : 26,
502 "column" : 38,
503 "source_fragment" : "ingress_port_counter"
504 },
505 "size" : 511,
506 "is_direct" : false
507 },
508 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700509 "name" : "ingress.table0_control.table0_counter",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700510 "id" : 1,
511 "is_direct" : true,
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700512 "binding" : "ingress.table0_control.table0"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700513 },
514 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700515 "name" : "ingress.wcmp_control.wcmp_table_counter",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700516 "id" : 2,
517 "is_direct" : true,
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700518 "binding" : "ingress.wcmp_control.wcmp_table"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700519 },
520 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700521 "name" : "egress.port_counters_egress.egress_port_counter",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700522 "id" : 3,
523 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900524 "filename" : "include/port_counters.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700525 "line" : 36,
526 "column" : 38,
527 "source_fragment" : "egress_port_counter"
528 },
529 "size" : 511,
530 "is_direct" : false
531 }
532 ],
533 "register_arrays" : [],
534 "calculations" : [],
535 "learn_lists" : [],
536 "actions" : [
537 {
538 "name" : "set_egress_port",
539 "id" : 0,
540 "runtime_data" : [
541 {
542 "name" : "port",
543 "bitwidth" : 9
544 }
545 ],
546 "primitives" : [
547 {
548 "op" : "assign",
549 "parameters" : [
550 {
551 "type" : "field",
552 "value" : ["standard_metadata", "egress_spec"]
553 },
554 {
555 "type" : "runtime_data",
556 "value" : 0
557 }
558 ],
559 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900560 "filename" : "include/actions.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700561 "line" : 28,
562 "column" : 36,
563 "source_fragment" : "port; ..."
564 }
565 }
566 ]
567 },
568 {
569 "name" : "set_egress_port",
570 "id" : 1,
571 "runtime_data" : [
572 {
573 "name" : "port",
574 "bitwidth" : 9
575 }
576 ],
577 "primitives" : [
578 {
579 "op" : "assign",
580 "parameters" : [
581 {
582 "type" : "field",
583 "value" : ["standard_metadata", "egress_spec"]
584 },
585 {
586 "type" : "runtime_data",
587 "value" : 0
588 }
589 ],
590 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900591 "filename" : "include/actions.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700592 "line" : 28,
593 "column" : 36,
594 "source_fragment" : "port; ..."
595 }
596 }
597 ]
598 },
599 {
600 "name" : "send_to_cpu",
601 "id" : 2,
602 "runtime_data" : [],
603 "primitives" : [
604 {
605 "op" : "assign",
606 "parameters" : [
607 {
608 "type" : "field",
609 "value" : ["standard_metadata", "egress_spec"]
610 },
611 {
612 "type" : "hexstr",
613 "value" : "0x00ff"
614 }
615 ],
616 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900617 "filename" : "include/defines.p4",
618 "line" : 28,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700619 "column" : 24,
620 "source_fragment" : "255; ..."
621 }
622 }
623 ]
624 },
625 {
626 "name" : "_drop",
627 "id" : 3,
628 "runtime_data" : [],
629 "primitives" : [
630 {
631 "op" : "drop",
632 "parameters" : [],
633 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900634 "filename" : "include/actions.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700635 "line" : 32,
636 "column" : 4,
637 "source_fragment" : "mark_to_drop()"
638 }
639 }
640 ]
641 },
642 {
643 "name" : "NoAction",
644 "id" : 4,
645 "runtime_data" : [],
646 "primitives" : []
647 },
648 {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900649 "name" : "NoAction",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700650 "id" : 5,
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900651 "runtime_data" : [],
652 "primitives" : []
653 },
654 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700655 "name" : "ingress.table0_control.set_next_hop_id",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900656 "id" : 6,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700657 "runtime_data" : [
658 {
659 "name" : "next_hop_id",
660 "bitwidth" : 16
661 }
662 ],
663 "primitives" : [
664 {
665 "op" : "assign",
666 "parameters" : [
667 {
668 "type" : "field",
669 "value" : ["scalars", "local_metadata_t.next_hop_id"]
670 },
671 {
672 "type" : "runtime_data",
673 "value" : 0
674 }
675 ],
676 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900677 "filename" : "include/table0.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700678 "line" : 30,
679 "column" : 8,
680 "source_fragment" : "local_metadata.next_hop_id = next_hop_id"
681 }
682 }
683 ]
684 },
685 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700686 "name" : "ingress.host_meter_control.read_meter",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900687 "id" : 7,
688 "runtime_data" : [],
689 "primitives" : []
690 },
691 {
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700692 "name" : "act",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900693 "id" : 8,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700694 "runtime_data" : [],
695 "primitives" : [
696 {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900697 "op" : "drop",
698 "parameters" : [],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700699 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900700 "filename" : "include/port_meters.p4",
701 "line" : 29,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700702 "column" : 12,
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900703 "source_fragment" : "mark_to_drop()"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700704 }
705 }
706 ]
707 },
708 {
709 "name" : "act_0",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900710 "id" : 9,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700711 "runtime_data" : [],
712 "primitives" : [
713 {
714 "op" : "assign",
715 "parameters" : [
716 {
717 "type" : "field",
718 "value" : ["scalars", "tmp"]
719 },
720 {
721 "type" : "expression",
722 "value" : {
723 "type" : "expression",
724 "value" : {
725 "op" : "&",
726 "left" : {
727 "type" : "field",
728 "value" : ["standard_metadata", "ingress_port"]
729 },
730 "right" : {
731 "type" : "hexstr",
732 "value" : "0xffffffff"
733 }
734 }
735 }
736 }
737 ]
738 },
739 {
740 "op" : "count",
741 "parameters" : [
742 {
743 "type" : "counter_array",
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700744 "value" : "ingress.port_counters_ingress.ingress_port_counter"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700745 },
746 {
747 "type" : "field",
748 "value" : ["scalars", "tmp"]
749 }
750 ],
751 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900752 "filename" : "include/port_counters.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700753 "line" : 29,
754 "column" : 8,
755 "source_fragment" : "ingress_port_counter.count((bit<32>) standard_metadata.ingress_port)"
756 }
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700757 },
758 {
759 "op" : "assign",
760 "parameters" : [
761 {
762 "type" : "field",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900763 "value" : ["scalars", "tmp_0"]
764 },
765 {
766 "type" : "expression",
767 "value" : {
768 "type" : "expression",
769 "value" : {
770 "op" : "&",
771 "left" : {
772 "type" : "field",
773 "value" : ["standard_metadata", "ingress_port"]
774 },
775 "right" : {
776 "type" : "hexstr",
777 "value" : "0xffffffff"
778 }
779 }
780 }
781 }
782 ]
783 },
784 {
785 "op" : "execute_meter",
786 "parameters" : [
787 {
788 "type" : "meter_array",
Carmelo Cascone81929aa2018-04-07 01:38:55 -0700789 "value" : "ingress.port_meters_ingress.ingress_port_meter"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700790 },
791 {
792 "type" : "field",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900793 "value" : ["scalars", "tmp_0"]
794 },
795 {
796 "type" : "field",
797 "value" : ["scalars", "port_meters_ingress_ingress_color_0"]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700798 }
799 ],
800 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900801 "filename" : "include/port_meters.p4",
802 "line" : 27,
803 "column" : 8,
804 "source_fragment" : "ingress_port_meter.execute_meter<MeterColor_t>((bit<32>)standard_metadata.ingress_port, ingress_color)"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700805 }
806 }
807 ]
808 },
809 {
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900810 "name" : "act_1",
811 "id" : 10,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -0700812 "runtime_data" : [],
813 "primitives" : [
814 {
815 "op" : "assign",
816 "parameters" : [
817 {
818 "type" : "field",
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900819 "value" : ["standard_metadata", "egress_spec"]
820 },
821 {
822 "type" : "field",
823 "value" : ["packet_out", "egress_port"]
824 }
825 ],
826 "source_info" : {
827 "filename" : "include/packet_io.p4",
828 "line" : 27,
829 "column" : 12,
830 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
831 }
832 },
833 {
834 "op" : "remove_header",
835 "parameters" : [
836 {
837 "type" : "header",
838 "value" : "packet_out"
839 }
840 ],
841 "source_info" : {
842 "filename" : "include/packet_io.p4",
843 "line" : 28,
844 "column" : 12,
845 "source_fragment" : "hdr.packet_out.setInvalid()"
846 }
847 }
848 ]
849 },
850 {
851 "name" : "act_2",
852 "id" : 11,
853 "runtime_data" : [],
854 "primitives" : [
855 {
856 "op" : "assign",
857 "parameters" : [
858 {
859 "type" : "field",
860 "value" : ["scalars", "host_meter_control_tmp_1"]
861 },
862 {
863 "type" : "expression",
864 "value" : {
865 "type" : "expression",
866 "value" : {
867 "op" : "b2d",
868 "left" : null,
869 "right" : {
870 "type" : "bool",
871 "value" : true
872 }
873 }
874 }
875 }
876 ]
877 }
878 ]
879 },
880 {
881 "name" : "act_3",
882 "id" : 12,
883 "runtime_data" : [],
884 "primitives" : [
885 {
886 "op" : "assign",
887 "parameters" : [
888 {
889 "type" : "field",
890 "value" : ["scalars", "host_meter_control_tmp_1"]
891 },
892 {
893 "type" : "expression",
894 "value" : {
895 "type" : "expression",
896 "value" : {
897 "op" : "b2d",
898 "left" : null,
899 "right" : {
900 "type" : "bool",
901 "value" : false
902 }
903 }
904 }
905 }
906 ]
907 }
908 ]
909 },
910 {
911 "name" : "act_4",
912 "id" : 13,
913 "runtime_data" : [],
914 "primitives" : [
915 {
916 "op" : "assign",
917 "parameters" : [
918 {
919 "type" : "field",
920 "value" : ["scalars", "host_meter_control_tmp_2"]
921 },
922 {
923 "type" : "expression",
924 "value" : {
925 "type" : "expression",
926 "value" : {
927 "op" : "b2d",
928 "left" : null,
929 "right" : {
930 "type" : "bool",
931 "value" : false
932 }
933 }
934 }
935 }
936 ],
937 "source_info" : {
938 "filename" : "include/host_meter_table.p4",
939 "line" : 46,
940 "column" : 12,
941 "source_fragment" : "host_meter_table.apply().hit && local_metadata.meter_tag == 2"
942 }
943 }
944 ]
945 },
946 {
947 "name" : "act_5",
948 "id" : 14,
949 "runtime_data" : [],
950 "primitives" : [
951 {
952 "op" : "assign",
953 "parameters" : [
954 {
955 "type" : "field",
956 "value" : ["scalars", "host_meter_control_tmp_2"]
957 },
958 {
959 "type" : "expression",
960 "value" : {
961 "type" : "expression",
962 "value" : {
963 "op" : "b2d",
964 "left" : null,
965 "right" : {
966 "type" : "expression",
967 "value" : {
968 "op" : "==",
969 "left" : {
970 "type" : "field",
971 "value" : ["scalars", "local_metadata_t.meter_tag"]
972 },
973 "right" : {
974 "type" : "hexstr",
975 "value" : "0x00000002"
976 }
977 }
978 }
979 }
980 }
981 }
982 ],
983 "source_info" : {
984 "filename" : "include/host_meter_table.p4",
985 "line" : 46,
986 "column" : 12,
987 "source_fragment" : "host_meter_table.apply().hit && local_metadata.meter_tag == 2"
988 }
989 }
990 ]
991 },
992 {
993 "name" : "act_6",
994 "id" : 15,
995 "runtime_data" : [],
996 "primitives" : [
997 {
998 "op" : "drop",
999 "parameters" : [],
1000 "source_info" : {
1001 "filename" : "include/host_meter_table.p4",
1002 "line" : 47,
1003 "column" : 12,
1004 "source_fragment" : "mark_to_drop()"
1005 }
1006 }
1007 ]
1008 },
1009 {
1010 "name" : "act_7",
1011 "id" : 16,
1012 "runtime_data" : [],
1013 "primitives" : [
1014 {
1015 "op" : "drop",
1016 "parameters" : [],
1017 "source_info" : {
1018 "filename" : "include/port_meters.p4",
1019 "line" : 43,
1020 "column" : 12,
1021 "source_fragment" : "mark_to_drop()"
1022 }
1023 }
1024 ]
1025 },
1026 {
1027 "name" : "act_8",
1028 "id" : 17,
1029 "runtime_data" : [],
1030 "primitives" : [
1031 {
1032 "op" : "assign",
1033 "parameters" : [
1034 {
1035 "type" : "field",
1036 "value" : ["scalars", "tmp_1"]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001037 },
1038 {
1039 "type" : "expression",
1040 "value" : {
1041 "type" : "expression",
1042 "value" : {
1043 "op" : "&",
1044 "left" : {
1045 "type" : "field",
1046 "value" : ["standard_metadata", "egress_port"]
1047 },
1048 "right" : {
1049 "type" : "hexstr",
1050 "value" : "0xffffffff"
1051 }
1052 }
1053 }
1054 }
1055 ]
1056 },
1057 {
1058 "op" : "count",
1059 "parameters" : [
1060 {
1061 "type" : "counter_array",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001062 "value" : "egress.port_counters_egress.egress_port_counter"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001063 },
1064 {
1065 "type" : "field",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001066 "value" : ["scalars", "tmp_1"]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001067 }
1068 ],
1069 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001070 "filename" : "include/port_counters.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001071 "line" : 39,
1072 "column" : 8,
1073 "source_fragment" : "egress_port_counter.count((bit<32>) standard_metadata.egress_port)"
1074 }
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001075 },
1076 {
1077 "op" : "assign",
1078 "parameters" : [
1079 {
1080 "type" : "field",
1081 "value" : ["scalars", "tmp_2"]
1082 },
1083 {
1084 "type" : "expression",
1085 "value" : {
1086 "type" : "expression",
1087 "value" : {
1088 "op" : "&",
1089 "left" : {
1090 "type" : "field",
1091 "value" : ["standard_metadata", "egress_port"]
1092 },
1093 "right" : {
1094 "type" : "hexstr",
1095 "value" : "0xffffffff"
1096 }
1097 }
1098 }
1099 }
1100 ]
1101 },
1102 {
1103 "op" : "execute_meter",
1104 "parameters" : [
1105 {
1106 "type" : "meter_array",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001107 "value" : "egress.port_meters_egress.egress_port_meter"
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001108 },
1109 {
1110 "type" : "field",
1111 "value" : ["scalars", "tmp_2"]
1112 },
1113 {
1114 "type" : "field",
1115 "value" : ["scalars", "port_meters_egress_egress_color_0"]
1116 }
1117 ],
1118 "source_info" : {
1119 "filename" : "include/port_meters.p4",
1120 "line" : 41,
1121 "column" : 8,
1122 "source_fragment" : "egress_port_meter.execute_meter<MeterColor_t>((bit<32>)standard_metadata.egress_port, egress_color)"
1123 }
1124 }
1125 ]
1126 },
1127 {
1128 "name" : "act_9",
1129 "id" : 18,
1130 "runtime_data" : [],
1131 "primitives" : [
1132 {
1133 "op" : "add_header",
1134 "parameters" : [
1135 {
1136 "type" : "header",
1137 "value" : "packet_in"
1138 }
1139 ],
1140 "source_info" : {
1141 "filename" : "include/packet_io.p4",
1142 "line" : 38,
1143 "column" : 12,
1144 "source_fragment" : "hdr.packet_in.setValid()"
1145 }
1146 },
1147 {
1148 "op" : "assign",
1149 "parameters" : [
1150 {
1151 "type" : "field",
1152 "value" : ["packet_in", "ingress_port"]
1153 },
1154 {
1155 "type" : "field",
1156 "value" : ["standard_metadata", "ingress_port"]
1157 }
1158 ],
1159 "source_info" : {
1160 "filename" : "include/packet_io.p4",
1161 "line" : 39,
1162 "column" : 12,
1163 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
1164 }
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001165 }
1166 ]
1167 }
1168 ],
1169 "pipelines" : [
1170 {
1171 "name" : "ingress",
1172 "id" : 0,
1173 "source_info" : {
1174 "filename" : "basic.p4",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001175 "line" : 37,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001176 "column" : 8,
1177 "source_fragment" : "ingress"
1178 },
1179 "init_table" : "tbl_act",
1180 "tables" : [
1181 {
1182 "name" : "tbl_act",
1183 "id" : 0,
1184 "key" : [],
1185 "match_type" : "exact",
1186 "type" : "simple",
1187 "max_size" : 1024,
1188 "with_counters" : false,
1189 "support_timeout" : false,
1190 "direct_meters" : null,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001191 "action_ids" : [9],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001192 "actions" : ["act_0"],
1193 "base_default_next" : "node_3",
1194 "next_tables" : {
1195 "act_0" : "node_3"
1196 },
1197 "default_entry" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001198 "action_id" : 9,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001199 "action_const" : true,
1200 "action_data" : [],
1201 "action_entry_const" : true
1202 }
1203 },
1204 {
1205 "name" : "tbl_act_0",
1206 "id" : 1,
1207 "key" : [],
1208 "match_type" : "exact",
1209 "type" : "simple",
1210 "max_size" : 1024,
1211 "with_counters" : false,
1212 "support_timeout" : false,
1213 "direct_meters" : null,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001214 "action_ids" : [8],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001215 "actions" : ["act"],
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001216 "base_default_next" : "node_5",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001217 "next_tables" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001218 "act" : "node_5"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001219 },
1220 "default_entry" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001221 "action_id" : 8,
1222 "action_const" : true,
1223 "action_data" : [],
1224 "action_entry_const" : true
1225 }
1226 },
1227 {
1228 "name" : "tbl_act_1",
1229 "id" : 2,
1230 "key" : [],
1231 "match_type" : "exact",
1232 "type" : "simple",
1233 "max_size" : 1024,
1234 "with_counters" : false,
1235 "support_timeout" : false,
1236 "direct_meters" : null,
1237 "action_ids" : [10],
1238 "actions" : ["act_1"],
1239 "base_default_next" : null,
1240 "next_tables" : {
1241 "act_1" : null
1242 },
1243 "default_entry" : {
1244 "action_id" : 10,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001245 "action_const" : true,
1246 "action_data" : [],
1247 "action_entry_const" : true
1248 }
1249 },
1250 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001251 "name" : "ingress.table0_control.table0",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001252 "id" : 3,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001253 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001254 "filename" : "include/table0.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001255 "line" : 33,
1256 "column" : 10,
1257 "source_fragment" : "table0"
1258 },
1259 "key" : [
1260 {
1261 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001262 "name" : "standard_metadata.ingress_port",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001263 "target" : ["standard_metadata", "ingress_port"],
1264 "mask" : null
1265 },
1266 {
1267 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001268 "name" : "hdr.ethernet.src_addr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001269 "target" : ["ethernet", "src_addr"],
1270 "mask" : null
1271 },
1272 {
1273 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001274 "name" : "hdr.ethernet.dst_addr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001275 "target" : ["ethernet", "dst_addr"],
1276 "mask" : null
1277 },
1278 {
1279 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001280 "name" : "hdr.ethernet.ether_type",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001281 "target" : ["ethernet", "ether_type"],
1282 "mask" : null
1283 },
1284 {
1285 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001286 "name" : "hdr.ipv4.src_addr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001287 "target" : ["ipv4", "src_addr"],
1288 "mask" : null
1289 },
1290 {
1291 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001292 "name" : "hdr.ipv4.dst_addr",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001293 "target" : ["ipv4", "dst_addr"],
1294 "mask" : null
1295 },
1296 {
1297 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001298 "name" : "hdr.ipv4.protocol",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001299 "target" : ["ipv4", "protocol"],
1300 "mask" : null
1301 },
1302 {
1303 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001304 "name" : "local_metadata.l4_src_port",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001305 "target" : ["scalars", "local_metadata_t.l4_src_port"],
1306 "mask" : null
1307 },
1308 {
1309 "match_type" : "ternary",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001310 "name" : "local_metadata.l4_dst_port",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001311 "target" : ["scalars", "local_metadata_t.l4_dst_port"],
1312 "mask" : null
1313 }
1314 ],
1315 "match_type" : "ternary",
1316 "type" : "simple",
1317 "max_size" : 1024,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001318 "with_counters" : true,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001319 "support_timeout" : false,
1320 "direct_meters" : null,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001321 "action_ids" : [0, 2, 6, 3],
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001322 "actions" : ["set_egress_port", "send_to_cpu", "ingress.table0_control.set_next_hop_id", "_drop"],
1323 "base_default_next" : "ingress.host_meter_control.host_meter_table",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001324 "next_tables" : {
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001325 "set_egress_port" : "ingress.host_meter_control.host_meter_table",
1326 "send_to_cpu" : "ingress.host_meter_control.host_meter_table",
1327 "ingress.table0_control.set_next_hop_id" : "ingress.host_meter_control.host_meter_table",
1328 "_drop" : "ingress.host_meter_control.host_meter_table"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001329 },
1330 "default_entry" : {
1331 "action_id" : 3,
1332 "action_const" : true,
1333 "action_data" : [],
1334 "action_entry_const" : true
1335 }
1336 },
1337 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001338 "name" : "ingress.host_meter_control.host_meter_table",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001339 "id" : 4,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001340 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001341 "filename" : "include/host_meter_table.p4",
1342 "line" : 33,
1343 "column" : 10,
1344 "source_fragment" : "host_meter_table"
1345 },
1346 "key" : [
1347 {
1348 "match_type" : "lpm",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001349 "name" : "hdr.ethernet.src_addr",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001350 "target" : ["ethernet", "src_addr"],
1351 "mask" : null
1352 }
1353 ],
1354 "match_type" : "lpm",
1355 "type" : "simple",
1356 "max_size" : 1024,
1357 "with_counters" : false,
1358 "support_timeout" : false,
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001359 "direct_meters" : "ingress.host_meter_control.host_meter",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001360 "action_ids" : [7, 4],
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001361 "actions" : ["ingress.host_meter_control.read_meter", "NoAction"],
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001362 "base_default_next" : null,
1363 "next_tables" : {
1364 "__HIT__" : "tbl_act_2",
1365 "__MISS__" : "tbl_act_3"
1366 },
1367 "default_entry" : {
1368 "action_id" : 4,
1369 "action_const" : false,
1370 "action_data" : [],
1371 "action_entry_const" : false
1372 }
1373 },
1374 {
1375 "name" : "tbl_act_2",
1376 "id" : 5,
1377 "key" : [],
1378 "match_type" : "exact",
1379 "type" : "simple",
1380 "max_size" : 1024,
1381 "with_counters" : false,
1382 "support_timeout" : false,
1383 "direct_meters" : null,
1384 "action_ids" : [11],
1385 "actions" : ["act_2"],
1386 "base_default_next" : "node_11",
1387 "next_tables" : {
1388 "act_2" : "node_11"
1389 },
1390 "default_entry" : {
1391 "action_id" : 11,
1392 "action_const" : true,
1393 "action_data" : [],
1394 "action_entry_const" : true
1395 }
1396 },
1397 {
1398 "name" : "tbl_act_3",
1399 "id" : 6,
1400 "key" : [],
1401 "match_type" : "exact",
1402 "type" : "simple",
1403 "max_size" : 1024,
1404 "with_counters" : false,
1405 "support_timeout" : false,
1406 "direct_meters" : null,
1407 "action_ids" : [12],
1408 "actions" : ["act_3"],
1409 "base_default_next" : "node_11",
1410 "next_tables" : {
1411 "act_3" : "node_11"
1412 },
1413 "default_entry" : {
1414 "action_id" : 12,
1415 "action_const" : true,
1416 "action_data" : [],
1417 "action_entry_const" : true
1418 }
1419 },
1420 {
1421 "name" : "tbl_act_4",
1422 "id" : 7,
1423 "key" : [],
1424 "match_type" : "exact",
1425 "type" : "simple",
1426 "max_size" : 1024,
1427 "with_counters" : false,
1428 "support_timeout" : false,
1429 "direct_meters" : null,
1430 "action_ids" : [13],
1431 "actions" : ["act_4"],
1432 "base_default_next" : "node_14",
1433 "next_tables" : {
1434 "act_4" : "node_14"
1435 },
1436 "default_entry" : {
1437 "action_id" : 13,
1438 "action_const" : true,
1439 "action_data" : [],
1440 "action_entry_const" : true
1441 }
1442 },
1443 {
1444 "name" : "tbl_act_5",
1445 "id" : 8,
1446 "key" : [],
1447 "match_type" : "exact",
1448 "type" : "simple",
1449 "max_size" : 1024,
1450 "with_counters" : false,
1451 "support_timeout" : false,
1452 "direct_meters" : null,
1453 "action_ids" : [14],
1454 "actions" : ["act_5"],
1455 "base_default_next" : "node_14",
1456 "next_tables" : {
1457 "act_5" : "node_14"
1458 },
1459 "default_entry" : {
1460 "action_id" : 14,
1461 "action_const" : true,
1462 "action_data" : [],
1463 "action_entry_const" : true
1464 }
1465 },
1466 {
1467 "name" : "tbl_act_6",
1468 "id" : 9,
1469 "key" : [],
1470 "match_type" : "exact",
1471 "type" : "simple",
1472 "max_size" : 1024,
1473 "with_counters" : false,
1474 "support_timeout" : false,
1475 "direct_meters" : null,
1476 "action_ids" : [15],
1477 "actions" : ["act_6"],
1478 "base_default_next" : "node_16",
1479 "next_tables" : {
1480 "act_6" : "node_16"
1481 },
1482 "default_entry" : {
1483 "action_id" : 15,
1484 "action_const" : true,
1485 "action_data" : [],
1486 "action_entry_const" : true
1487 }
1488 },
1489 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001490 "name" : "ingress.wcmp_control.wcmp_table",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001491 "id" : 10,
1492 "source_info" : {
1493 "filename" : "include/wcmp.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001494 "line" : 30,
1495 "column" : 10,
1496 "source_fragment" : "wcmp_table"
1497 },
1498 "key" : [
1499 {
1500 "match_type" : "exact",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001501 "name" : "local_metadata.next_hop_id",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001502 "target" : ["scalars", "local_metadata_t.next_hop_id"],
1503 "mask" : null
1504 }
1505 ],
1506 "match_type" : "exact",
1507 "type" : "indirect_ws",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001508 "action_profile" : "ingress.wcmp_control.wcmp_selector",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001509 "max_size" : 1024,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001510 "with_counters" : true,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001511 "support_timeout" : false,
1512 "direct_meters" : null,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001513 "action_ids" : [1, 5],
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001514 "actions" : ["set_egress_port", "NoAction"],
1515 "base_default_next" : null,
1516 "next_tables" : {
1517 "set_egress_port" : null,
1518 "NoAction" : null
1519 }
1520 }
1521 ],
1522 "action_profiles" : [
1523 {
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001524 "name" : "ingress.wcmp_control.wcmp_selector",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001525 "id" : 0,
1526 "max_size" : 64,
1527 "selector" : {
1528 "algo" : "crc16",
1529 "input" : [
1530 {
1531 "type" : "field",
1532 "value" : ["ipv4", "src_addr"]
1533 },
1534 {
1535 "type" : "field",
1536 "value" : ["ipv4", "dst_addr"]
1537 },
1538 {
1539 "type" : "field",
1540 "value" : ["ipv4", "protocol"]
1541 },
1542 {
1543 "type" : "field",
1544 "value" : ["scalars", "local_metadata_t.l4_src_port"]
1545 },
1546 {
1547 "type" : "field",
1548 "value" : ["scalars", "local_metadata_t.l4_dst_port"]
1549 }
1550 ]
1551 }
1552 }
1553 ],
1554 "conditionals" : [
1555 {
1556 "name" : "node_3",
1557 "id" : 0,
1558 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001559 "filename" : "include/port_meters.p4",
1560 "line" : 28,
1561 "column" : 12,
1562 "source_fragment" : "ingress_color == MeterColor_t.RED"
1563 },
1564 "expression" : {
1565 "type" : "expression",
1566 "value" : {
1567 "op" : "==",
1568 "left" : {
1569 "type" : "field",
1570 "value" : ["scalars", "port_meters_ingress_ingress_color_0"]
1571 },
1572 "right" : {
1573 "type" : "hexstr",
1574 "value" : "0x00000002"
1575 }
1576 }
1577 },
1578 "true_next" : "tbl_act_0",
1579 "false_next" : "node_5"
1580 },
1581 {
1582 "name" : "node_5",
1583 "id" : 1,
1584 "source_info" : {
1585 "filename" : "include/packet_io.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001586 "line" : 26,
1587 "column" : 12,
1588 "source_fragment" : "standard_metadata.ingress_port == CPU_PORT"
1589 },
1590 "expression" : {
1591 "type" : "expression",
1592 "value" : {
1593 "op" : "==",
1594 "left" : {
1595 "type" : "field",
1596 "value" : ["standard_metadata", "ingress_port"]
1597 },
1598 "right" : {
1599 "type" : "hexstr",
1600 "value" : "0x00ff"
1601 }
1602 }
1603 },
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001604 "true_next" : "tbl_act_1",
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001605 "false_next" : "ingress.table0_control.table0"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001606 },
1607 {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001608 "name" : "node_11",
1609 "id" : 2,
1610 "expression" : {
1611 "type" : "expression",
1612 "value" : {
1613 "op" : "not",
1614 "left" : null,
1615 "right" : {
1616 "type" : "expression",
1617 "value" : {
1618 "op" : "d2b",
1619 "left" : null,
1620 "right" : {
1621 "type" : "field",
1622 "value" : ["scalars", "host_meter_control_tmp_1"]
1623 }
1624 }
1625 }
1626 }
1627 },
1628 "true_next" : "tbl_act_4",
1629 "false_next" : "tbl_act_5"
1630 },
1631 {
1632 "name" : "node_14",
1633 "id" : 3,
1634 "expression" : {
1635 "type" : "expression",
1636 "value" : {
1637 "op" : "d2b",
1638 "left" : null,
1639 "right" : {
1640 "type" : "field",
1641 "value" : ["scalars", "host_meter_control_tmp_2"]
1642 }
1643 }
1644 },
1645 "true_next" : "tbl_act_6",
1646 "false_next" : "node_16"
1647 },
1648 {
1649 "name" : "node_16",
1650 "id" : 4,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001651 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001652 "filename" : "include/wcmp.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001653 "line" : 48,
1654 "column" : 12,
1655 "source_fragment" : "local_metadata.next_hop_id != 0"
1656 },
1657 "expression" : {
1658 "type" : "expression",
1659 "value" : {
1660 "op" : "!=",
1661 "left" : {
1662 "type" : "field",
1663 "value" : ["scalars", "local_metadata_t.next_hop_id"]
1664 },
1665 "right" : {
1666 "type" : "hexstr",
1667 "value" : "0x0000"
1668 }
1669 }
1670 },
1671 "false_next" : null,
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001672 "true_next" : "ingress.wcmp_control.wcmp_table"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001673 }
1674 ]
1675 },
1676 {
1677 "name" : "egress",
1678 "id" : 1,
1679 "source_info" : {
1680 "filename" : "basic.p4",
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001681 "line" : 55,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001682 "column" : 8,
1683 "source_fragment" : "egress"
1684 },
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001685 "init_table" : "tbl_act_7",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001686 "tables" : [
1687 {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001688 "name" : "tbl_act_7",
1689 "id" : 11,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001690 "key" : [],
1691 "match_type" : "exact",
1692 "type" : "simple",
1693 "max_size" : 1024,
1694 "with_counters" : false,
1695 "support_timeout" : false,
1696 "direct_meters" : null,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001697 "action_ids" : [17],
1698 "actions" : ["act_8"],
1699 "base_default_next" : "node_21",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001700 "next_tables" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001701 "act_8" : "node_21"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001702 },
1703 "default_entry" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001704 "action_id" : 17,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001705 "action_const" : true,
1706 "action_data" : [],
1707 "action_entry_const" : true
1708 }
1709 },
1710 {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001711 "name" : "tbl_act_8",
1712 "id" : 12,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001713 "key" : [],
1714 "match_type" : "exact",
1715 "type" : "simple",
1716 "max_size" : 1024,
1717 "with_counters" : false,
1718 "support_timeout" : false,
1719 "direct_meters" : null,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001720 "action_ids" : [16],
1721 "actions" : ["act_7"],
1722 "base_default_next" : "node_23",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001723 "next_tables" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001724 "act_7" : "node_23"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001725 },
1726 "default_entry" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001727 "action_id" : 16,
1728 "action_const" : true,
1729 "action_data" : [],
1730 "action_entry_const" : true
1731 }
1732 },
1733 {
1734 "name" : "tbl_act_9",
1735 "id" : 13,
1736 "key" : [],
1737 "match_type" : "exact",
1738 "type" : "simple",
1739 "max_size" : 1024,
1740 "with_counters" : false,
1741 "support_timeout" : false,
1742 "direct_meters" : null,
1743 "action_ids" : [18],
1744 "actions" : ["act_9"],
1745 "base_default_next" : null,
1746 "next_tables" : {
1747 "act_9" : null
1748 },
1749 "default_entry" : {
1750 "action_id" : 18,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001751 "action_const" : true,
1752 "action_data" : [],
1753 "action_entry_const" : true
1754 }
1755 }
1756 ],
1757 "action_profiles" : [],
1758 "conditionals" : [
1759 {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001760 "name" : "node_21",
1761 "id" : 5,
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001762 "source_info" : {
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001763 "filename" : "include/port_meters.p4",
1764 "line" : 42,
1765 "column" : 12,
1766 "source_fragment" : "egress_color == MeterColor_t.RED"
1767 },
1768 "expression" : {
1769 "type" : "expression",
1770 "value" : {
1771 "op" : "==",
1772 "left" : {
1773 "type" : "field",
1774 "value" : ["scalars", "port_meters_egress_egress_color_0"]
1775 },
1776 "right" : {
1777 "type" : "hexstr",
1778 "value" : "0x00000002"
1779 }
1780 }
1781 },
1782 "true_next" : "tbl_act_8",
1783 "false_next" : "node_23"
1784 },
1785 {
1786 "name" : "node_23",
1787 "id" : 6,
1788 "source_info" : {
1789 "filename" : "include/packet_io.p4",
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001790 "line" : 37,
1791 "column" : 12,
1792 "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
1793 },
1794 "expression" : {
1795 "type" : "expression",
1796 "value" : {
1797 "op" : "==",
1798 "left" : {
1799 "type" : "field",
1800 "value" : ["standard_metadata", "egress_port"]
1801 },
1802 "right" : {
1803 "type" : "hexstr",
1804 "value" : "0x00ff"
1805 }
1806 }
1807 },
1808 "false_next" : null,
Frank Wangd7e3b4b2017-09-24 13:37:54 +09001809 "true_next" : "tbl_act_9"
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001810 }
1811 ]
1812 }
1813 ],
1814 "checksums" : [],
1815 "force_arith" : [],
1816 "extern_instances" : [],
1817 "field_aliases" : [
1818 [
1819 "queueing_metadata.enq_timestamp",
1820 ["standard_metadata", "enq_timestamp"]
1821 ],
1822 [
1823 "queueing_metadata.enq_qdepth",
1824 ["standard_metadata", "enq_qdepth"]
1825 ],
1826 [
1827 "queueing_metadata.deq_timedelta",
1828 ["standard_metadata", "deq_timedelta"]
1829 ],
1830 [
1831 "queueing_metadata.deq_qdepth",
1832 ["standard_metadata", "deq_qdepth"]
1833 ],
1834 [
1835 "intrinsic_metadata.ingress_global_timestamp",
1836 ["standard_metadata", "ingress_global_timestamp"]
1837 ],
1838 [
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001839 "intrinsic_metadata.egress_global_timestamp",
1840 ["standard_metadata", "egress_global_timestamp"]
1841 ],
1842 [
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001843 "intrinsic_metadata.lf_field_list",
1844 ["standard_metadata", "lf_field_list"]
1845 ],
1846 [
1847 "intrinsic_metadata.mcast_grp",
1848 ["standard_metadata", "mcast_grp"]
1849 ],
1850 [
1851 "intrinsic_metadata.resubmit_flag",
1852 ["standard_metadata", "resubmit_flag"]
1853 ],
1854 [
1855 "intrinsic_metadata.egress_rid",
1856 ["standard_metadata", "egress_rid"]
Carmelo Cascone81929aa2018-04-07 01:38:55 -07001857 ],
1858 [
1859 "intrinsic_metadata.recirculate_flag",
1860 ["standard_metadata", "recirculate_flag"]
Carmelo Casconeca94bcf2017-10-27 14:16:59 -07001861 ]
1862 ]
1863}