blob: 13e607d763e2ec173e57c5097452d8f2c58ef568 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tsengbe342052017-11-03 10:21:23 -07002 "header_types" : [
3 {
4 "name" : "scalars_0",
5 "id" : 0,
6 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -08007 ["tmp", 4, false],
8 ["tmp_0", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -07009 ["tmp_1", 32, false],
Carmelo Casconea5400af2018-07-17 22:11:54 +020010 ["next_tmp_2", 1, false],
11 ["next_tmp_3", 1, false],
12 ["next_tmp_4", 1, false],
13 ["next_hasReturned_0", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070014 ["fabric_metadata_t.fwd_type", 3, false],
15 ["fabric_metadata_t.next_id", 32, false],
Yi Tseng20f9e7b2018-05-24 23:27:39 +080016 ["fabric_metadata_t.pop_vlan_when_packet_in", 1, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020017 ["fabric_metadata_t.is_multicast", 1, false],
18 ["fabric_metadata_t.clone_to_cpu", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070019 ["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],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020022 ["_padding_0", 2, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080023 ]
24 },
25 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +020026 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -080027 "id" : 1,
28 "fields" : [
Carmelo Cascone6af4e172018-06-15 16:01:30 +020029 ["ingress_port", 9, false],
30 ["egress_spec", 9, false],
31 ["egress_port", 9, false],
32 ["clone_spec", 32, false],
33 ["instance_type", 32, false],
34 ["drop", 1, false],
35 ["recirculate_port", 16, false],
36 ["packet_length", 32, false],
37 ["enq_timestamp", 32, false],
38 ["enq_qdepth", 19, false],
39 ["deq_timedelta", 32, false],
40 ["deq_qdepth", 19, false],
41 ["ingress_global_timestamp", 48, false],
42 ["egress_global_timestamp", 48, false],
43 ["lf_field_list", 32, false],
44 ["mcast_grp", 16, false],
45 ["resubmit_flag", 32, false],
46 ["egress_rid", 16, false],
47 ["checksum_error", 1, false],
48 ["recirculate_flag", 32, false],
49 ["_padding", 5, false]
50 ]
51 },
52 {
53 "name" : "ethernet_t",
54 "id" : 2,
55 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080056 ["dst_addr", 48, false],
57 ["src_addr", 48, false],
58 ["ether_type", 16, false]
59 ]
60 },
61 {
62 "name" : "vlan_tag_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020063 "id" : 3,
Yi Tsengc6844f52017-12-19 11:58:25 -080064 "fields" : [
65 ["pri", 3, false],
66 ["cfi", 1, false],
67 ["vlan_id", 12, false],
68 ["ether_type", 16, false]
69 ]
70 },
71 {
72 "name" : "mpls_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020073 "id" : 4,
Yi Tsengc6844f52017-12-19 11:58:25 -080074 "fields" : [
75 ["label", 20, false],
76 ["tc", 3, false],
77 ["bos", 1, false],
78 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070079 ]
80 },
81 {
82 "name" : "ipv4_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020083 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -070084 "fields" : [
85 ["version", 4, false],
86 ["ihl", 4, false],
87 ["diffserv", 8, false],
88 ["total_len", 16, false],
89 ["identification", 16, false],
90 ["flags", 3, false],
91 ["frag_offset", 13, false],
92 ["ttl", 8, false],
93 ["protocol", 8, false],
94 ["hdr_checksum", 16, false],
95 ["src_addr", 32, false],
96 ["dst_addr", 32, false]
97 ]
98 },
99 {
Yi Tseng47eac892018-07-11 02:17:04 +0800100 "name" : "arp_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200101 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800102 "fields" : [
Yi Tsengbe342052017-11-03 10:21:23 -0700103 ["hw_type", 16, false],
104 ["proto_type", 16, false],
105 ["hw_addr_len", 8, false],
106 ["proto_addr_len", 8, false],
107 ["opcode", 16, false]
108 ]
109 },
110 {
111 "name" : "tcp_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200112 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700113 "fields" : [
114 ["src_port", 16, false],
115 ["dst_port", 16, false],
116 ["seq_no", 32, false],
117 ["ack_no", 32, false],
118 ["data_offset", 4, false],
119 ["res", 3, false],
120 ["ecn", 3, false],
121 ["ctrl", 6, false],
122 ["window", 16, false],
123 ["checksum", 16, false],
124 ["urgent_ptr", 16, false]
125 ]
126 },
127 {
128 "name" : "udp_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200129 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700130 "fields" : [
131 ["src_port", 16, false],
132 ["dst_port", 16, false],
133 ["len", 16, false],
134 ["checksum", 16, false]
135 ]
136 },
137 {
138 "name" : "icmp_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200139 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700140 "fields" : [
141 ["icmp_type", 8, false],
142 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800143 ["checksum", 16, false],
144 ["identifier", 16, false],
145 ["sequence_number", 16, false],
146 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700147 ]
148 },
149 {
150 "name" : "packet_out_header_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200151 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700152 "fields" : [
153 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800154 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700155 ]
156 },
157 {
158 "name" : "packet_in_header_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200159 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700160 "fields" : [
161 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800162 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700163 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700164 }
165 ],
166 "headers" : [
167 {
Yi Tsengbe342052017-11-03 10:21:23 -0700168 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800169 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700170 "header_type" : "scalars_0",
171 "metadata" : true,
172 "pi_omit" : true
173 },
174 {
175 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800176 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700177 "header_type" : "standard_metadata",
178 "metadata" : true,
179 "pi_omit" : true
180 },
181 {
182 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800183 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700184 "header_type" : "ethernet_t",
185 "metadata" : false,
186 "pi_omit" : true
187 },
188 {
189 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800190 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700191 "header_type" : "vlan_tag_t",
192 "metadata" : false,
193 "pi_omit" : true
194 },
195 {
Yi Tsengbe342052017-11-03 10:21:23 -0700196 "name" : "mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800197 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700198 "header_type" : "mpls_t",
199 "metadata" : false,
200 "pi_omit" : true
201 },
202 {
203 "name" : "ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800204 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700205 "header_type" : "ipv4_t",
206 "metadata" : false,
207 "pi_omit" : true
208 },
209 {
Yi Tseng47eac892018-07-11 02:17:04 +0800210 "name" : "arp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200211 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700212 "header_type" : "arp_t",
213 "metadata" : false,
214 "pi_omit" : true
215 },
216 {
217 "name" : "tcp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200218 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700219 "header_type" : "tcp_t",
220 "metadata" : false,
221 "pi_omit" : true
222 },
223 {
224 "name" : "udp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200225 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700226 "header_type" : "udp_t",
227 "metadata" : false,
228 "pi_omit" : true
229 },
230 {
231 "name" : "icmp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200232 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700233 "header_type" : "icmp_t",
234 "metadata" : false,
235 "pi_omit" : true
236 },
237 {
238 "name" : "packet_out",
Carmelo Casconef645e842018-07-16 18:31:52 +0200239 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700240 "header_type" : "packet_out_header_t",
241 "metadata" : false,
242 "pi_omit" : true
243 },
244 {
245 "name" : "packet_in",
Carmelo Casconef645e842018-07-16 18:31:52 +0200246 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700247 "header_type" : "packet_in_header_t",
248 "metadata" : false,
249 "pi_omit" : true
250 }
251 ],
252 "header_stacks" : [],
253 "header_union_types" : [],
254 "header_unions" : [],
255 "header_union_stacks" : [],
256 "field_lists" : [],
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200257 "errors" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700258 "enums" : [],
259 "parsers" : [
260 {
261 "name" : "parser",
262 "id" : 0,
263 "init_state" : "start",
264 "parse_states" : [
265 {
266 "name" : "start",
267 "id" : 0,
268 "parser_ops" : [],
269 "transitions" : [
270 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800271 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700272 "value" : "0x00ff",
273 "mask" : null,
274 "next_state" : "parse_packet_out"
275 },
276 {
277 "value" : "default",
278 "mask" : null,
279 "next_state" : "parse_ethernet"
280 }
281 ],
282 "transition_key" : [
283 {
284 "type" : "field",
285 "value" : ["standard_metadata", "ingress_port"]
286 }
287 ]
288 },
289 {
290 "name" : "parse_packet_out",
291 "id" : 1,
292 "parser_ops" : [
293 {
294 "parameters" : [
295 {
296 "type" : "regular",
297 "value" : "packet_out"
298 }
299 ],
300 "op" : "extract"
301 }
302 ],
303 "transitions" : [
304 {
305 "value" : "default",
306 "mask" : null,
307 "next_state" : "parse_ethernet"
308 }
309 ],
310 "transition_key" : []
311 },
312 {
313 "name" : "parse_ethernet",
314 "id" : 2,
315 "parser_ops" : [
316 {
317 "parameters" : [
318 {
319 "type" : "regular",
320 "value" : "ethernet"
321 }
322 ],
323 "op" : "extract"
324 }
325 ],
326 "transitions" : [
327 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800328 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700329 "value" : "0x8100",
330 "mask" : null,
331 "next_state" : "parse_vlan_tag"
332 },
333 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800334 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700335 "value" : "0x8847",
336 "mask" : null,
337 "next_state" : "parse_mpls"
338 },
339 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800340 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700341 "value" : "0x0806",
342 "mask" : null,
343 "next_state" : "parse_arp"
344 },
345 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800346 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700347 "value" : "0x0800",
348 "mask" : null,
349 "next_state" : "parse_ipv4"
350 },
351 {
Yi Tsengbe342052017-11-03 10:21:23 -0700352 "value" : "default",
353 "mask" : null,
354 "next_state" : null
355 }
356 ],
357 "transition_key" : [
358 {
359 "type" : "field",
360 "value" : ["ethernet", "ether_type"]
361 }
362 ]
363 },
364 {
365 "name" : "parse_vlan_tag",
366 "id" : 3,
367 "parser_ops" : [
368 {
369 "parameters" : [
370 {
371 "type" : "regular",
372 "value" : "vlan_tag"
373 }
374 ],
375 "op" : "extract"
376 }
377 ],
378 "transitions" : [
379 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800380 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700381 "value" : "0x0806",
382 "mask" : null,
383 "next_state" : "parse_arp"
384 },
385 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800386 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700387 "value" : "0x0800",
388 "mask" : null,
389 "next_state" : "parse_ipv4"
390 },
391 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800392 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800393 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700394 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800395 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700396 },
397 {
398 "value" : "default",
399 "mask" : null,
400 "next_state" : null
401 }
402 ],
403 "transition_key" : [
404 {
405 "type" : "field",
406 "value" : ["vlan_tag", "ether_type"]
407 }
408 ]
409 },
410 {
411 "name" : "parse_mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800412 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700413 "parser_ops" : [
414 {
415 "parameters" : [
416 {
417 "type" : "regular",
418 "value" : "mpls"
419 }
420 ],
421 "op" : "extract"
422 },
423 {
424 "parameters" : [
425 {
426 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800427 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700428 },
429 {
430 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800431 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700432 }
433 ],
434 "op" : "set"
435 }
436 ],
437 "transitions" : [
438 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800439 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700440 "value" : "0x04",
441 "mask" : null,
442 "next_state" : "parse_ipv4"
443 },
444 {
Yi Tsengbe342052017-11-03 10:21:23 -0700445 "value" : "default",
446 "mask" : null,
447 "next_state" : "parse_ethernet"
448 }
449 ],
450 "transition_key" : [
451 {
452 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800453 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700454 }
455 ]
456 },
457 {
458 "name" : "parse_ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800459 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700460 "parser_ops" : [
461 {
462 "parameters" : [
463 {
464 "type" : "regular",
465 "value" : "ipv4"
466 }
467 ],
468 "op" : "extract"
469 },
470 {
471 "parameters" : [
472 {
473 "type" : "field",
474 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
475 },
476 {
477 "type" : "field",
478 "value" : ["ipv4", "protocol"]
479 }
480 ],
481 "op" : "set"
482 }
483 ],
484 "transitions" : [
485 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800486 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700487 "value" : "0x06",
488 "mask" : null,
489 "next_state" : "parse_tcp"
490 },
491 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800492 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700493 "value" : "0x11",
494 "mask" : null,
495 "next_state" : "parse_udp"
496 },
497 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800498 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700499 "value" : "0x01",
500 "mask" : null,
501 "next_state" : "parse_icmp"
502 },
503 {
504 "value" : "default",
505 "mask" : null,
506 "next_state" : null
507 }
508 ],
509 "transition_key" : [
510 {
511 "type" : "field",
512 "value" : ["ipv4", "protocol"]
513 }
514 ]
515 },
516 {
Yi Tseng47eac892018-07-11 02:17:04 +0800517 "name" : "parse_arp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200518 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800519 "parser_ops" : [
520 {
521 "parameters" : [
522 {
523 "type" : "regular",
Yi Tsengbe342052017-11-03 10:21:23 -0700524 "value" : "arp"
525 }
526 ],
527 "op" : "extract"
528 }
529 ],
530 "transitions" : [
531 {
532 "value" : "default",
533 "mask" : null,
534 "next_state" : null
535 }
536 ],
537 "transition_key" : []
538 },
539 {
540 "name" : "parse_tcp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200541 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700542 "parser_ops" : [
543 {
544 "parameters" : [
545 {
546 "type" : "regular",
547 "value" : "tcp"
548 }
549 ],
550 "op" : "extract"
551 },
552 {
553 "parameters" : [
554 {
555 "type" : "field",
556 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
557 },
558 {
559 "type" : "field",
560 "value" : ["tcp", "src_port"]
561 }
562 ],
563 "op" : "set"
564 },
565 {
566 "parameters" : [
567 {
568 "type" : "field",
569 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
570 },
571 {
572 "type" : "field",
573 "value" : ["tcp", "dst_port"]
574 }
575 ],
576 "op" : "set"
577 }
578 ],
579 "transitions" : [
580 {
581 "value" : "default",
582 "mask" : null,
583 "next_state" : null
584 }
585 ],
586 "transition_key" : []
587 },
588 {
589 "name" : "parse_udp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200590 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700591 "parser_ops" : [
592 {
593 "parameters" : [
594 {
595 "type" : "regular",
596 "value" : "udp"
597 }
598 ],
599 "op" : "extract"
600 },
601 {
602 "parameters" : [
603 {
604 "type" : "field",
605 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
606 },
607 {
608 "type" : "field",
609 "value" : ["udp", "src_port"]
610 }
611 ],
612 "op" : "set"
613 },
614 {
615 "parameters" : [
616 {
617 "type" : "field",
618 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
619 },
620 {
621 "type" : "field",
622 "value" : ["udp", "dst_port"]
623 }
624 ],
625 "op" : "set"
626 }
627 ],
628 "transitions" : [
629 {
630 "value" : "default",
631 "mask" : null,
632 "next_state" : null
633 }
634 ],
635 "transition_key" : []
636 },
637 {
638 "name" : "parse_icmp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200639 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700640 "parser_ops" : [
641 {
642 "parameters" : [
643 {
644 "type" : "regular",
645 "value" : "icmp"
646 }
647 ],
648 "op" : "extract"
649 }
650 ],
651 "transitions" : [
652 {
653 "value" : "default",
654 "mask" : null,
655 "next_state" : null
656 }
657 ],
658 "transition_key" : []
659 }
660 ]
661 }
662 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800663 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700664 "deparsers" : [
665 {
666 "name" : "deparser",
667 "id" : 0,
668 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200669 "filename" : "include/parser.p4",
Yi Tseng8235a1a2018-07-24 20:57:28 +0800670 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -0700671 "column" : 8,
672 "source_fragment" : "FabricDeparser"
673 },
Carmelo Casconef645e842018-07-16 18:31:52 +0200674 "order" : ["packet_in", "ethernet", "vlan_tag", "mpls", "arp", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700675 }
676 ],
677 "meter_arrays" : [],
678 "counter_arrays" : [
679 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800680 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800681 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800682 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800683 "binding" : "FabricIngress.filtering.ingress_port_vlan"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800684 },
685 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800686 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800687 "id" : 1,
688 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800689 "binding" : "FabricIngress.filtering.fwd_classifier"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800690 },
691 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800692 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800693 "id" : 2,
694 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800695 "binding" : "FabricIngress.forwarding.bridging"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800696 },
697 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800698 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800699 "id" : 3,
700 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800701 "binding" : "FabricIngress.forwarding.mpls"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800702 },
703 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800704 "name" : "FabricIngress.forwarding.unicast_v4_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800705 "id" : 4,
706 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800707 "binding" : "FabricIngress.forwarding.unicast_v4"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800708 },
709 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800710 "name" : "FabricIngress.forwarding.acl_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800711 "id" : 5,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800712 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800713 "binding" : "FabricIngress.forwarding.acl"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800714 },
715 {
Yi Tseng47eac892018-07-11 02:17:04 +0800716 "name" : "FabricIngress.next.vlan_meta_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200717 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800718 "is_direct" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800719 "binding" : "FabricIngress.next.vlan_meta"
720 },
721 {
722 "name" : "FabricIngress.next.simple_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200723 "id" : 7,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800724 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800725 "binding" : "FabricIngress.next.simple"
726 },
727 {
728 "name" : "FabricIngress.next.hashed_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200729 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800730 "is_direct" : true,
731 "binding" : "FabricIngress.next.hashed"
732 },
733 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000734 "name" : "FabricIngress.next.multicast_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200735 "id" : 9,
Esin Karaman971fb7f2017-12-28 13:44:52 +0000736 "is_direct" : true,
737 "binding" : "FabricIngress.next.multicast"
738 },
739 {
740 "name" : "FabricIngress.port_counters_control.egress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200741 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700742 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200743 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700744 "line" : 23,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800745 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700746 "source_fragment" : "egress_port_counter"
747 },
748 "size" : 511,
749 "is_direct" : false
750 },
751 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800752 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200753 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700754 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200755 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700756 "line" : 24,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800757 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700758 "source_fragment" : "ingress_port_counter"
759 },
760 "size" : 511,
761 "is_direct" : false
Yi Tseng47eac892018-07-11 02:17:04 +0800762 },
763 {
764 "name" : "FabricEgress.egress_next.egress_vlan_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200765 "id" : 12,
Yi Tseng47eac892018-07-11 02:17:04 +0800766 "is_direct" : true,
767 "binding" : "FabricEgress.egress_next.egress_vlan"
Yi Tsengbe342052017-11-03 10:21:23 -0700768 }
769 ],
770 "register_arrays" : [],
771 "calculations" : [
772 {
773 "name" : "calc",
774 "id" : 0,
775 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200776 "filename" : "include/checksum.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200777 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700778 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200779 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700780 },
781 "algo" : "csum16",
782 "input" : [
783 {
784 "type" : "field",
785 "value" : ["ipv4", "version"]
786 },
787 {
788 "type" : "field",
789 "value" : ["ipv4", "ihl"]
790 },
791 {
792 "type" : "field",
793 "value" : ["ipv4", "diffserv"]
794 },
795 {
796 "type" : "field",
797 "value" : ["ipv4", "total_len"]
798 },
799 {
800 "type" : "field",
801 "value" : ["ipv4", "identification"]
802 },
803 {
804 "type" : "field",
805 "value" : ["ipv4", "flags"]
806 },
807 {
808 "type" : "field",
809 "value" : ["ipv4", "frag_offset"]
810 },
811 {
812 "type" : "field",
813 "value" : ["ipv4", "ttl"]
814 },
815 {
816 "type" : "field",
817 "value" : ["ipv4", "protocol"]
818 },
819 {
820 "type" : "field",
821 "value" : ["ipv4", "src_addr"]
822 },
823 {
824 "type" : "field",
825 "value" : ["ipv4", "dst_addr"]
826 }
827 ]
828 },
829 {
830 "name" : "calc_0",
831 "id" : 1,
832 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200833 "filename" : "include/checksum.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200834 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -0700835 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200836 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700837 },
838 "algo" : "csum16",
839 "input" : [
840 {
841 "type" : "field",
842 "value" : ["ipv4", "version"]
843 },
844 {
845 "type" : "field",
846 "value" : ["ipv4", "ihl"]
847 },
848 {
849 "type" : "field",
850 "value" : ["ipv4", "diffserv"]
851 },
852 {
853 "type" : "field",
854 "value" : ["ipv4", "total_len"]
855 },
856 {
857 "type" : "field",
858 "value" : ["ipv4", "identification"]
859 },
860 {
861 "type" : "field",
862 "value" : ["ipv4", "flags"]
863 },
864 {
865 "type" : "field",
866 "value" : ["ipv4", "frag_offset"]
867 },
868 {
869 "type" : "field",
870 "value" : ["ipv4", "ttl"]
871 },
872 {
873 "type" : "field",
874 "value" : ["ipv4", "protocol"]
875 },
876 {
877 "type" : "field",
878 "value" : ["ipv4", "src_addr"]
879 },
880 {
881 "type" : "field",
882 "value" : ["ipv4", "dst_addr"]
883 }
884 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700885 }
886 ],
887 "learn_lists" : [],
888 "actions" : [
889 {
890 "name" : "nop",
891 "id" : 0,
892 "runtime_data" : [],
893 "primitives" : []
894 },
895 {
896 "name" : "nop",
897 "id" : 1,
898 "runtime_data" : [],
899 "primitives" : []
900 },
901 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800902 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -0700903 "id" : 2,
904 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800905 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700906 },
907 {
Yi Tseng1d842672017-11-28 16:06:52 -0800908 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700909 "id" : 3,
910 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800911 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700912 },
913 {
914 "name" : "NoAction",
915 "id" : 4,
916 "runtime_data" : [],
917 "primitives" : []
918 },
919 {
920 "name" : "NoAction",
921 "id" : 5,
922 "runtime_data" : [],
923 "primitives" : []
924 },
925 {
926 "name" : "NoAction",
927 "id" : 6,
928 "runtime_data" : [],
929 "primitives" : []
930 },
931 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800932 "name" : "NoAction",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800933 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700934 "runtime_data" : [],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800935 "primitives" : []
936 },
937 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000938 "name" : "NoAction",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200939 "id" : 8,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800940 "runtime_data" : [],
Esin Karaman971fb7f2017-12-28 13:44:52 +0000941 "primitives" : []
942 },
943 {
Yi Tseng47eac892018-07-11 02:17:04 +0800944 "name" : "FabricIngress.filtering.drop",
Carmelo Casconef645e842018-07-16 18:31:52 +0200945 "id" : 9,
Yi Tseng47eac892018-07-11 02:17:04 +0800946 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800947 "primitives" : [
948 {
949 "op" : "drop",
950 "parameters" : [],
951 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200952 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +0800953 "line" : 37,
Yi Tseng1d842672017-11-28 16:06:52 -0800954 "column" : 8,
955 "source_fragment" : "mark_to_drop()"
956 }
957 }
958 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700959 },
960 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800961 "name" : "FabricIngress.filtering.set_vlan",
Carmelo Casconef645e842018-07-16 18:31:52 +0200962 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700963 "runtime_data" : [
964 {
965 "name" : "new_vlan_id",
966 "bitwidth" : 12
967 }
968 ],
969 "primitives" : [
970 {
971 "op" : "assign",
972 "parameters" : [
973 {
974 "type" : "field",
975 "value" : ["vlan_tag", "vlan_id"]
976 },
977 {
978 "type" : "runtime_data",
979 "value" : 0
980 }
981 ],
982 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200983 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +0800984 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -0700985 "column" : 8,
986 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
987 }
988 }
989 ]
990 },
991 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800992 "name" : "FabricIngress.filtering.push_internal_vlan",
Carmelo Casconef645e842018-07-16 18:31:52 +0200993 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700994 "runtime_data" : [
995 {
996 "name" : "new_vlan_id",
997 "bitwidth" : 12
998 }
999 ],
1000 "primitives" : [
1001 {
1002 "op" : "add_header",
1003 "parameters" : [
1004 {
1005 "type" : "header",
1006 "value" : "vlan_tag"
1007 }
1008 ],
1009 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001010 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001011 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001012 "column" : 8,
1013 "source_fragment" : "hdr.vlan_tag.setValid()"
1014 }
1015 },
1016 {
1017 "op" : "assign",
1018 "parameters" : [
1019 {
1020 "type" : "field",
1021 "value" : ["vlan_tag", "cfi"]
1022 },
1023 {
1024 "type" : "hexstr",
1025 "value" : "0x00"
1026 }
1027 ],
1028 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001029 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001030 "line" : 50,
Yi Tsengbe342052017-11-03 10:21:23 -07001031 "column" : 8,
1032 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1033 }
1034 },
1035 {
1036 "op" : "assign",
1037 "parameters" : [
1038 {
1039 "type" : "field",
1040 "value" : ["vlan_tag", "pri"]
1041 },
1042 {
1043 "type" : "hexstr",
1044 "value" : "0x00"
1045 }
1046 ],
1047 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001048 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001049 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07001050 "column" : 8,
1051 "source_fragment" : "hdr.vlan_tag.pri = 0"
1052 }
1053 },
1054 {
1055 "op" : "assign",
1056 "parameters" : [
1057 {
1058 "type" : "field",
1059 "value" : ["vlan_tag", "ether_type"]
1060 },
1061 {
Yi Tseng1d842672017-11-28 16:06:52 -08001062 "type" : "field",
1063 "value" : ["ethernet", "ether_type"]
1064 }
1065 ],
1066 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001067 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001068 "line" : 52,
Yi Tseng1d842672017-11-28 16:06:52 -08001069 "column" : 8,
1070 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1071 }
1072 },
1073 {
1074 "op" : "assign",
1075 "parameters" : [
1076 {
1077 "type" : "field",
1078 "value" : ["ethernet", "ether_type"]
1079 },
1080 {
Yi Tsengbe342052017-11-03 10:21:23 -07001081 "type" : "hexstr",
1082 "value" : "0x8100"
1083 }
1084 ],
1085 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001086 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02001087 "line" : 66,
Yi Tsengbe342052017-11-03 10:21:23 -07001088 "column" : 31,
1089 "source_fragment" : "0x8100; ..."
1090 }
1091 },
1092 {
1093 "op" : "assign",
1094 "parameters" : [
1095 {
1096 "type" : "field",
1097 "value" : ["vlan_tag", "vlan_id"]
1098 },
1099 {
1100 "type" : "runtime_data",
1101 "value" : 0
1102 }
1103 ],
1104 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001105 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001106 "line" : 54,
Yi Tsengbe342052017-11-03 10:21:23 -07001107 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001108 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
Yi Tsengbe342052017-11-03 10:21:23 -07001109 }
1110 },
1111 {
1112 "op" : "assign",
1113 "parameters" : [
1114 {
1115 "type" : "field",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001116 "value" : ["scalars", "fabric_metadata_t.pop_vlan_when_packet_in"]
Yi Tsengbe342052017-11-03 10:21:23 -07001117 },
1118 {
1119 "type" : "expression",
1120 "value" : {
1121 "type" : "expression",
1122 "value" : {
1123 "op" : "b2d",
1124 "left" : null,
1125 "right" : {
1126 "type" : "bool",
1127 "value" : true
1128 }
1129 }
1130 }
1131 }
1132 ],
1133 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001134 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001135 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07001136 "column" : 8,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001137 "source_fragment" : "fabric_metadata.pop_vlan_when_packet_in = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001138 }
1139 }
1140 ]
1141 },
1142 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001143 "name" : "FabricIngress.filtering.set_forwarding_type",
Carmelo Casconef645e842018-07-16 18:31:52 +02001144 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001145 "runtime_data" : [
1146 {
1147 "name" : "fwd_type",
1148 "bitwidth" : 3
1149 }
1150 ],
1151 "primitives" : [
1152 {
1153 "op" : "assign",
1154 "parameters" : [
1155 {
1156 "type" : "field",
1157 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1158 },
1159 {
1160 "type" : "runtime_data",
1161 "value" : 0
1162 }
1163 ],
1164 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001165 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001166 "line" : 94,
Yi Tsengbe342052017-11-03 10:21:23 -07001167 "column" : 8,
1168 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1169 }
1170 }
1171 ]
1172 },
1173 {
Yi Tseng47eac892018-07-11 02:17:04 +08001174 "name" : "FabricIngress.forwarding.set_next_id_bridging",
Carmelo Casconef645e842018-07-16 18:31:52 +02001175 "id" : 13,
1176 "runtime_data" : [
1177 {
1178 "name" : "next_id",
1179 "bitwidth" : 32
1180 }
1181 ],
1182 "primitives" : [
1183 {
1184 "op" : "assign",
1185 "parameters" : [
1186 {
1187 "type" : "field",
1188 "value" : ["scalars", "fabric_metadata_t.next_id"]
1189 },
1190 {
1191 "type" : "runtime_data",
1192 "value" : 0
1193 }
1194 ],
1195 "source_info" : {
1196 "filename" : "include/control/forwarding.p4",
1197 "line" : 37,
1198 "column" : 8,
1199 "source_fragment" : "fabric_metadata.next_id = next_id"
1200 }
1201 }
1202 ]
1203 },
1204 {
1205 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
1206 "id" : 14,
1207 "runtime_data" : [
1208 {
1209 "name" : "next_id",
1210 "bitwidth" : 32
1211 }
1212 ],
1213 "primitives" : [
1214 {
1215 "op" : "remove_header",
1216 "parameters" : [
1217 {
1218 "type" : "header",
1219 "value" : "mpls"
1220 }
1221 ],
1222 "source_info" : {
1223 "filename" : "include/control/forwarding.p4",
1224 "line" : 60,
1225 "column" : 8,
1226 "source_fragment" : "hdr.mpls.setInvalid()"
1227 }
1228 },
1229 {
1230 "op" : "assign",
1231 "parameters" : [
1232 {
1233 "type" : "field",
1234 "value" : ["scalars", "fabric_metadata_t.next_id"]
1235 },
1236 {
1237 "type" : "runtime_data",
1238 "value" : 0
1239 }
1240 ],
1241 "source_info" : {
1242 "filename" : "include/control/forwarding.p4",
1243 "line" : 61,
1244 "column" : 8,
1245 "source_fragment" : "fabric_metadata.next_id = next_id"
1246 }
1247 }
1248 ]
1249 },
1250 {
1251 "name" : "FabricIngress.forwarding.set_next_id_unicast_v4",
1252 "id" : 15,
1253 "runtime_data" : [
1254 {
1255 "name" : "next_id",
1256 "bitwidth" : 32
1257 }
1258 ],
1259 "primitives" : [
1260 {
1261 "op" : "assign",
1262 "parameters" : [
1263 {
1264 "type" : "field",
1265 "value" : ["scalars", "fabric_metadata_t.next_id"]
1266 },
1267 {
1268 "type" : "runtime_data",
1269 "value" : 0
1270 }
1271 ],
1272 "source_info" : {
1273 "filename" : "include/control/forwarding.p4",
1274 "line" : 83,
1275 "column" : 8,
1276 "source_fragment" : "fabric_metadata.next_id = next_id"
1277 }
1278 }
1279 ]
1280 },
1281 {
1282 "name" : "FabricIngress.forwarding.set_next_id_acl",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001283 "id" : 16,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001284 "runtime_data" : [
1285 {
1286 "name" : "next_id",
1287 "bitwidth" : 32
1288 }
1289 ],
1290 "primitives" : [
1291 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001292 "op" : "assign",
1293 "parameters" : [
1294 {
1295 "type" : "field",
1296 "value" : ["scalars", "fabric_metadata_t.next_id"]
1297 },
1298 {
1299 "type" : "runtime_data",
1300 "value" : 0
1301 }
1302 ],
1303 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001304 "filename" : "include/control/forwarding.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001305 "line" : 105,
1306 "column" : 8,
1307 "source_fragment" : "fabric_metadata.next_id = next_id"
1308 }
1309 }
1310 ]
1311 },
1312 {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001313 "name" : "FabricIngress.forwarding.punt_to_cpu",
Carmelo Casconef645e842018-07-16 18:31:52 +02001314 "id" : 17,
Yi Tsengbe342052017-11-03 10:21:23 -07001315 "runtime_data" : [],
1316 "primitives" : [
1317 {
1318 "op" : "assign",
1319 "parameters" : [
1320 {
1321 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001322 "value" : ["standard_metadata", "egress_spec"]
1323 },
1324 {
1325 "type" : "hexstr",
1326 "value" : "0x00ff"
1327 }
1328 ],
1329 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001330 "filename" : "include/control/forwarding.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001331 "line" : 111,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001332 "column" : 8,
1333 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001334 }
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001335 },
1336 {
1337 "op" : "exit",
1338 "parameters" : [],
1339 "source_info" : {
1340 "filename" : "include/control/forwarding.p4",
1341 "line" : 113,
1342 "column" : 8,
1343 "source_fragment" : "exit"
1344 }
1345 }
1346 ]
1347 },
1348 {
1349 "name" : "FabricIngress.forwarding.clone_to_cpu",
1350 "id" : 18,
1351 "runtime_data" : [],
1352 "primitives" : [
1353 {
1354 "op" : "assign",
1355 "parameters" : [
1356 {
1357 "type" : "field",
1358 "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
1359 },
1360 {
1361 "type" : "expression",
1362 "value" : {
1363 "type" : "expression",
1364 "value" : {
1365 "op" : "b2d",
1366 "left" : null,
1367 "right" : {
1368 "type" : "bool",
1369 "value" : true
1370 }
1371 }
1372 }
1373 }
1374 ],
1375 "source_info" : {
1376 "filename" : "include/control/forwarding.p4",
1377 "line" : 118,
1378 "column" : 8,
1379 "source_fragment" : "fabric_metadata.clone_to_cpu = true"
1380 }
Yi Tsengbe342052017-11-03 10:21:23 -07001381 }
1382 ]
1383 },
1384 {
Yi Tseng47eac892018-07-11 02:17:04 +08001385 "name" : "FabricIngress.forwarding.drop",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001386 "id" : 19,
Yi Tseng47eac892018-07-11 02:17:04 +08001387 "runtime_data" : [],
1388 "primitives" : [
1389 {
1390 "op" : "drop",
1391 "parameters" : [],
1392 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001393 "filename" : "include/control/forwarding.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001394 "line" : 123,
Yi Tseng47eac892018-07-11 02:17:04 +08001395 "column" : 8,
1396 "source_fragment" : "mark_to_drop()"
1397 }
1398 }
1399 ]
1400 },
1401 {
Yi Tseng47eac892018-07-11 02:17:04 +08001402 "name" : "FabricIngress.next.set_vlan",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001403 "id" : 20,
Yi Tseng47eac892018-07-11 02:17:04 +08001404 "runtime_data" : [
1405 {
1406 "name" : "new_vlan_id",
1407 "bitwidth" : 12
1408 }
1409 ],
1410 "primitives" : [
1411 {
1412 "op" : "assign",
1413 "parameters" : [
1414 {
1415 "type" : "field",
1416 "value" : ["vlan_tag", "vlan_id"]
1417 },
1418 {
1419 "type" : "runtime_data",
1420 "value" : 0
1421 }
1422 ],
1423 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001424 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001425 "line" : 61,
1426 "column" : 8,
1427 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1428 }
1429 }
1430 ]
1431 },
1432 {
1433 "name" : "FabricIngress.next.output_simple",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001434 "id" : 21,
Yi Tsengbe342052017-11-03 10:21:23 -07001435 "runtime_data" : [
1436 {
1437 "name" : "port_num",
1438 "bitwidth" : 9
1439 }
1440 ],
1441 "primitives" : [
1442 {
1443 "op" : "assign",
1444 "parameters" : [
1445 {
1446 "type" : "field",
1447 "value" : ["standard_metadata", "egress_spec"]
1448 },
1449 {
1450 "type" : "runtime_data",
1451 "value" : 0
1452 }
1453 ],
1454 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001455 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001456 "line" : 85,
Yi Tsengbe342052017-11-03 10:21:23 -07001457 "column" : 8,
1458 "source_fragment" : "standard_metadata.egress_spec = port_num"
1459 }
Yi Tsengbe342052017-11-03 10:21:23 -07001460 }
1461 ]
1462 },
1463 {
Yi Tseng47eac892018-07-11 02:17:04 +08001464 "name" : "FabricIngress.next.set_vlan_output",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001465 "id" : 22,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001466 "runtime_data" : [
1467 {
1468 "name" : "new_vlan_id",
1469 "bitwidth" : 12
Yi Tseng47eac892018-07-11 02:17:04 +08001470 },
1471 {
1472 "name" : "port_num",
1473 "bitwidth" : 9
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001474 }
1475 ],
1476 "primitives" : [
1477 {
1478 "op" : "assign",
1479 "parameters" : [
1480 {
1481 "type" : "field",
1482 "value" : ["vlan_tag", "vlan_id"]
1483 },
1484 {
1485 "type" : "runtime_data",
1486 "value" : 0
1487 }
1488 ],
1489 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001490 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001491 "line" : 90,
1492 "column" : 8,
1493 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1494 }
1495 },
1496 {
1497 "op" : "assign",
1498 "parameters" : [
1499 {
1500 "type" : "field",
1501 "value" : ["standard_metadata", "egress_spec"]
1502 },
1503 {
1504 "type" : "runtime_data",
1505 "value" : 1
1506 }
1507 ],
1508 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001509 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001510 "line" : 85,
1511 "column" : 8,
1512 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1513 }
1514 }
1515 ]
1516 },
1517 {
1518 "name" : "FabricIngress.next.l3_routing_simple",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001519 "id" : 23,
Yi Tseng47eac892018-07-11 02:17:04 +08001520 "runtime_data" : [
1521 {
1522 "name" : "port_num",
1523 "bitwidth" : 9
1524 },
1525 {
1526 "name" : "smac",
1527 "bitwidth" : 48
1528 },
1529 {
1530 "name" : "dmac",
1531 "bitwidth" : 48
1532 }
1533 ],
1534 "primitives" : [
1535 {
1536 "op" : "assign",
1537 "parameters" : [
1538 {
1539 "type" : "field",
1540 "value" : ["ethernet", "src_addr"]
1541 },
1542 {
1543 "type" : "runtime_data",
1544 "value" : 1
1545 }
1546 ],
1547 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001548 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001549 "line" : 37,
1550 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001551 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1552 }
1553 },
1554 {
1555 "op" : "assign",
1556 "parameters" : [
1557 {
1558 "type" : "field",
1559 "value" : ["ethernet", "dst_addr"]
1560 },
1561 {
1562 "type" : "runtime_data",
1563 "value" : 2
1564 }
1565 ],
1566 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001567 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001568 "line" : 41,
1569 "column" : 8,
1570 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1571 }
1572 },
1573 {
1574 "op" : "assign",
1575 "parameters" : [
1576 {
1577 "type" : "field",
1578 "value" : ["standard_metadata", "egress_spec"]
1579 },
1580 {
1581 "type" : "runtime_data",
1582 "value" : 0
1583 }
1584 ],
1585 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001586 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001587 "line" : 85,
1588 "column" : 8,
1589 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001590 }
1591 }
1592 ]
1593 },
1594 {
Yi Tseng47eac892018-07-11 02:17:04 +08001595 "name" : "FabricIngress.next.mpls_routing_v4_simple",
Carmelo Casconef645e842018-07-16 18:31:52 +02001596 "id" : 24,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001597 "runtime_data" : [
1598 {
1599 "name" : "port_num",
1600 "bitwidth" : 9
1601 },
1602 {
1603 "name" : "smac",
1604 "bitwidth" : 48
1605 },
1606 {
1607 "name" : "dmac",
1608 "bitwidth" : 48
Yi Tseng47eac892018-07-11 02:17:04 +08001609 },
1610 {
1611 "name" : "label",
1612 "bitwidth" : 20
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001613 }
1614 ],
1615 "primitives" : [
1616 {
1617 "op" : "assign",
1618 "parameters" : [
1619 {
1620 "type" : "field",
1621 "value" : ["ethernet", "src_addr"]
1622 },
1623 {
1624 "type" : "runtime_data",
1625 "value" : 1
1626 }
1627 ],
1628 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001629 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001630 "line" : 37,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001631 "column" : 8,
1632 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1633 }
1634 },
1635 {
1636 "op" : "assign",
1637 "parameters" : [
1638 {
1639 "type" : "field",
1640 "value" : ["ethernet", "dst_addr"]
1641 },
1642 {
1643 "type" : "runtime_data",
1644 "value" : 2
1645 }
1646 ],
1647 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001648 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001649 "line" : 41,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001650 "column" : 8,
1651 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1652 }
1653 },
1654 {
1655 "op" : "assign",
1656 "parameters" : [
1657 {
1658 "type" : "field",
1659 "value" : ["standard_metadata", "egress_spec"]
1660 },
1661 {
1662 "type" : "runtime_data",
1663 "value" : 0
1664 }
1665 ],
1666 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001667 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001668 "line" : 85,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001669 "column" : 8,
1670 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1671 }
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001672 },
1673 {
Yi Tseng47eac892018-07-11 02:17:04 +08001674 "op" : "add_header",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001675 "parameters" : [
1676 {
Yi Tseng47eac892018-07-11 02:17:04 +08001677 "type" : "header",
1678 "value" : "mpls"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001679 }
1680 ],
1681 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001682 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001683 "line" : 46,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001684 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001685 "source_fragment" : "hdr.mpls.setValid()"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001686 }
1687 },
1688 {
1689 "op" : "assign",
1690 "parameters" : [
1691 {
1692 "type" : "field",
Yi Tseng47eac892018-07-11 02:17:04 +08001693 "value" : ["vlan_tag", "ether_type"]
Esin Karaman971fb7f2017-12-28 13:44:52 +00001694 },
1695 {
Yi Tseng47eac892018-07-11 02:17:04 +08001696 "type" : "hexstr",
1697 "value" : "0x8847"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001698 }
1699 ],
1700 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001701 "filename" : "include/control/../define.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001702 "line" : 67,
1703 "column" : 31,
1704 "source_fragment" : "0x8847; ..."
Esin Karaman971fb7f2017-12-28 13:44:52 +00001705 }
1706 },
1707 {
1708 "op" : "assign",
1709 "parameters" : [
1710 {
1711 "type" : "field",
Yi Tseng47eac892018-07-11 02:17:04 +08001712 "value" : ["mpls", "label"]
Esin Karaman971fb7f2017-12-28 13:44:52 +00001713 },
1714 {
1715 "type" : "runtime_data",
Yi Tseng47eac892018-07-11 02:17:04 +08001716 "value" : 3
Esin Karaman971fb7f2017-12-28 13:44:52 +00001717 }
1718 ],
1719 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001720 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001721 "line" : 48,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001722 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001723 "source_fragment" : "hdr.mpls.label = label; ..."
1724 }
1725 },
1726 {
1727 "op" : "assign",
1728 "parameters" : [
1729 {
1730 "type" : "field",
1731 "value" : ["mpls", "tc"]
1732 },
1733 {
1734 "type" : "hexstr",
1735 "value" : "0x00"
1736 }
1737 ],
1738 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001739 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001740 "line" : 49,
1741 "column" : 8,
1742 "source_fragment" : "hdr.mpls.tc = tc; ..."
1743 }
1744 },
1745 {
1746 "op" : "assign",
1747 "parameters" : [
1748 {
1749 "type" : "field",
1750 "value" : ["mpls", "bos"]
1751 },
1752 {
1753 "type" : "hexstr",
1754 "value" : "0x01"
1755 }
1756 ],
1757 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001758 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001759 "line" : 50,
1760 "column" : 8,
1761 "source_fragment" : "hdr.mpls.bos = 1w1"
1762 }
1763 },
1764 {
1765 "op" : "assign",
1766 "parameters" : [
1767 {
1768 "type" : "field",
1769 "value" : ["mpls", "ttl"]
1770 },
1771 {
1772 "type" : "hexstr",
1773 "value" : "0x40"
1774 }
1775 ],
1776 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001777 "filename" : "include/control/../define.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001778 "line" : 87,
1779 "column" : 32,
1780 "source_fragment" : "64; ..."
Esin Karaman971fb7f2017-12-28 13:44:52 +00001781 }
1782 }
1783 ]
1784 },
1785 {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001786 "name" : "FabricIngress.next.mpls_routing_v6_simple",
Carmelo Casconef645e842018-07-16 18:31:52 +02001787 "id" : 25,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001788 "runtime_data" : [
1789 {
1790 "name" : "port_num",
1791 "bitwidth" : 9
1792 },
1793 {
1794 "name" : "smac",
1795 "bitwidth" : 48
1796 },
1797 {
1798 "name" : "dmac",
1799 "bitwidth" : 48
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001800 },
1801 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001802 "name" : "label",
1803 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001804 }
1805 ],
1806 "primitives" : [
1807 {
1808 "op" : "assign",
1809 "parameters" : [
1810 {
1811 "type" : "field",
1812 "value" : ["ethernet", "src_addr"]
1813 },
1814 {
1815 "type" : "runtime_data",
1816 "value" : 1
1817 }
1818 ],
1819 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001820 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001821 "line" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07001822 "column" : 8,
1823 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1824 }
1825 },
1826 {
1827 "op" : "assign",
1828 "parameters" : [
1829 {
1830 "type" : "field",
1831 "value" : ["ethernet", "dst_addr"]
1832 },
1833 {
1834 "type" : "runtime_data",
1835 "value" : 2
1836 }
1837 ],
1838 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001839 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001840 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001841 "column" : 8,
1842 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1843 }
1844 },
1845 {
1846 "op" : "assign",
1847 "parameters" : [
1848 {
1849 "type" : "field",
1850 "value" : ["standard_metadata", "egress_spec"]
1851 },
1852 {
1853 "type" : "runtime_data",
1854 "value" : 0
1855 }
1856 ],
1857 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001858 "filename" : "include/control/next.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001859 "line" : 85,
Yi Tsengbe342052017-11-03 10:21:23 -07001860 "column" : 8,
1861 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1862 }
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001863 },
1864 {
1865 "op" : "add_header",
1866 "parameters" : [
1867 {
1868 "type" : "header",
1869 "value" : "mpls"
1870 }
1871 ],
1872 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001873 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001874 "line" : 46,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001875 "column" : 8,
1876 "source_fragment" : "hdr.mpls.setValid()"
1877 }
1878 },
1879 {
1880 "op" : "assign",
1881 "parameters" : [
1882 {
1883 "type" : "field",
1884 "value" : ["vlan_tag", "ether_type"]
1885 },
1886 {
1887 "type" : "hexstr",
1888 "value" : "0x8847"
1889 }
1890 ],
1891 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001892 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02001893 "line" : 67,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001894 "column" : 31,
1895 "source_fragment" : "0x8847; ..."
1896 }
1897 },
1898 {
1899 "op" : "assign",
1900 "parameters" : [
1901 {
1902 "type" : "field",
1903 "value" : ["mpls", "label"]
1904 },
1905 {
1906 "type" : "runtime_data",
1907 "value" : 3
1908 }
1909 ],
1910 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001911 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001912 "line" : 48,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001913 "column" : 8,
1914 "source_fragment" : "hdr.mpls.label = label; ..."
1915 }
1916 },
1917 {
1918 "op" : "assign",
1919 "parameters" : [
1920 {
1921 "type" : "field",
1922 "value" : ["mpls", "tc"]
1923 },
1924 {
1925 "type" : "hexstr",
1926 "value" : "0x00"
1927 }
1928 ],
1929 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001930 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001931 "line" : 49,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001932 "column" : 8,
1933 "source_fragment" : "hdr.mpls.tc = tc; ..."
1934 }
1935 },
1936 {
1937 "op" : "assign",
1938 "parameters" : [
1939 {
1940 "type" : "field",
1941 "value" : ["mpls", "bos"]
1942 },
1943 {
1944 "type" : "hexstr",
1945 "value" : "0x01"
1946 }
1947 ],
1948 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001949 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001950 "line" : 50,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001951 "column" : 8,
1952 "source_fragment" : "hdr.mpls.bos = 1w1"
1953 }
1954 },
1955 {
1956 "op" : "assign",
1957 "parameters" : [
1958 {
1959 "type" : "field",
1960 "value" : ["mpls", "ttl"]
1961 },
1962 {
1963 "type" : "hexstr",
1964 "value" : "0x40"
1965 }
1966 ],
1967 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001968 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02001969 "line" : 87,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001970 "column" : 32,
1971 "source_fragment" : "64; ..."
1972 }
Yi Tsengbe342052017-11-03 10:21:23 -07001973 }
1974 ]
1975 },
1976 {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001977 "name" : "FabricIngress.next.l3_routing_vlan",
1978 "id" : 26,
1979 "runtime_data" : [
1980 {
1981 "name" : "port_num",
1982 "bitwidth" : 9
1983 },
1984 {
1985 "name" : "smac",
1986 "bitwidth" : 48
1987 },
1988 {
1989 "name" : "dmac",
1990 "bitwidth" : 48
1991 },
1992 {
1993 "name" : "new_vlan_id",
1994 "bitwidth" : 12
1995 }
1996 ],
1997 "primitives" : [
1998 {
1999 "op" : "assign",
2000 "parameters" : [
2001 {
2002 "type" : "field",
2003 "value" : ["ethernet", "src_addr"]
2004 },
2005 {
2006 "type" : "runtime_data",
2007 "value" : 1
2008 }
2009 ],
2010 "source_info" : {
2011 "filename" : "include/control/next.p4",
2012 "line" : 37,
2013 "column" : 8,
2014 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2015 }
2016 },
2017 {
2018 "op" : "assign",
2019 "parameters" : [
2020 {
2021 "type" : "field",
2022 "value" : ["ethernet", "dst_addr"]
2023 },
2024 {
2025 "type" : "runtime_data",
2026 "value" : 2
2027 }
2028 ],
2029 "source_info" : {
2030 "filename" : "include/control/next.p4",
2031 "line" : 41,
2032 "column" : 8,
2033 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2034 }
2035 },
2036 {
2037 "op" : "assign",
2038 "parameters" : [
2039 {
2040 "type" : "field",
2041 "value" : ["vlan_tag", "vlan_id"]
2042 },
2043 {
2044 "type" : "runtime_data",
2045 "value" : 3
2046 }
2047 ],
2048 "source_info" : {
2049 "filename" : "include/control/next.p4",
2050 "line" : 90,
2051 "column" : 8,
2052 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
2053 }
2054 },
2055 {
2056 "op" : "assign",
2057 "parameters" : [
2058 {
2059 "type" : "field",
2060 "value" : ["standard_metadata", "egress_spec"]
2061 },
2062 {
2063 "type" : "runtime_data",
2064 "value" : 0
2065 }
2066 ],
2067 "source_info" : {
2068 "filename" : "include/control/next.p4",
2069 "line" : 85,
2070 "column" : 8,
2071 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2072 }
2073 }
2074 ]
2075 },
2076 {
2077 "name" : "FabricIngress.next.l3_routing_hashed",
2078 "id" : 27,
2079 "runtime_data" : [
2080 {
2081 "name" : "port_num",
2082 "bitwidth" : 9
2083 },
2084 {
2085 "name" : "smac",
2086 "bitwidth" : 48
2087 },
2088 {
2089 "name" : "dmac",
2090 "bitwidth" : 48
2091 }
2092 ],
2093 "primitives" : [
2094 {
2095 "op" : "assign",
2096 "parameters" : [
2097 {
2098 "type" : "field",
2099 "value" : ["ethernet", "src_addr"]
2100 },
2101 {
2102 "type" : "runtime_data",
2103 "value" : 1
2104 }
2105 ],
2106 "source_info" : {
2107 "filename" : "include/control/next.p4",
2108 "line" : 37,
2109 "column" : 8,
2110 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2111 }
2112 },
2113 {
2114 "op" : "assign",
2115 "parameters" : [
2116 {
2117 "type" : "field",
2118 "value" : ["ethernet", "dst_addr"]
2119 },
2120 {
2121 "type" : "runtime_data",
2122 "value" : 2
2123 }
2124 ],
2125 "source_info" : {
2126 "filename" : "include/control/next.p4",
2127 "line" : 41,
2128 "column" : 8,
2129 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2130 }
2131 },
2132 {
2133 "op" : "assign",
2134 "parameters" : [
2135 {
2136 "type" : "field",
2137 "value" : ["standard_metadata", "egress_spec"]
2138 },
2139 {
2140 "type" : "runtime_data",
2141 "value" : 0
2142 }
2143 ],
2144 "source_info" : {
2145 "filename" : "include/control/next.p4",
2146 "line" : 149,
2147 "column" : 8,
2148 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2149 }
2150 }
2151 ]
2152 },
2153 {
2154 "name" : "FabricIngress.next.mpls_routing_v4_hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02002155 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002156 "runtime_data" : [
2157 {
2158 "name" : "port_num",
2159 "bitwidth" : 9
2160 },
2161 {
2162 "name" : "smac",
2163 "bitwidth" : 48
2164 },
2165 {
2166 "name" : "dmac",
2167 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002168 },
2169 {
2170 "name" : "label",
2171 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07002172 }
2173 ],
2174 "primitives" : [
2175 {
2176 "op" : "assign",
2177 "parameters" : [
2178 {
2179 "type" : "field",
2180 "value" : ["ethernet", "src_addr"]
2181 },
2182 {
2183 "type" : "runtime_data",
2184 "value" : 1
2185 }
2186 ],
2187 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002188 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002189 "line" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07002190 "column" : 8,
2191 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2192 }
2193 },
2194 {
2195 "op" : "assign",
2196 "parameters" : [
2197 {
2198 "type" : "field",
2199 "value" : ["ethernet", "dst_addr"]
2200 },
2201 {
2202 "type" : "runtime_data",
2203 "value" : 2
2204 }
2205 ],
2206 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002207 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002208 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07002209 "column" : 8,
2210 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2211 }
2212 },
2213 {
2214 "op" : "assign",
2215 "parameters" : [
2216 {
2217 "type" : "field",
2218 "value" : ["standard_metadata", "egress_spec"]
2219 },
2220 {
2221 "type" : "runtime_data",
2222 "value" : 0
2223 }
2224 ],
2225 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002226 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002227 "line" : 149,
Yi Tsengbe342052017-11-03 10:21:23 -07002228 "column" : 8,
2229 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2230 }
Yi Tsengbe342052017-11-03 10:21:23 -07002231 },
2232 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002233 "op" : "add_header",
Yi Tsengbe342052017-11-03 10:21:23 -07002234 "parameters" : [
2235 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002236 "type" : "header",
2237 "value" : "mpls"
Yi Tsengbe342052017-11-03 10:21:23 -07002238 }
2239 ],
2240 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002241 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002242 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002243 "column" : 8,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002244 "source_fragment" : "hdr.mpls.setValid()"
2245 }
2246 },
2247 {
2248 "op" : "assign",
2249 "parameters" : [
2250 {
2251 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002252 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08002253 },
2254 {
2255 "type" : "hexstr",
2256 "value" : "0x8847"
2257 }
2258 ],
2259 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002260 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02002261 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002262 "column" : 31,
2263 "source_fragment" : "0x8847; ..."
2264 }
2265 },
2266 {
2267 "op" : "assign",
2268 "parameters" : [
2269 {
2270 "type" : "field",
2271 "value" : ["mpls", "label"]
2272 },
2273 {
2274 "type" : "runtime_data",
2275 "value" : 3
2276 }
2277 ],
2278 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002279 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002280 "line" : 48,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002281 "column" : 8,
2282 "source_fragment" : "hdr.mpls.label = label; ..."
2283 }
2284 },
2285 {
2286 "op" : "assign",
2287 "parameters" : [
2288 {
2289 "type" : "field",
2290 "value" : ["mpls", "tc"]
2291 },
2292 {
Yi Tseng1d842672017-11-28 16:06:52 -08002293 "type" : "hexstr",
2294 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002295 }
2296 ],
2297 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002298 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002299 "line" : 49,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002300 "column" : 8,
2301 "source_fragment" : "hdr.mpls.tc = tc; ..."
2302 }
2303 },
2304 {
2305 "op" : "assign",
2306 "parameters" : [
2307 {
2308 "type" : "field",
2309 "value" : ["mpls", "bos"]
2310 },
2311 {
2312 "type" : "hexstr",
2313 "value" : "0x01"
2314 }
2315 ],
2316 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002317 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002318 "line" : 50,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002319 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002320 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002321 }
2322 },
2323 {
2324 "op" : "assign",
2325 "parameters" : [
2326 {
2327 "type" : "field",
2328 "value" : ["mpls", "ttl"]
2329 },
2330 {
2331 "type" : "hexstr",
2332 "value" : "0x40"
2333 }
2334 ],
2335 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002336 "filename" : "include/control/../define.p4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002337 "line" : 87,
2338 "column" : 32,
2339 "source_fragment" : "64; ..."
2340 }
2341 }
2342 ]
2343 },
2344 {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002345 "name" : "FabricIngress.next.mpls_routing_v6_hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02002346 "id" : 29,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002347 "runtime_data" : [
2348 {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002349 "name" : "port_num",
2350 "bitwidth" : 9
2351 },
2352 {
2353 "name" : "smac",
2354 "bitwidth" : 48
2355 },
2356 {
2357 "name" : "dmac",
2358 "bitwidth" : 48
2359 },
2360 {
2361 "name" : "label",
2362 "bitwidth" : 20
2363 }
2364 ],
2365 "primitives" : [
2366 {
2367 "op" : "assign",
2368 "parameters" : [
2369 {
2370 "type" : "field",
2371 "value" : ["ethernet", "src_addr"]
2372 },
2373 {
2374 "type" : "runtime_data",
2375 "value" : 1
2376 }
2377 ],
2378 "source_info" : {
2379 "filename" : "include/control/next.p4",
2380 "line" : 37,
2381 "column" : 8,
2382 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2383 }
2384 },
2385 {
2386 "op" : "assign",
2387 "parameters" : [
2388 {
2389 "type" : "field",
2390 "value" : ["ethernet", "dst_addr"]
2391 },
2392 {
2393 "type" : "runtime_data",
2394 "value" : 2
2395 }
2396 ],
2397 "source_info" : {
2398 "filename" : "include/control/next.p4",
2399 "line" : 41,
2400 "column" : 8,
2401 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2402 }
2403 },
2404 {
2405 "op" : "assign",
2406 "parameters" : [
2407 {
2408 "type" : "field",
2409 "value" : ["standard_metadata", "egress_spec"]
2410 },
2411 {
2412 "type" : "runtime_data",
2413 "value" : 0
2414 }
2415 ],
2416 "source_info" : {
2417 "filename" : "include/control/next.p4",
2418 "line" : 149,
2419 "column" : 8,
2420 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2421 }
2422 },
2423 {
2424 "op" : "add_header",
2425 "parameters" : [
2426 {
2427 "type" : "header",
2428 "value" : "mpls"
2429 }
2430 ],
2431 "source_info" : {
2432 "filename" : "include/control/next.p4",
2433 "line" : 46,
2434 "column" : 8,
2435 "source_fragment" : "hdr.mpls.setValid()"
2436 }
2437 },
2438 {
2439 "op" : "assign",
2440 "parameters" : [
2441 {
2442 "type" : "field",
2443 "value" : ["vlan_tag", "ether_type"]
2444 },
2445 {
2446 "type" : "hexstr",
2447 "value" : "0x8847"
2448 }
2449 ],
2450 "source_info" : {
2451 "filename" : "include/control/../define.p4",
2452 "line" : 67,
2453 "column" : 31,
2454 "source_fragment" : "0x8847; ..."
2455 }
2456 },
2457 {
2458 "op" : "assign",
2459 "parameters" : [
2460 {
2461 "type" : "field",
2462 "value" : ["mpls", "label"]
2463 },
2464 {
2465 "type" : "runtime_data",
2466 "value" : 3
2467 }
2468 ],
2469 "source_info" : {
2470 "filename" : "include/control/next.p4",
2471 "line" : 48,
2472 "column" : 8,
2473 "source_fragment" : "hdr.mpls.label = label; ..."
2474 }
2475 },
2476 {
2477 "op" : "assign",
2478 "parameters" : [
2479 {
2480 "type" : "field",
2481 "value" : ["mpls", "tc"]
2482 },
2483 {
2484 "type" : "hexstr",
2485 "value" : "0x00"
2486 }
2487 ],
2488 "source_info" : {
2489 "filename" : "include/control/next.p4",
2490 "line" : 49,
2491 "column" : 8,
2492 "source_fragment" : "hdr.mpls.tc = tc; ..."
2493 }
2494 },
2495 {
2496 "op" : "assign",
2497 "parameters" : [
2498 {
2499 "type" : "field",
2500 "value" : ["mpls", "bos"]
2501 },
2502 {
2503 "type" : "hexstr",
2504 "value" : "0x01"
2505 }
2506 ],
2507 "source_info" : {
2508 "filename" : "include/control/next.p4",
2509 "line" : 50,
2510 "column" : 8,
2511 "source_fragment" : "hdr.mpls.bos = 1w1"
2512 }
2513 },
2514 {
2515 "op" : "assign",
2516 "parameters" : [
2517 {
2518 "type" : "field",
2519 "value" : ["mpls", "ttl"]
2520 },
2521 {
2522 "type" : "hexstr",
2523 "value" : "0x40"
2524 }
2525 ],
2526 "source_info" : {
2527 "filename" : "include/control/../define.p4",
2528 "line" : 87,
2529 "column" : 32,
2530 "source_fragment" : "64; ..."
2531 }
2532 }
2533 ]
2534 },
2535 {
2536 "name" : "FabricIngress.next.set_mcast_group",
2537 "id" : 30,
2538 "runtime_data" : [
2539 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00002540 "name" : "gid",
2541 "bitwidth" : 16
2542 }
2543 ],
2544 "primitives" : [
2545 {
2546 "op" : "assign",
2547 "parameters" : [
2548 {
2549 "type" : "field",
2550 "value" : ["standard_metadata", "mcast_grp"]
2551 },
2552 {
2553 "type" : "runtime_data",
2554 "value" : 0
2555 }
2556 ],
2557 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002558 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08002559 "line" : 202,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002560 "column" : 8,
2561 "source_fragment" : "standard_metadata.mcast_grp = gid"
2562 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002563 },
2564 {
2565 "op" : "assign",
2566 "parameters" : [
2567 {
2568 "type" : "field",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002569 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002570 },
2571 {
2572 "type" : "expression",
2573 "value" : {
2574 "type" : "expression",
2575 "value" : {
2576 "op" : "b2d",
2577 "left" : null,
2578 "right" : {
2579 "type" : "bool",
2580 "value" : true
2581 }
2582 }
2583 }
2584 }
2585 ],
2586 "source_info" : {
2587 "filename" : "include/control/next.p4",
2588 "line" : 203,
2589 "column" : 8,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002590 "source_fragment" : "fabric_metadata.is_multicast = true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002591 }
Esin Karaman971fb7f2017-12-28 13:44:52 +00002592 }
2593 ]
2594 },
2595 {
2596 "name" : "act",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002597 "id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07002598 "runtime_data" : [],
2599 "primitives" : [
2600 {
2601 "op" : "assign",
2602 "parameters" : [
2603 {
2604 "type" : "field",
2605 "value" : ["standard_metadata", "egress_spec"]
2606 },
2607 {
2608 "type" : "field",
2609 "value" : ["packet_out", "egress_port"]
2610 }
2611 ],
2612 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002613 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002614 "line" : 26,
2615 "column" : 12,
2616 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2617 }
Yi Tseng1d842672017-11-28 16:06:52 -08002618 },
2619 {
2620 "op" : "remove_header",
2621 "parameters" : [
2622 {
2623 "type" : "header",
2624 "value" : "packet_out"
2625 }
2626 ],
2627 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002628 "filename" : "include/control/packetio.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002629 "line" : 27,
2630 "column" : 12,
2631 "source_fragment" : "hdr.packet_out.setInvalid()"
2632 }
Yi Tsengbe342052017-11-03 10:21:23 -07002633 }
2634 ]
2635 },
2636 {
2637 "name" : "act_0",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002638 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002639 "runtime_data" : [],
2640 "primitives" : [
2641 {
2642 "op" : "assign",
2643 "parameters" : [
2644 {
2645 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002646 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002647 },
2648 {
2649 "type" : "hexstr",
2650 "value" : "0x0800"
2651 }
2652 ],
2653 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002654 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02002655 "line" : 69,
Yi Tseng1d842672017-11-28 16:06:52 -08002656 "column" : 31,
2657 "source_fragment" : "0x0800; ..."
2658 }
Yi Tseng1d842672017-11-28 16:06:52 -08002659 }
2660 ]
2661 },
2662 {
2663 "name" : "act_1",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002664 "id" : 33,
Yi Tseng1d842672017-11-28 16:06:52 -08002665 "runtime_data" : [],
2666 "primitives" : [
2667 {
2668 "op" : "assign",
2669 "parameters" : [
2670 {
2671 "type" : "field",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002672 "value" : ["scalars", "next_hasReturned_0"]
Yi Tseng1d842672017-11-28 16:06:52 -08002673 },
2674 {
2675 "type" : "expression",
2676 "value" : {
2677 "type" : "expression",
2678 "value" : {
2679 "op" : "b2d",
2680 "left" : null,
2681 "right" : {
2682 "type" : "bool",
2683 "value" : false
2684 }
2685 }
2686 }
2687 }
2688 ]
2689 }
2690 ]
2691 },
2692 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02002693 "name" : "act_2",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002694 "id" : 34,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002695 "runtime_data" : [],
2696 "primitives" : [
2697 {
2698 "op" : "assign",
2699 "parameters" : [
2700 {
2701 "type" : "field",
2702 "value" : ["scalars", "next_tmp_4"]
2703 },
2704 {
2705 "type" : "expression",
2706 "value" : {
2707 "type" : "expression",
2708 "value" : {
2709 "op" : "b2d",
2710 "left" : null,
2711 "right" : {
2712 "type" : "bool",
2713 "value" : true
2714 }
2715 }
2716 }
2717 }
2718 ]
2719 }
2720 ]
2721 },
2722 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002723 "name" : "act_3",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002724 "id" : 35,
Yi Tseng1d842672017-11-28 16:06:52 -08002725 "runtime_data" : [],
2726 "primitives" : [
2727 {
2728 "op" : "assign",
2729 "parameters" : [
2730 {
2731 "type" : "field",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002732 "value" : ["scalars", "next_tmp_4"]
2733 },
2734 {
2735 "type" : "expression",
2736 "value" : {
2737 "type" : "expression",
2738 "value" : {
2739 "op" : "b2d",
2740 "left" : null,
2741 "right" : {
2742 "type" : "bool",
2743 "value" : false
2744 }
2745 }
2746 }
2747 }
2748 ]
2749 }
2750 ]
2751 },
2752 {
2753 "name" : "act_4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002754 "id" : 36,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002755 "runtime_data" : [],
2756 "primitives" : [
2757 {
2758 "op" : "assign",
2759 "parameters" : [
2760 {
2761 "type" : "field",
2762 "value" : ["scalars", "next_tmp_3"]
2763 },
2764 {
2765 "type" : "expression",
2766 "value" : {
2767 "type" : "expression",
2768 "value" : {
2769 "op" : "b2d",
2770 "left" : null,
2771 "right" : {
2772 "type" : "bool",
2773 "value" : true
2774 }
2775 }
2776 }
2777 }
2778 ]
2779 }
2780 ]
2781 },
2782 {
2783 "name" : "act_5",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002784 "id" : 37,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002785 "runtime_data" : [],
2786 "primitives" : [
2787 {
2788 "op" : "assign",
2789 "parameters" : [
2790 {
2791 "type" : "field",
2792 "value" : ["scalars", "next_tmp_3"]
2793 },
2794 {
2795 "type" : "expression",
2796 "value" : {
2797 "type" : "expression",
2798 "value" : {
2799 "op" : "b2d",
2800 "left" : null,
2801 "right" : {
2802 "type" : "bool",
2803 "value" : false
2804 }
2805 }
2806 }
2807 }
2808 ]
2809 }
2810 ]
2811 },
2812 {
2813 "name" : "act_6",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002814 "id" : 38,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002815 "runtime_data" : [],
2816 "primitives" : [
2817 {
2818 "op" : "assign",
2819 "parameters" : [
2820 {
2821 "type" : "field",
2822 "value" : ["scalars", "next_tmp_2"]
2823 },
2824 {
2825 "type" : "expression",
2826 "value" : {
2827 "type" : "expression",
2828 "value" : {
2829 "op" : "b2d",
2830 "left" : null,
2831 "right" : {
2832 "type" : "bool",
2833 "value" : true
2834 }
2835 }
2836 }
2837 }
2838 ]
2839 }
2840 ]
2841 },
2842 {
2843 "name" : "act_7",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002844 "id" : 39,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002845 "runtime_data" : [],
2846 "primitives" : [
2847 {
2848 "op" : "assign",
2849 "parameters" : [
2850 {
2851 "type" : "field",
2852 "value" : ["scalars", "next_tmp_2"]
2853 },
2854 {
2855 "type" : "expression",
2856 "value" : {
2857 "type" : "expression",
2858 "value" : {
2859 "op" : "b2d",
2860 "left" : null,
2861 "right" : {
2862 "type" : "bool",
2863 "value" : false
2864 }
2865 }
2866 }
2867 }
2868 ]
2869 }
2870 ]
2871 },
2872 {
2873 "name" : "act_8",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002874 "id" : 40,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002875 "runtime_data" : [],
2876 "primitives" : [
2877 {
2878 "op" : "assign",
2879 "parameters" : [
2880 {
2881 "type" : "field",
2882 "value" : ["scalars", "next_hasReturned_0"]
2883 },
2884 {
2885 "type" : "expression",
2886 "value" : {
2887 "type" : "expression",
2888 "value" : {
2889 "op" : "b2d",
2890 "left" : null,
2891 "right" : {
2892 "type" : "bool",
2893 "value" : true
2894 }
2895 }
2896 }
2897 }
2898 ],
2899 "source_info" : {
2900 "filename" : "include/control/next.p4",
2901 "line" : 223,
2902 "column" : 20,
2903 "source_fragment" : "return"
2904 }
2905 }
2906 ]
2907 },
2908 {
2909 "name" : "act_9",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002910 "id" : 41,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002911 "runtime_data" : [],
2912 "primitives" : [
2913 {
2914 "op" : "assign",
2915 "parameters" : [
2916 {
2917 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002918 "value" : ["ipv4", "ttl"]
2919 },
2920 {
2921 "type" : "expression",
2922 "value" : {
2923 "type" : "expression",
2924 "value" : {
2925 "op" : "&",
2926 "left" : {
2927 "type" : "expression",
2928 "value" : {
2929 "op" : "+",
2930 "left" : {
2931 "type" : "field",
2932 "value" : ["ipv4", "ttl"]
2933 },
2934 "right" : {
2935 "type" : "hexstr",
2936 "value" : "0xff"
2937 }
2938 }
2939 },
2940 "right" : {
2941 "type" : "hexstr",
2942 "value" : "0xff"
2943 }
2944 }
2945 }
2946 }
2947 ],
2948 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002949 "filename" : "include/control/next.p4",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002950 "line" : 230,
2951 "column" : 16,
Yi Tseng1d842672017-11-28 16:06:52 -08002952 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2953 }
2954 }
2955 ]
2956 },
2957 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02002958 "name" : "act_10",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02002959 "id" : 42,
Yi Tseng1d842672017-11-28 16:06:52 -08002960 "runtime_data" : [],
2961 "primitives" : [
2962 {
2963 "op" : "assign",
2964 "parameters" : [
2965 {
2966 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002967 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002968 },
2969 {
2970 "type" : "expression",
2971 "value" : {
2972 "type" : "expression",
2973 "value" : {
2974 "op" : "&",
2975 "left" : {
2976 "type" : "field",
2977 "value" : ["standard_metadata", "egress_spec"]
2978 },
2979 "right" : {
2980 "type" : "hexstr",
2981 "value" : "0xffffffff"
2982 }
2983 }
2984 }
2985 }
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002986 ],
2987 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002988 "filename" : "include/control/port_counter.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002989 "line" : 28,
2990 "column" : 38,
2991 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2992 }
Yi Tsengbe342052017-11-03 10:21:23 -07002993 },
2994 {
2995 "op" : "count",
2996 "parameters" : [
2997 {
2998 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002999 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07003000 },
3001 {
3002 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08003003 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07003004 }
3005 ],
3006 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003007 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003008 "line" : 28,
3009 "column" : 12,
3010 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
3011 }
3012 }
3013 ]
3014 },
3015 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003016 "name" : "act_11",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003017 "id" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07003018 "runtime_data" : [],
3019 "primitives" : [
3020 {
3021 "op" : "assign",
3022 "parameters" : [
3023 {
3024 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08003025 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07003026 },
3027 {
3028 "type" : "expression",
3029 "value" : {
3030 "type" : "expression",
3031 "value" : {
3032 "op" : "&",
3033 "left" : {
3034 "type" : "field",
3035 "value" : ["standard_metadata", "ingress_port"]
3036 },
3037 "right" : {
3038 "type" : "hexstr",
3039 "value" : "0xffffffff"
3040 }
3041 }
3042 }
3043 }
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003044 ],
3045 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003046 "filename" : "include/control/port_counter.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003047 "line" : 31,
3048 "column" : 39,
3049 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
3050 }
Yi Tsengbe342052017-11-03 10:21:23 -07003051 },
3052 {
3053 "op" : "count",
3054 "parameters" : [
3055 {
3056 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003057 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07003058 },
3059 {
3060 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08003061 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07003062 }
3063 ],
3064 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003065 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003066 "line" : 31,
3067 "column" : 12,
3068 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
3069 }
3070 }
3071 ]
3072 },
3073 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003074 "name" : "nop",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003075 "id" : 44,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003076 "runtime_data" : [],
3077 "primitives" : []
3078 },
3079 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003080 "name" : "drop_now",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003081 "id" : 45,
3082 "runtime_data" : [],
3083 "primitives" : [
3084 {
3085 "op" : "drop",
3086 "parameters" : [],
3087 "source_info" : {
3088 "filename" : "include/control/../action.p4",
3089 "line" : 24,
3090 "column" : 4,
3091 "source_fragment" : "mark_to_drop()"
3092 }
3093 },
3094 {
3095 "op" : "exit",
3096 "parameters" : [],
3097 "source_info" : {
3098 "filename" : "include/control/../action.p4",
3099 "line" : 25,
3100 "column" : 4,
3101 "source_fragment" : "exit"
3102 }
3103 }
3104 ]
3105 },
3106 {
3107 "name" : "drop_now",
3108 "id" : 46,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003109 "runtime_data" : [],
3110 "primitives" : [
3111 {
3112 "op" : "drop",
3113 "parameters" : [],
3114 "source_info" : {
3115 "filename" : "include/control/../action.p4",
3116 "line" : 24,
3117 "column" : 4,
3118 "source_fragment" : "mark_to_drop()"
3119 }
3120 },
3121 {
3122 "op" : "exit",
3123 "parameters" : [],
3124 "source_info" : {
3125 "filename" : "include/control/../action.p4",
3126 "line" : 25,
3127 "column" : 4,
3128 "source_fragment" : "exit"
3129 }
3130 }
3131 ]
3132 },
3133 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003134 "name" : "FabricEgress.pkt_io_egress.pop_vlan",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003135 "id" : 47,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003136 "runtime_data" : [],
3137 "primitives" : [
3138 {
3139 "op" : "assign",
3140 "parameters" : [
3141 {
3142 "type" : "field",
3143 "value" : ["ethernet", "ether_type"]
3144 },
3145 {
3146 "type" : "field",
3147 "value" : ["vlan_tag", "ether_type"]
3148 }
3149 ],
3150 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003151 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003152 "line" : 38,
3153 "column" : 8,
3154 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
3155 }
3156 },
3157 {
3158 "op" : "remove_header",
3159 "parameters" : [
3160 {
3161 "type" : "header",
3162 "value" : "vlan_tag"
3163 }
3164 ],
3165 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003166 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003167 "line" : 39,
3168 "column" : 8,
3169 "source_fragment" : "hdr.vlan_tag.setInvalid()"
3170 }
3171 }
3172 ]
3173 },
3174 {
3175 "name" : "FabricEgress.egress_next.pop_vlan",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003176 "id" : 48,
Yi Tseng1d842672017-11-28 16:06:52 -08003177 "runtime_data" : [],
3178 "primitives" : [
3179 {
3180 "op" : "assign",
3181 "parameters" : [
3182 {
3183 "type" : "field",
3184 "value" : ["ethernet", "ether_type"]
3185 },
3186 {
3187 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08003188 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08003189 }
3190 ],
3191 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003192 "filename" : "include/control/next.p4",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003193 "line" : 253,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003194 "column" : 8,
Yi Tsengbd46d052018-01-22 17:18:16 -08003195 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
Yi Tseng1d842672017-11-28 16:06:52 -08003196 }
Yi Tsengbd46d052018-01-22 17:18:16 -08003197 },
Yi Tsengbe342052017-11-03 10:21:23 -07003198 {
3199 "op" : "remove_header",
3200 "parameters" : [
3201 {
3202 "type" : "header",
3203 "value" : "vlan_tag"
3204 }
3205 ],
3206 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003207 "filename" : "include/control/next.p4",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003208 "line" : 254,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003209 "column" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003210 "source_fragment" : "hdr.vlan_tag.setInvalid()"
3211 }
3212 }
3213 ]
3214 },
3215 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003216 "name" : "act_12",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003217 "id" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07003218 "runtime_data" : [],
3219 "primitives" : [
3220 {
3221 "op" : "add_header",
3222 "parameters" : [
3223 {
3224 "type" : "header",
3225 "value" : "packet_in"
3226 }
3227 ],
3228 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003229 "filename" : "include/control/packetio.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003230 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07003231 "column" : 12,
3232 "source_fragment" : "hdr.packet_in.setValid()"
3233 }
3234 },
3235 {
3236 "op" : "assign",
3237 "parameters" : [
3238 {
3239 "type" : "field",
3240 "value" : ["packet_in", "ingress_port"]
3241 },
3242 {
3243 "type" : "field",
3244 "value" : ["standard_metadata", "ingress_port"]
3245 }
3246 ],
3247 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003248 "filename" : "include/control/packetio.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003249 "line" : 52,
Yi Tsengbe342052017-11-03 10:21:23 -07003250 "column" : 12,
3251 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
3252 }
3253 }
3254 ]
Yi Tsengbe342052017-11-03 10:21:23 -07003255 }
3256 ],
3257 "pipelines" : [
3258 {
3259 "name" : "ingress",
3260 "id" : 0,
3261 "source_info" : {
3262 "filename" : "fabric.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08003263 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07003264 "column" : 8,
3265 "source_fragment" : "FabricIngress"
3266 },
3267 "init_table" : "node_2",
3268 "tables" : [
3269 {
3270 "name" : "tbl_act",
3271 "id" : 0,
3272 "key" : [],
3273 "match_type" : "exact",
3274 "type" : "simple",
3275 "max_size" : 1024,
3276 "with_counters" : false,
3277 "support_timeout" : false,
3278 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003279 "action_ids" : [31],
Yi Tsengbe342052017-11-03 10:21:23 -07003280 "actions" : ["act"],
3281 "base_default_next" : null,
3282 "next_tables" : {
3283 "act" : null
3284 },
3285 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003286 "action_id" : 31,
Yi Tsengbe342052017-11-03 10:21:23 -07003287 "action_const" : true,
3288 "action_data" : [],
3289 "action_entry_const" : true
3290 }
3291 },
3292 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003293 "name" : "FabricIngress.filtering.ingress_port_vlan",
Yi Tsengbe342052017-11-03 10:21:23 -07003294 "id" : 1,
3295 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003296 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003297 "line" : 61,
Yi Tsengbe342052017-11-03 10:21:23 -07003298 "column" : 10,
3299 "source_fragment" : "ingress_port_vlan"
3300 },
3301 "key" : [
3302 {
3303 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003304 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003305 "target" : ["standard_metadata", "ingress_port"],
3306 "mask" : null
3307 },
3308 {
3309 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003310 "name" : "hdr.vlan_tag.is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07003311 "target" : ["vlan_tag", "$valid$"],
3312 "mask" : null
3313 },
3314 {
3315 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003316 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003317 "target" : ["vlan_tag", "vlan_id"],
3318 "mask" : null
3319 }
3320 ],
3321 "match_type" : "ternary",
3322 "type" : "simple",
3323 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003324 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003325 "support_timeout" : false,
3326 "direct_meters" : null,
Carmelo Casconef645e842018-07-16 18:31:52 +02003327 "action_ids" : [11, 10, 0, 9],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003328 "actions" : ["FabricIngress.filtering.push_internal_vlan", "FabricIngress.filtering.set_vlan", "nop", "FabricIngress.filtering.drop"],
3329 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07003330 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003331 "FabricIngress.filtering.push_internal_vlan" : "FabricIngress.filtering.fwd_classifier",
3332 "FabricIngress.filtering.set_vlan" : "FabricIngress.filtering.fwd_classifier",
3333 "nop" : "FabricIngress.filtering.fwd_classifier",
3334 "FabricIngress.filtering.drop" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07003335 },
3336 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08003337 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07003338 "action_const" : true,
3339 "action_data" : [],
3340 "action_entry_const" : true
3341 }
3342 },
3343 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003344 "name" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07003345 "id" : 2,
3346 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003347 "filename" : "include/control/filtering.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003348 "line" : 98,
Yi Tsengbe342052017-11-03 10:21:23 -07003349 "column" : 10,
3350 "source_fragment" : "fwd_classifier"
3351 },
3352 "key" : [
3353 {
3354 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003355 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003356 "target" : ["standard_metadata", "ingress_port"],
3357 "mask" : null
3358 },
3359 {
3360 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003361 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003362 "target" : ["ethernet", "dst_addr"],
3363 "mask" : null
3364 },
3365 {
3366 "match_type" : "exact",
Yi Tseng8235a1a2018-07-24 20:57:28 +08003367 "name" : "hdr.vlan_tag.ether_type",
3368 "target" : ["vlan_tag", "ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07003369 "mask" : null
3370 }
3371 ],
3372 "match_type" : "exact",
3373 "type" : "simple",
3374 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003375 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003376 "support_timeout" : false,
3377 "direct_meters" : null,
Carmelo Casconef645e842018-07-16 18:31:52 +02003378 "action_ids" : [12],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003379 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07003380 "base_default_next" : "node_6",
3381 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003382 "FabricIngress.filtering.set_forwarding_type" : "node_6"
Yi Tsengbe342052017-11-03 10:21:23 -07003383 },
3384 "default_entry" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003385 "action_id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003386 "action_const" : true,
3387 "action_data" : ["0x0"],
3388 "action_entry_const" : true
3389 }
3390 },
3391 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003392 "name" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07003393 "id" : 3,
3394 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003395 "filename" : "include/control/forwarding.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003396 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07003397 "column" : 10,
3398 "source_fragment" : "bridging"
3399 },
3400 "key" : [
3401 {
3402 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003403 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003404 "target" : ["vlan_tag", "vlan_id"],
3405 "mask" : null
3406 },
3407 {
3408 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003409 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003410 "target" : ["ethernet", "dst_addr"],
3411 "mask" : null
3412 }
3413 ],
3414 "match_type" : "ternary",
3415 "type" : "simple",
3416 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003417 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003418 "support_timeout" : false,
3419 "direct_meters" : null,
Carmelo Casconef645e842018-07-16 18:31:52 +02003420 "action_ids" : [13, 3],
Yi Tseng47eac892018-07-11 02:17:04 +08003421 "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "NoAction"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003422 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003423 "next_tables" : {
Yi Tseng47eac892018-07-11 02:17:04 +08003424 "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.forwarding.acl",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003425 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003426 },
3427 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003428 "action_id" : 3,
Yi Tseng1d842672017-11-28 16:06:52 -08003429 "action_const" : false,
3430 "action_data" : [],
3431 "action_entry_const" : false
3432 }
3433 },
3434 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003435 "name" : "FabricIngress.forwarding.mpls",
Yi Tseng1d842672017-11-28 16:06:52 -08003436 "id" : 4,
3437 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003438 "filename" : "include/control/forwarding.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003439 "line" : 65,
Yi Tseng1d842672017-11-28 16:06:52 -08003440 "column" : 10,
3441 "source_fragment" : "mpls"
3442 },
3443 "key" : [
3444 {
3445 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003446 "name" : "hdr.mpls.label",
Yi Tseng1d842672017-11-28 16:06:52 -08003447 "target" : ["mpls", "label"],
3448 "mask" : null
3449 }
3450 ],
3451 "match_type" : "exact",
3452 "type" : "simple",
3453 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003454 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003455 "support_timeout" : false,
3456 "direct_meters" : null,
Carmelo Casconef645e842018-07-16 18:31:52 +02003457 "action_ids" : [14, 4],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003458 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003459 "base_default_next" : "tbl_act_0",
Yi Tseng1d842672017-11-28 16:06:52 -08003460 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003461 "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_act_0",
Yi Tsengbd46d052018-01-22 17:18:16 -08003462 "NoAction" : "tbl_act_0"
Yi Tseng1d842672017-11-28 16:06:52 -08003463 },
3464 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003465 "action_id" : 4,
Yi Tseng1d842672017-11-28 16:06:52 -08003466 "action_const" : false,
3467 "action_data" : [],
3468 "action_entry_const" : false
3469 }
3470 },
3471 {
3472 "name" : "tbl_act_0",
3473 "id" : 5,
3474 "key" : [],
3475 "match_type" : "exact",
3476 "type" : "simple",
3477 "max_size" : 1024,
3478 "with_counters" : false,
3479 "support_timeout" : false,
3480 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003481 "action_ids" : [32],
Yi Tseng1d842672017-11-28 16:06:52 -08003482 "actions" : ["act_0"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003483 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003484 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003485 "act_0" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003486 },
3487 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003488 "action_id" : 32,
Yi Tseng1d842672017-11-28 16:06:52 -08003489 "action_const" : true,
3490 "action_data" : [],
3491 "action_entry_const" : true
3492 }
3493 },
3494 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003495 "name" : "FabricIngress.forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003496 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003497 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003498 "filename" : "include/control/forwarding.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003499 "line" : 87,
Yi Tseng1d842672017-11-28 16:06:52 -08003500 "column" : 10,
3501 "source_fragment" : "unicast_v4"
3502 },
3503 "key" : [
3504 {
3505 "match_type" : "lpm",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003506 "name" : "hdr.ipv4.dst_addr",
Yi Tseng1d842672017-11-28 16:06:52 -08003507 "target" : ["ipv4", "dst_addr"],
3508 "mask" : null
3509 }
3510 ],
3511 "match_type" : "lpm",
3512 "type" : "simple",
3513 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003514 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003515 "support_timeout" : false,
3516 "direct_meters" : null,
Carmelo Casconef645e842018-07-16 18:31:52 +02003517 "action_ids" : [15, 5],
Yi Tseng47eac892018-07-11 02:17:04 +08003518 "actions" : ["FabricIngress.forwarding.set_next_id_unicast_v4", "NoAction"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003519 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003520 "next_tables" : {
Yi Tseng47eac892018-07-11 02:17:04 +08003521 "FabricIngress.forwarding.set_next_id_unicast_v4" : "FabricIngress.forwarding.acl",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003522 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003523 },
3524 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003525 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003526 "action_const" : false,
3527 "action_data" : [],
3528 "action_entry_const" : false
3529 }
3530 },
3531 {
Carmelo Casconef645e842018-07-16 18:31:52 +02003532 "name" : "FabricIngress.forwarding.acl",
Yi Tsengbd46d052018-01-22 17:18:16 -08003533 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003534 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003535 "filename" : "include/control/forwarding.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003536 "line" : 127,
Yi Tsengbe342052017-11-03 10:21:23 -07003537 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003538 "source_fragment" : "acl"
3539 },
3540 "key" : [
3541 {
3542 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003543 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003544 "target" : ["standard_metadata", "ingress_port"],
3545 "mask" : null
3546 },
3547 {
3548 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003549 "name" : "fabric_metadata.ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003550 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3551 "mask" : null
3552 },
3553 {
3554 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003555 "name" : "fabric_metadata.l4_src_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003556 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3557 "mask" : null
3558 },
3559 {
3560 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003561 "name" : "fabric_metadata.l4_dst_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003562 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3563 "mask" : null
3564 },
3565 {
3566 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003567 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003568 "target" : ["ethernet", "dst_addr"],
3569 "mask" : null
3570 },
3571 {
3572 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003573 "name" : "hdr.ethernet.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003574 "target" : ["ethernet", "src_addr"],
3575 "mask" : null
3576 },
3577 {
3578 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003579 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003580 "target" : ["vlan_tag", "vlan_id"],
3581 "mask" : null
3582 },
3583 {
3584 "match_type" : "ternary",
Yi Tseng8235a1a2018-07-24 20:57:28 +08003585 "name" : "hdr.vlan_tag.ether_type",
3586 "target" : ["vlan_tag", "ether_type"],
3587 "mask" : null
3588 },
3589 {
3590 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003591 "name" : "hdr.ipv4.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003592 "target" : ["ipv4", "src_addr"],
3593 "mask" : null
3594 },
3595 {
3596 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003597 "name" : "hdr.ipv4.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003598 "target" : ["ipv4", "dst_addr"],
3599 "mask" : null
3600 },
3601 {
3602 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003603 "name" : "hdr.icmp.icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003604 "target" : ["icmp", "icmp_type"],
3605 "mask" : null
3606 },
3607 {
3608 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003609 "name" : "hdr.icmp.icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003610 "target" : ["icmp", "icmp_code"],
3611 "mask" : null
3612 }
3613 ],
3614 "match_type" : "ternary",
3615 "type" : "simple",
Yi Tseng8235a1a2018-07-24 20:57:28 +08003616 "max_size" : 128,
Yi Tsengbd46d052018-01-22 17:18:16 -08003617 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003618 "support_timeout" : false,
3619 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003620 "action_ids" : [16, 17, 18, 19, 1],
3621 "actions" : ["FabricIngress.forwarding.set_next_id_acl", "FabricIngress.forwarding.punt_to_cpu", "FabricIngress.forwarding.clone_to_cpu", "FabricIngress.forwarding.drop", "nop"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003622 "base_default_next" : "tbl_act_1",
Yi Tsengbe342052017-11-03 10:21:23 -07003623 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003624 "FabricIngress.forwarding.set_next_id_acl" : "tbl_act_1",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003625 "FabricIngress.forwarding.punt_to_cpu" : "tbl_act_1",
3626 "FabricIngress.forwarding.clone_to_cpu" : "tbl_act_1",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003627 "FabricIngress.forwarding.drop" : "tbl_act_1",
3628 "nop" : "tbl_act_1"
Yi Tsengbe342052017-11-03 10:21:23 -07003629 },
3630 "default_entry" : {
3631 "action_id" : 1,
3632 "action_const" : true,
3633 "action_data" : [],
3634 "action_entry_const" : true
3635 }
3636 },
3637 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003638 "name" : "tbl_act_1",
Carmelo Casconef645e842018-07-16 18:31:52 +02003639 "id" : 8,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003640 "key" : [],
3641 "match_type" : "exact",
3642 "type" : "simple",
3643 "max_size" : 1024,
3644 "with_counters" : false,
3645 "support_timeout" : false,
3646 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003647 "action_ids" : [33],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003648 "actions" : ["act_1"],
3649 "base_default_next" : "FabricIngress.next.vlan_meta",
3650 "next_tables" : {
3651 "act_1" : "FabricIngress.next.vlan_meta"
3652 },
3653 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003654 "action_id" : 33,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003655 "action_const" : true,
3656 "action_data" : [],
3657 "action_entry_const" : true
3658 }
3659 },
3660 {
3661 "name" : "FabricIngress.next.vlan_meta",
3662 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003663 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003664 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003665 "line" : 65,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003666 "column" : 10,
3667 "source_fragment" : "vlan_meta"
3668 },
3669 "key" : [
3670 {
3671 "match_type" : "exact",
3672 "name" : "fabric_metadata.next_id",
3673 "target" : ["scalars", "fabric_metadata_t.next_id"],
3674 "mask" : null
3675 }
3676 ],
3677 "match_type" : "exact",
3678 "type" : "simple",
3679 "max_size" : 1024,
3680 "with_counters" : true,
3681 "support_timeout" : false,
3682 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003683 "action_ids" : [20, 2],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003684 "actions" : ["FabricIngress.next.set_vlan", "nop"],
3685 "base_default_next" : "FabricIngress.next.simple",
3686 "next_tables" : {
3687 "FabricIngress.next.set_vlan" : "FabricIngress.next.simple",
3688 "nop" : "FabricIngress.next.simple"
3689 },
3690 "default_entry" : {
3691 "action_id" : 2,
3692 "action_const" : false,
3693 "action_data" : [],
3694 "action_entry_const" : false
3695 }
3696 },
3697 {
3698 "name" : "FabricIngress.next.simple",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003699 "id" : 10,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003700 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003701 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003702 "line" : 122,
Yi Tsengbe342052017-11-03 10:21:23 -07003703 "column" : 10,
3704 "source_fragment" : "simple"
3705 },
3706 "key" : [
3707 {
3708 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003709 "name" : "fabric_metadata.next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003710 "target" : ["scalars", "fabric_metadata_t.next_id"],
3711 "mask" : null
3712 }
3713 ],
3714 "match_type" : "exact",
3715 "type" : "simple",
3716 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003717 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003718 "support_timeout" : false,
3719 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003720 "action_ids" : [21, 22, 23, 24, 25, 26, 6],
Yi Tseng47eac892018-07-11 02:17:04 +08003721 "actions" : ["FabricIngress.next.output_simple", "FabricIngress.next.set_vlan_output", "FabricIngress.next.l3_routing_simple", "FabricIngress.next.mpls_routing_v4_simple", "FabricIngress.next.mpls_routing_v6_simple", "FabricIngress.next.l3_routing_vlan", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003722 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003723 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003724 "__HIT__" : "tbl_act_2",
3725 "__MISS__" : "tbl_act_3"
Yi Tsengbe342052017-11-03 10:21:23 -07003726 },
3727 "default_entry" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003728 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003729 "action_const" : false,
3730 "action_data" : [],
3731 "action_entry_const" : false
3732 }
3733 },
3734 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003735 "name" : "tbl_act_2",
Carmelo Casconef645e842018-07-16 18:31:52 +02003736 "id" : 11,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003737 "key" : [],
3738 "match_type" : "exact",
3739 "type" : "simple",
3740 "max_size" : 1024,
3741 "with_counters" : false,
3742 "support_timeout" : false,
3743 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003744 "action_ids" : [34],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003745 "actions" : ["act_2"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003746 "base_default_next" : "node_19",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003747 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003748 "act_2" : "node_19"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003749 },
3750 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003751 "action_id" : 34,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003752 "action_const" : true,
3753 "action_data" : [],
3754 "action_entry_const" : true
3755 }
3756 },
3757 {
3758 "name" : "tbl_act_3",
Carmelo Casconef645e842018-07-16 18:31:52 +02003759 "id" : 12,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003760 "key" : [],
3761 "match_type" : "exact",
3762 "type" : "simple",
3763 "max_size" : 1024,
3764 "with_counters" : false,
3765 "support_timeout" : false,
3766 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003767 "action_ids" : [35],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003768 "actions" : ["act_3"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003769 "base_default_next" : "node_19",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003770 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003771 "act_3" : "node_19"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003772 },
3773 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003774 "action_id" : 35,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003775 "action_const" : true,
3776 "action_data" : [],
3777 "action_entry_const" : true
3778 }
3779 },
3780 {
3781 "name" : "FabricIngress.next.hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02003782 "id" : 13,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003783 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003784 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08003785 "line" : 175,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003786 "column" : 10,
3787 "source_fragment" : "hashed"
3788 },
3789 "key" : [
3790 {
3791 "match_type" : "exact",
3792 "name" : "fabric_metadata.next_id",
3793 "target" : ["scalars", "fabric_metadata_t.next_id"],
3794 "mask" : null
3795 }
3796 ],
3797 "match_type" : "exact",
3798 "type" : "indirect_ws",
3799 "action_profile" : "FabricIngress.next.ecmp_selector",
3800 "max_size" : 1024,
3801 "with_counters" : true,
3802 "support_timeout" : false,
3803 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003804 "action_ids" : [27, 28, 29, 7],
Yi Tseng47eac892018-07-11 02:17:04 +08003805 "actions" : ["FabricIngress.next.l3_routing_hashed", "FabricIngress.next.mpls_routing_v4_hashed", "FabricIngress.next.mpls_routing_v6_hashed", "NoAction"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003806 "base_default_next" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003807 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003808 "__HIT__" : "tbl_act_4",
3809 "__MISS__" : "tbl_act_5"
3810 }
3811 },
3812 {
3813 "name" : "tbl_act_4",
3814 "id" : 14,
3815 "key" : [],
3816 "match_type" : "exact",
3817 "type" : "simple",
3818 "max_size" : 1024,
3819 "with_counters" : false,
3820 "support_timeout" : false,
3821 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003822 "action_ids" : [36],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003823 "actions" : ["act_4"],
3824 "base_default_next" : "node_23",
3825 "next_tables" : {
3826 "act_4" : "node_23"
3827 },
3828 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003829 "action_id" : 36,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003830 "action_const" : true,
3831 "action_data" : [],
3832 "action_entry_const" : true
3833 }
3834 },
3835 {
3836 "name" : "tbl_act_5",
3837 "id" : 15,
3838 "key" : [],
3839 "match_type" : "exact",
3840 "type" : "simple",
3841 "max_size" : 1024,
3842 "with_counters" : false,
3843 "support_timeout" : false,
3844 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003845 "action_ids" : [37],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003846 "actions" : ["act_5"],
3847 "base_default_next" : "node_23",
3848 "next_tables" : {
3849 "act_5" : "node_23"
3850 },
3851 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003852 "action_id" : 37,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003853 "action_const" : true,
3854 "action_data" : [],
3855 "action_entry_const" : true
Esin Karaman971fb7f2017-12-28 13:44:52 +00003856 }
3857 },
3858 {
3859 "name" : "FabricIngress.next.multicast",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003860 "id" : 16,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003861 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003862 "filename" : "include/control/next.p4",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003863 "line" : 207,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003864 "column" : 10,
3865 "source_fragment" : "multicast"
3866 },
3867 "key" : [
3868 {
3869 "match_type" : "exact",
3870 "name" : "fabric_metadata.next_id",
3871 "target" : ["scalars", "fabric_metadata_t.next_id"],
3872 "mask" : null
3873 }
3874 ],
3875 "match_type" : "exact",
3876 "type" : "simple",
3877 "max_size" : 1024,
3878 "with_counters" : true,
3879 "support_timeout" : false,
3880 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003881 "action_ids" : [30, 8],
Esin Karaman971fb7f2017-12-28 13:44:52 +00003882 "actions" : ["FabricIngress.next.set_mcast_group", "NoAction"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003883 "base_default_next" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003884 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003885 "__HIT__" : "tbl_act_6",
3886 "__MISS__" : "tbl_act_7"
Esin Karaman971fb7f2017-12-28 13:44:52 +00003887 },
3888 "default_entry" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003889 "action_id" : 8,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003890 "action_const" : false,
3891 "action_data" : [],
3892 "action_entry_const" : false
Yi Tseng27b9bc02018-04-12 14:52:40 +08003893 }
3894 },
3895 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003896 "name" : "tbl_act_6",
3897 "id" : 17,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003898 "key" : [],
3899 "match_type" : "exact",
3900 "type" : "simple",
3901 "max_size" : 1024,
3902 "with_counters" : false,
3903 "support_timeout" : false,
3904 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003905 "action_ids" : [38],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003906 "actions" : ["act_6"],
3907 "base_default_next" : "node_27",
Esin Karaman971fb7f2017-12-28 13:44:52 +00003908 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003909 "act_6" : "node_27"
Esin Karaman971fb7f2017-12-28 13:44:52 +00003910 },
3911 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003912 "action_id" : 38,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003913 "action_const" : true,
3914 "action_data" : [],
3915 "action_entry_const" : true
3916 }
3917 },
3918 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003919 "name" : "tbl_act_7",
3920 "id" : 18,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003921 "key" : [],
3922 "match_type" : "exact",
3923 "type" : "simple",
3924 "max_size" : 1024,
3925 "with_counters" : false,
3926 "support_timeout" : false,
3927 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003928 "action_ids" : [39],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003929 "actions" : ["act_7"],
3930 "base_default_next" : "node_27",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003931 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02003932 "act_7" : "node_27"
Yi Tseng27b9bc02018-04-12 14:52:40 +08003933 },
3934 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003935 "action_id" : 39,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003936 "action_const" : true,
3937 "action_data" : [],
3938 "action_entry_const" : true
3939 }
3940 },
3941 {
3942 "name" : "tbl_act_8",
3943 "id" : 19,
3944 "key" : [],
3945 "match_type" : "exact",
3946 "type" : "simple",
3947 "max_size" : 1024,
3948 "with_counters" : false,
3949 "support_timeout" : false,
3950 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003951 "action_ids" : [40],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003952 "actions" : ["act_8"],
3953 "base_default_next" : "node_29",
3954 "next_tables" : {
3955 "act_8" : "node_29"
3956 },
3957 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003958 "action_id" : 40,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003959 "action_const" : true,
3960 "action_data" : [],
3961 "action_entry_const" : true
3962 }
3963 },
3964 {
3965 "name" : "tbl_act_9",
3966 "id" : 20,
3967 "key" : [],
3968 "match_type" : "exact",
3969 "type" : "simple",
3970 "max_size" : 1024,
3971 "with_counters" : false,
3972 "support_timeout" : false,
3973 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003974 "action_ids" : [41],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003975 "actions" : ["act_9"],
3976 "base_default_next" : "node_33",
3977 "next_tables" : {
3978 "act_9" : "node_33"
3979 },
3980 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003981 "action_id" : 41,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003982 "action_const" : true,
3983 "action_data" : [],
3984 "action_entry_const" : true
3985 }
3986 },
3987 {
3988 "name" : "tbl_act_10",
3989 "id" : 21,
3990 "key" : [],
3991 "match_type" : "exact",
3992 "type" : "simple",
3993 "max_size" : 1024,
3994 "with_counters" : false,
3995 "support_timeout" : false,
3996 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02003997 "action_ids" : [42],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003998 "actions" : ["act_10"],
3999 "base_default_next" : "node_35",
4000 "next_tables" : {
4001 "act_10" : "node_35"
4002 },
4003 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004004 "action_id" : 42,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004005 "action_const" : true,
4006 "action_data" : [],
4007 "action_entry_const" : true
4008 }
4009 },
4010 {
4011 "name" : "tbl_act_11",
4012 "id" : 22,
4013 "key" : [],
4014 "match_type" : "exact",
4015 "type" : "simple",
4016 "max_size" : 1024,
4017 "with_counters" : false,
4018 "support_timeout" : false,
4019 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004020 "action_ids" : [43],
Carmelo Casconea5400af2018-07-17 22:11:54 +02004021 "actions" : ["act_11"],
4022 "base_default_next" : null,
4023 "next_tables" : {
4024 "act_11" : null
4025 },
4026 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004027 "action_id" : 43,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004028 "action_const" : true,
4029 "action_data" : [],
4030 "action_entry_const" : true
4031 }
Yi Tsengbe342052017-11-03 10:21:23 -07004032 }
4033 ],
4034 "action_profiles" : [
4035 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004036 "name" : "FabricIngress.next.ecmp_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07004037 "id" : 0,
4038 "max_size" : 64,
4039 "selector" : {
4040 "algo" : "crc16",
4041 "input" : [
4042 {
4043 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08004044 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07004045 },
4046 {
4047 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08004048 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07004049 },
4050 {
4051 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08004052 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07004053 },
4054 {
4055 "type" : "field",
4056 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
4057 },
4058 {
4059 "type" : "field",
4060 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
4061 }
4062 ]
4063 }
4064 }
4065 ],
4066 "conditionals" : [
4067 {
4068 "name" : "node_2",
4069 "id" : 0,
4070 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004071 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07004072 "line" : 25,
4073 "column" : 12,
4074 "source_fragment" : "hdr.packet_out.isValid()"
4075 },
4076 "expression" : {
4077 "type" : "expression",
4078 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08004079 "op" : "d2b",
4080 "left" : null,
4081 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07004082 "type" : "field",
4083 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07004084 }
4085 }
4086 },
4087 "true_next" : "tbl_act",
Yi Tseng27b9bc02018-04-12 14:52:40 +08004088 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Yi Tsengbe342052017-11-03 10:21:23 -07004089 },
4090 {
4091 "name" : "node_6",
4092 "id" : 1,
4093 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004094 "filename" : "include/control/forwarding.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004095 "line" : 231,
Yi Tsengbe342052017-11-03 10:21:23 -07004096 "column" : 11,
4097 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
4098 },
4099 "expression" : {
4100 "type" : "expression",
4101 "value" : {
4102 "op" : "==",
4103 "left" : {
4104 "type" : "field",
4105 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4106 },
4107 "right" : {
4108 "type" : "hexstr",
4109 "value" : "0x00"
4110 }
4111 }
4112 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08004113 "true_next" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07004114 "false_next" : "node_8"
4115 },
4116 {
4117 "name" : "node_8",
4118 "id" : 2,
4119 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004120 "filename" : "include/control/forwarding.p4",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004121 "line" : 232,
Yi Tsengbe342052017-11-03 10:21:23 -07004122 "column" : 17,
4123 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
4124 },
4125 "expression" : {
4126 "type" : "expression",
4127 "value" : {
4128 "op" : "==",
4129 "left" : {
4130 "type" : "field",
4131 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4132 },
4133 "right" : {
4134 "type" : "hexstr",
4135 "value" : "0x01"
4136 }
4137 }
4138 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08004139 "true_next" : "FabricIngress.forwarding.mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -08004140 "false_next" : "node_11"
Yi Tsengbe342052017-11-03 10:21:23 -07004141 },
4142 {
Yi Tsengbd46d052018-01-22 17:18:16 -08004143 "name" : "node_11",
Yi Tsengbe342052017-11-03 10:21:23 -07004144 "id" : 3,
4145 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004146 "filename" : "include/control/forwarding.p4",
Yi Tseng8235a1a2018-07-24 20:57:28 +08004147 "line" : 246,
Yi Tsengbe342052017-11-03 10:21:23 -07004148 "column" : 17,
4149 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
4150 },
4151 "expression" : {
4152 "type" : "expression",
4153 "value" : {
4154 "op" : "==",
4155 "left" : {
4156 "type" : "field",
4157 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4158 },
4159 "right" : {
4160 "type" : "hexstr",
4161 "value" : "0x02"
4162 }
4163 }
4164 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08004165 "true_next" : "FabricIngress.forwarding.unicast_v4",
Yi Tseng27b9bc02018-04-12 14:52:40 +08004166 "false_next" : "FabricIngress.forwarding.acl"
4167 },
4168 {
Carmelo Casconef645e842018-07-16 18:31:52 +02004169 "name" : "node_19",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004170 "id" : 4,
Yi Tseng1d842672017-11-28 16:06:52 -08004171 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004172 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08004173 "line" : 219,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004174 "column" : 12,
4175 "source_fragment" : "!simple.apply().hit"
4176 },
4177 "expression" : {
4178 "type" : "expression",
4179 "value" : {
4180 "op" : "not",
4181 "left" : null,
4182 "right" : {
4183 "type" : "expression",
4184 "value" : {
4185 "op" : "d2b",
4186 "left" : null,
4187 "right" : {
4188 "type" : "field",
4189 "value" : ["scalars", "next_tmp_4"]
4190 }
4191 }
4192 }
4193 }
4194 },
4195 "true_next" : "FabricIngress.next.hashed",
4196 "false_next" : "node_29"
4197 },
4198 {
4199 "name" : "node_23",
4200 "id" : 5,
4201 "source_info" : {
4202 "filename" : "include/control/next.p4",
4203 "line" : 220,
Yi Tsengbd46d052018-01-22 17:18:16 -08004204 "column" : 16,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004205 "source_fragment" : "!hashed.apply().hit"
4206 },
4207 "expression" : {
4208 "type" : "expression",
4209 "value" : {
4210 "op" : "not",
4211 "left" : null,
4212 "right" : {
4213 "type" : "expression",
4214 "value" : {
4215 "op" : "d2b",
4216 "left" : null,
4217 "right" : {
4218 "type" : "field",
4219 "value" : ["scalars", "next_tmp_3"]
4220 }
4221 }
4222 }
4223 }
4224 },
4225 "true_next" : "FabricIngress.next.multicast",
4226 "false_next" : "node_29"
4227 },
4228 {
4229 "name" : "node_27",
4230 "id" : 6,
4231 "source_info" : {
4232 "filename" : "include/control/next.p4",
4233 "line" : 221,
4234 "column" : 20,
4235 "source_fragment" : "!multicast.apply().hit"
4236 },
4237 "expression" : {
4238 "type" : "expression",
4239 "value" : {
4240 "op" : "not",
4241 "left" : null,
4242 "right" : {
4243 "type" : "expression",
4244 "value" : {
4245 "op" : "d2b",
4246 "left" : null,
4247 "right" : {
4248 "type" : "field",
4249 "value" : ["scalars", "next_tmp_2"]
4250 }
4251 }
4252 }
4253 }
4254 },
4255 "true_next" : "tbl_act_8",
4256 "false_next" : "node_29"
4257 },
4258 {
4259 "name" : "node_29",
4260 "id" : 7,
4261 "expression" : {
4262 "type" : "expression",
4263 "value" : {
4264 "op" : "not",
4265 "left" : null,
4266 "right" : {
4267 "type" : "expression",
4268 "value" : {
4269 "op" : "d2b",
4270 "left" : null,
4271 "right" : {
4272 "type" : "field",
4273 "value" : ["scalars", "next_hasReturned_0"]
4274 }
4275 }
4276 }
4277 }
4278 },
4279 "true_next" : "node_30",
4280 "false_next" : "node_33"
4281 },
4282 {
4283 "name" : "node_30",
4284 "id" : 8,
4285 "source_info" : {
4286 "filename" : "include/control/next.p4",
4287 "line" : 228,
4288 "column" : 12,
Yi Tsengbd46d052018-01-22 17:18:16 -08004289 "source_fragment" : "!hdr.mpls.isValid()"
Yi Tseng1d842672017-11-28 16:06:52 -08004290 },
4291 "expression" : {
4292 "type" : "expression",
4293 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08004294 "op" : "not",
4295 "left" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08004296 "right" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08004297 "type" : "expression",
4298 "value" : {
4299 "op" : "d2b",
4300 "left" : null,
4301 "right" : {
4302 "type" : "field",
4303 "value" : ["mpls", "$valid$"]
4304 }
4305 }
Yi Tseng1d842672017-11-28 16:06:52 -08004306 }
4307 }
4308 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02004309 "true_next" : "node_31",
4310 "false_next" : "node_33"
Yi Tseng1d842672017-11-28 16:06:52 -08004311 },
4312 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004313 "name" : "node_31",
4314 "id" : 9,
Yi Tseng1d842672017-11-28 16:06:52 -08004315 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004316 "filename" : "include/control/next.p4",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004317 "line" : 229,
4318 "column" : 15,
Yi Tseng1d842672017-11-28 16:06:52 -08004319 "source_fragment" : "hdr.ipv4.isValid()"
4320 },
4321 "expression" : {
4322 "type" : "expression",
4323 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08004324 "op" : "d2b",
4325 "left" : null,
4326 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08004327 "type" : "field",
4328 "value" : ["ipv4", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08004329 }
4330 }
4331 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02004332 "true_next" : "tbl_act_9",
4333 "false_next" : "node_33"
Yi Tseng27b9bc02018-04-12 14:52:40 +08004334 },
4335 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004336 "name" : "node_33",
4337 "id" : 10,
Yi Tseng27b9bc02018-04-12 14:52:40 +08004338 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004339 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07004340 "line" : 27,
4341 "column" : 12,
4342 "source_fragment" : "standard_metadata.egress_spec < 511"
4343 },
4344 "expression" : {
4345 "type" : "expression",
4346 "value" : {
4347 "op" : "<",
4348 "left" : {
4349 "type" : "field",
4350 "value" : ["standard_metadata", "egress_spec"]
4351 },
4352 "right" : {
4353 "type" : "hexstr",
4354 "value" : "0x01ff"
4355 }
4356 }
4357 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02004358 "true_next" : "tbl_act_10",
4359 "false_next" : "node_35"
Yi Tsengbe342052017-11-03 10:21:23 -07004360 },
4361 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004362 "name" : "node_35",
4363 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07004364 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004365 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07004366 "line" : 30,
4367 "column" : 12,
4368 "source_fragment" : "standard_metadata.ingress_port < 511"
4369 },
4370 "expression" : {
4371 "type" : "expression",
4372 "value" : {
4373 "op" : "<",
4374 "left" : {
4375 "type" : "field",
4376 "value" : ["standard_metadata", "ingress_port"]
4377 },
4378 "right" : {
4379 "type" : "hexstr",
4380 "value" : "0x01ff"
4381 }
4382 }
4383 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08004384 "false_next" : null,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004385 "true_next" : "tbl_act_11"
Yi Tseng3a5731e2018-01-22 11:38:58 -08004386 }
4387 ]
4388 },
4389 {
4390 "name" : "egress",
4391 "id" : 1,
4392 "source_info" : {
4393 "filename" : "fabric.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004394 "line" : 61,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004395 "column" : 8,
4396 "source_fragment" : "FabricEgress"
4397 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02004398 "init_table" : "node_39",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004399 "tables" : [
4400 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004401 "name" : "tbl_drop_now",
4402 "id" : 23,
4403 "key" : [],
4404 "match_type" : "exact",
4405 "type" : "simple",
4406 "max_size" : 1024,
4407 "with_counters" : false,
4408 "support_timeout" : false,
4409 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004410 "action_ids" : [45],
Carmelo Casconea5400af2018-07-17 22:11:54 +02004411 "actions" : ["drop_now"],
4412 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
4413 "next_tables" : {
4414 "drop_now" : "FabricEgress.egress_next.egress_vlan"
4415 },
4416 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004417 "action_id" : 45,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004418 "action_const" : true,
4419 "action_data" : [],
4420 "action_entry_const" : true
4421 }
4422 },
4423 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004424 "name" : "FabricEgress.egress_next.egress_vlan",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004425 "id" : 24,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004426 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004427 "filename" : "include/control/next.p4",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004428 "line" : 258,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004429 "column" : 10,
4430 "source_fragment" : "egress_vlan"
4431 },
4432 "key" : [
4433 {
4434 "match_type" : "exact",
4435 "name" : "hdr.vlan_tag.vlan_id",
4436 "target" : ["vlan_tag", "vlan_id"],
4437 "mask" : null
4438 },
4439 {
4440 "match_type" : "exact",
4441 "name" : "standard_metadata.egress_port",
4442 "target" : ["standard_metadata", "egress_port"],
4443 "mask" : null
4444 }
4445 ],
4446 "match_type" : "exact",
4447 "type" : "simple",
4448 "max_size" : 1024,
Yi Tseng47eac892018-07-11 02:17:04 +08004449 "with_counters" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004450 "support_timeout" : false,
4451 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004452 "action_ids" : [48, 44],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004453 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02004454 "base_default_next" : "node_42",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004455 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004456 "FabricEgress.egress_next.pop_vlan" : "node_42",
4457 "nop" : "node_42"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004458 },
4459 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004460 "action_id" : 44,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004461 "action_const" : false,
4462 "action_data" : [],
4463 "action_entry_const" : false
4464 }
4465 },
4466 {
4467 "name" : "tbl_pkt_io_egress_pop_vlan",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004468 "id" : 25,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004469 "key" : [],
4470 "match_type" : "exact",
4471 "type" : "simple",
4472 "max_size" : 1024,
4473 "with_counters" : false,
4474 "support_timeout" : false,
4475 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004476 "action_ids" : [47],
Esin Karaman971fb7f2017-12-28 13:44:52 +00004477 "actions" : ["FabricEgress.pkt_io_egress.pop_vlan"],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004478 "base_default_next" : "node_45",
Esin Karaman971fb7f2017-12-28 13:44:52 +00004479 "next_tables" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004480 "FabricEgress.pkt_io_egress.pop_vlan" : "node_45"
Esin Karaman971fb7f2017-12-28 13:44:52 +00004481 },
4482 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004483 "action_id" : 47,
Esin Karaman971fb7f2017-12-28 13:44:52 +00004484 "action_const" : true,
4485 "action_data" : [],
4486 "action_entry_const" : true
4487 }
4488 },
4489 {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004490 "name" : "tbl_drop_now_0",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004491 "id" : 26,
Esin Karaman971fb7f2017-12-28 13:44:52 +00004492 "key" : [],
4493 "match_type" : "exact",
4494 "type" : "simple",
4495 "max_size" : 1024,
4496 "with_counters" : false,
4497 "support_timeout" : false,
4498 "direct_meters" : null,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004499 "action_ids" : [46],
4500 "actions" : ["drop_now"],
4501 "base_default_next" : "tbl_act_12",
4502 "next_tables" : {
4503 "drop_now" : "tbl_act_12"
4504 },
4505 "default_entry" : {
4506 "action_id" : 46,
4507 "action_const" : true,
4508 "action_data" : [],
4509 "action_entry_const" : true
4510 }
4511 },
4512 {
4513 "name" : "tbl_act_12",
4514 "id" : 27,
4515 "key" : [],
4516 "match_type" : "exact",
4517 "type" : "simple",
4518 "max_size" : 1024,
4519 "with_counters" : false,
4520 "support_timeout" : false,
4521 "direct_meters" : null,
4522 "action_ids" : [49],
Carmelo Casconea5400af2018-07-17 22:11:54 +02004523 "actions" : ["act_12"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004524 "base_default_next" : null,
4525 "next_tables" : {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004526 "act_12" : null
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004527 },
4528 "default_entry" : {
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004529 "action_id" : 49,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004530 "action_const" : true,
4531 "action_data" : [],
4532 "action_entry_const" : true
4533 }
4534 }
4535 ],
4536 "action_profiles" : [],
4537 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004538 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004539 "name" : "node_39",
4540 "id" : 12,
4541 "source_info" : {
4542 "filename" : "include/control/next.p4",
4543 "line" : 272,
4544 "column" : 12,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004545 "source_fragment" : "fabric_metadata.is_multicast == true ..."
Carmelo Casconea5400af2018-07-17 22:11:54 +02004546 },
4547 "expression" : {
4548 "type" : "expression",
4549 "value" : {
4550 "op" : "and",
4551 "left" : {
4552 "type" : "expression",
4553 "value" : {
4554 "op" : "==",
4555 "left" : {
4556 "type" : "expression",
4557 "value" : {
4558 "op" : "d2b",
4559 "left" : null,
4560 "right" : {
4561 "type" : "field",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004562 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02004563 }
4564 }
4565 },
4566 "right" : {
4567 "type" : "bool",
4568 "value" : true
4569 }
4570 }
4571 },
4572 "right" : {
4573 "type" : "expression",
4574 "value" : {
4575 "op" : "==",
4576 "left" : {
4577 "type" : "field",
4578 "value" : ["standard_metadata", "ingress_port"]
4579 },
4580 "right" : {
4581 "type" : "field",
4582 "value" : ["standard_metadata", "egress_port"]
4583 }
4584 }
4585 }
4586 }
4587 },
4588 "true_next" : "tbl_drop_now",
4589 "false_next" : "FabricEgress.egress_next.egress_vlan"
4590 },
4591 {
4592 "name" : "node_42",
4593 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07004594 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004595 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004596 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07004597 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08004598 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07004599 },
4600 "expression" : {
4601 "type" : "expression",
4602 "value" : {
4603 "op" : "==",
4604 "left" : {
4605 "type" : "field",
4606 "value" : ["standard_metadata", "egress_port"]
4607 },
4608 "right" : {
4609 "type" : "hexstr",
4610 "value" : "0x00ff"
4611 }
4612 }
4613 },
4614 "false_next" : null,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004615 "true_next" : "node_43"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004616 },
4617 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02004618 "name" : "node_43",
4619 "id" : 14,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004620 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004621 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004622 "line" : 43,
4623 "column" : 16,
Carmelo Cascone228092b2018-06-15 20:41:10 +02004624 "source_fragment" : "hdr.vlan_tag.isValid() && fabric_metadata.pop_vlan_when_packet_in == true"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004625 },
4626 "expression" : {
4627 "type" : "expression",
4628 "value" : {
4629 "op" : "and",
4630 "left" : {
4631 "type" : "expression",
4632 "value" : {
4633 "op" : "d2b",
4634 "left" : null,
4635 "right" : {
4636 "type" : "field",
4637 "value" : ["vlan_tag", "$valid$"]
4638 }
4639 }
4640 },
4641 "right" : {
4642 "type" : "expression",
4643 "value" : {
Carmelo Cascone228092b2018-06-15 20:41:10 +02004644 "op" : "==",
4645 "left" : {
4646 "type" : "expression",
4647 "value" : {
4648 "op" : "d2b",
4649 "left" : null,
4650 "right" : {
4651 "type" : "field",
4652 "value" : ["scalars", "fabric_metadata_t.pop_vlan_when_packet_in"]
4653 }
4654 }
4655 },
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004656 "right" : {
Carmelo Cascone228092b2018-06-15 20:41:10 +02004657 "type" : "bool",
4658 "value" : true
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004659 }
4660 }
4661 }
4662 }
4663 },
4664 "true_next" : "tbl_pkt_io_egress_pop_vlan",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004665 "false_next" : "node_45"
4666 },
4667 {
4668 "name" : "node_45",
4669 "id" : 15,
4670 "source_info" : {
4671 "filename" : "include/control/packetio.p4",
4672 "line" : 46,
4673 "column" : 16,
4674 "source_fragment" : "fabric_metadata.is_multicast == true && ..."
4675 },
4676 "expression" : {
4677 "type" : "expression",
4678 "value" : {
4679 "op" : "and",
4680 "left" : {
4681 "type" : "expression",
4682 "value" : {
4683 "op" : "==",
4684 "left" : {
4685 "type" : "expression",
4686 "value" : {
4687 "op" : "d2b",
4688 "left" : null,
4689 "right" : {
4690 "type" : "field",
4691 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4692 }
4693 }
4694 },
4695 "right" : {
4696 "type" : "bool",
4697 "value" : true
4698 }
4699 }
4700 },
4701 "right" : {
4702 "type" : "expression",
4703 "value" : {
4704 "op" : "==",
4705 "left" : {
4706 "type" : "expression",
4707 "value" : {
4708 "op" : "d2b",
4709 "left" : null,
4710 "right" : {
4711 "type" : "field",
4712 "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
4713 }
4714 }
4715 },
4716 "right" : {
4717 "type" : "bool",
4718 "value" : false
4719 }
4720 }
4721 }
4722 }
4723 },
4724 "true_next" : "tbl_drop_now_0",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004725 "false_next" : "tbl_act_12"
Yi Tsengbe342052017-11-03 10:21:23 -07004726 }
4727 ]
4728 }
4729 ],
4730 "checksums" : [
4731 {
4732 "name" : "cksum",
4733 "id" : 0,
4734 "target" : ["ipv4", "hdr_checksum"],
4735 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004736 "calculation" : "calc",
4737 "if_cond" : {
4738 "type" : "expression",
4739 "value" : {
4740 "op" : "d2b",
4741 "left" : null,
4742 "right" : {
4743 "type" : "field",
4744 "value" : ["ipv4", "$valid$"]
4745 }
4746 }
4747 }
Yi Tsengbe342052017-11-03 10:21:23 -07004748 },
4749 {
4750 "name" : "cksum_0",
4751 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07004752 "target" : ["ipv4", "hdr_checksum"],
4753 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004754 "calculation" : "calc_0",
4755 "if_cond" : {
4756 "type" : "expression",
4757 "value" : {
4758 "op" : "d2b",
4759 "left" : null,
4760 "right" : {
4761 "type" : "field",
4762 "value" : ["ipv4", "$valid$"]
4763 }
4764 }
4765 }
Yi Tsengbe342052017-11-03 10:21:23 -07004766 }
4767 ],
4768 "force_arith" : [],
4769 "extern_instances" : [],
4770 "field_aliases" : [
4771 [
4772 "queueing_metadata.enq_timestamp",
4773 ["standard_metadata", "enq_timestamp"]
4774 ],
4775 [
4776 "queueing_metadata.enq_qdepth",
4777 ["standard_metadata", "enq_qdepth"]
4778 ],
4779 [
4780 "queueing_metadata.deq_timedelta",
4781 ["standard_metadata", "deq_timedelta"]
4782 ],
4783 [
4784 "queueing_metadata.deq_qdepth",
4785 ["standard_metadata", "deq_qdepth"]
4786 ],
4787 [
4788 "intrinsic_metadata.ingress_global_timestamp",
4789 ["standard_metadata", "ingress_global_timestamp"]
4790 ],
4791 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08004792 "intrinsic_metadata.egress_global_timestamp",
4793 ["standard_metadata", "egress_global_timestamp"]
4794 ],
4795 [
Yi Tsengbe342052017-11-03 10:21:23 -07004796 "intrinsic_metadata.lf_field_list",
4797 ["standard_metadata", "lf_field_list"]
4798 ],
4799 [
4800 "intrinsic_metadata.mcast_grp",
4801 ["standard_metadata", "mcast_grp"]
4802 ],
4803 [
4804 "intrinsic_metadata.resubmit_flag",
4805 ["standard_metadata", "resubmit_flag"]
4806 ],
4807 [
4808 "intrinsic_metadata.egress_rid",
4809 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08004810 ],
4811 [
4812 "intrinsic_metadata.recirculate_flag",
4813 ["standard_metadata", "recirculate_flag"]
Yi Tsengbe342052017-11-03 10:21:23 -07004814 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02004815 ],
4816 "program" : "fabric.p4",
4817 "__meta__" : {
4818 "version" : [2, 18],
4819 "compiler" : "https://github.com/p4lang/p4c"
4820 }
Yi Tsengbe342052017-11-03 10:21:23 -07004821}