blob: edf6f41ea9f64dc86b57a6831d09a2bae744e2e7 [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" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -08007 ["tmp_0", 4, false],
8 ["tmp", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -07009 ["tmp_1", 32, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080010 ["egress_next_tmp", 1, false],
11 ["fabric_metadata_t.eth_type", 16, false],
12 ["fabric_metadata_t.ip_eth_type", 16, false],
13 ["fabric_metadata_t.vlan_id", 12, false],
14 ["fabric_metadata_t.vlan_pri", 3, false],
15 ["fabric_metadata_t.vlan_cfi", 1, false],
16 ["fabric_metadata_t.mpls_label", 20, false],
17 ["fabric_metadata_t.mpls_ttl", 8, false],
18 ["fabric_metadata_t.skip_forwarding", 1, false],
19 ["fabric_metadata_t.skip_next", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070020 ["fabric_metadata_t.fwd_type", 3, false],
21 ["fabric_metadata_t.next_id", 32, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020022 ["fabric_metadata_t.is_multicast", 1, false],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -070023 ["fabric_metadata_t.is_controller_packet_out", 1, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020024 ["fabric_metadata_t.clone_to_cpu", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070025 ["fabric_metadata_t.ip_proto", 8, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080026 ["fabric_metadata_t.l4_sport", 16, false],
27 ["fabric_metadata_t.l4_dport", 16, false],
28 ["_padding_0", 7, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080029 ]
30 },
31 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +020032 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -080033 "id" : 1,
34 "fields" : [
Carmelo Cascone6af4e172018-06-15 16:01:30 +020035 ["ingress_port", 9, false],
36 ["egress_spec", 9, false],
37 ["egress_port", 9, false],
38 ["clone_spec", 32, false],
39 ["instance_type", 32, false],
40 ["drop", 1, false],
41 ["recirculate_port", 16, false],
42 ["packet_length", 32, false],
43 ["enq_timestamp", 32, false],
44 ["enq_qdepth", 19, false],
45 ["deq_timedelta", 32, false],
46 ["deq_qdepth", 19, false],
47 ["ingress_global_timestamp", 48, false],
48 ["egress_global_timestamp", 48, false],
49 ["lf_field_list", 32, false],
50 ["mcast_grp", 16, false],
51 ["resubmit_flag", 32, false],
52 ["egress_rid", 16, false],
53 ["checksum_error", 1, false],
54 ["recirculate_flag", 32, false],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -070055 ["parser_error", 32, false],
Carmelo Cascone6af4e172018-06-15 16:01:30 +020056 ["_padding", 5, false]
57 ]
58 },
59 {
60 "name" : "ethernet_t",
61 "id" : 2,
62 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080063 ["dst_addr", 48, false],
64 ["src_addr", 48, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080065 ["eth_type", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080066 ]
67 },
68 {
69 "name" : "vlan_tag_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020070 "id" : 3,
Yi Tsengc6844f52017-12-19 11:58:25 -080071 "fields" : [
72 ["pri", 3, false],
73 ["cfi", 1, false],
74 ["vlan_id", 12, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080075 ["eth_type", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080076 ]
77 },
78 {
79 "name" : "mpls_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020080 "id" : 4,
Yi Tsengc6844f52017-12-19 11:58:25 -080081 "fields" : [
82 ["label", 20, false],
83 ["tc", 3, false],
84 ["bos", 1, false],
85 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070086 ]
87 },
88 {
89 "name" : "ipv4_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020090 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -070091 "fields" : [
92 ["version", 4, false],
93 ["ihl", 4, false],
Jonghwan Hyuned478dc2018-08-06 15:35:18 +090094 ["dscp", 6, false],
95 ["ecn", 2, false],
Yi Tsengbe342052017-11-03 10:21:23 -070096 ["total_len", 16, false],
97 ["identification", 16, false],
98 ["flags", 3, false],
99 ["frag_offset", 13, false],
100 ["ttl", 8, false],
101 ["protocol", 8, false],
102 ["hdr_checksum", 16, false],
103 ["src_addr", 32, false],
104 ["dst_addr", 32, false]
105 ]
106 },
107 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800108 "name" : "tcp_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200109 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800110 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800111 ["sport", 16, false],
112 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700113 ["seq_no", 32, false],
114 ["ack_no", 32, false],
115 ["data_offset", 4, false],
116 ["res", 3, false],
117 ["ecn", 3, false],
118 ["ctrl", 6, false],
119 ["window", 16, false],
120 ["checksum", 16, false],
121 ["urgent_ptr", 16, false]
122 ]
123 },
124 {
125 "name" : "udp_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800126 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700127 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800128 ["sport", 16, false],
129 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700130 ["len", 16, false],
131 ["checksum", 16, false]
132 ]
133 },
134 {
135 "name" : "icmp_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800136 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700137 "fields" : [
138 ["icmp_type", 8, false],
139 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800140 ["checksum", 16, false],
141 ["identifier", 16, false],
142 ["sequence_number", 16, false],
143 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700144 ]
145 },
146 {
147 "name" : "packet_out_header_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800148 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700149 "fields" : [
150 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800151 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700152 ]
153 },
154 {
155 "name" : "packet_in_header_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800156 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700157 "fields" : [
158 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800159 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700160 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700161 }
162 ],
163 "headers" : [
164 {
Yi Tsengbe342052017-11-03 10:21:23 -0700165 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800166 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700167 "header_type" : "scalars_0",
168 "metadata" : true,
169 "pi_omit" : true
170 },
171 {
172 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800173 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700174 "header_type" : "standard_metadata",
175 "metadata" : true,
176 "pi_omit" : true
177 },
178 {
179 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800180 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700181 "header_type" : "ethernet_t",
182 "metadata" : false,
183 "pi_omit" : true
184 },
185 {
186 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800187 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700188 "header_type" : "vlan_tag_t",
189 "metadata" : false,
190 "pi_omit" : true
191 },
192 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800193 "name" : "inner_vlan_tag",
Yi Tsengbd46d052018-01-22 17:18:16 -0800194 "id" : 4,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800195 "header_type" : "vlan_tag_t",
196 "metadata" : false,
197 "pi_omit" : true
198 },
199 {
200 "name" : "mpls",
201 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700202 "header_type" : "mpls_t",
203 "metadata" : false,
204 "pi_omit" : true
205 },
206 {
207 "name" : "ipv4",
Carmelo Casconef645e842018-07-16 18:31:52 +0200208 "id" : 6,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800209 "header_type" : "ipv4_t",
Yi Tsengbe342052017-11-03 10:21:23 -0700210 "metadata" : false,
211 "pi_omit" : true
212 },
213 {
214 "name" : "tcp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200215 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700216 "header_type" : "tcp_t",
217 "metadata" : false,
218 "pi_omit" : true
219 },
220 {
221 "name" : "udp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200222 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700223 "header_type" : "udp_t",
224 "metadata" : false,
225 "pi_omit" : true
226 },
227 {
228 "name" : "icmp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200229 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700230 "header_type" : "icmp_t",
231 "metadata" : false,
232 "pi_omit" : true
233 },
234 {
235 "name" : "packet_out",
Carmelo Casconef645e842018-07-16 18:31:52 +0200236 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700237 "header_type" : "packet_out_header_t",
238 "metadata" : false,
239 "pi_omit" : true
240 },
241 {
242 "name" : "packet_in",
Carmelo Casconef645e842018-07-16 18:31:52 +0200243 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700244 "header_type" : "packet_in_header_t",
245 "metadata" : false,
246 "pi_omit" : true
247 }
248 ],
249 "header_stacks" : [],
250 "header_union_types" : [],
251 "header_unions" : [],
252 "header_union_stacks" : [],
253 "field_lists" : [],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700254 "errors" : [
255 ["NoError", 1],
256 ["PacketTooShort", 2],
257 ["NoMatch", 3],
258 ["StackOutOfBounds", 4],
259 ["HeaderTooShort", 5],
260 ["ParserTimeout", 6]
261 ],
Yi Tsengbe342052017-11-03 10:21:23 -0700262 "enums" : [],
263 "parsers" : [
264 {
265 "name" : "parser",
266 "id" : 0,
267 "init_state" : "start",
268 "parse_states" : [
269 {
270 "name" : "start",
271 "id" : 0,
272 "parser_ops" : [],
273 "transitions" : [
274 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800275 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700276 "value" : "0x00ff",
277 "mask" : null,
278 "next_state" : "parse_packet_out"
279 },
280 {
281 "value" : "default",
282 "mask" : null,
283 "next_state" : "parse_ethernet"
284 }
285 ],
286 "transition_key" : [
287 {
288 "type" : "field",
289 "value" : ["standard_metadata", "ingress_port"]
290 }
291 ]
292 },
293 {
294 "name" : "parse_packet_out",
295 "id" : 1,
296 "parser_ops" : [
297 {
298 "parameters" : [
299 {
300 "type" : "regular",
301 "value" : "packet_out"
302 }
303 ],
304 "op" : "extract"
305 }
306 ],
307 "transitions" : [
308 {
309 "value" : "default",
310 "mask" : null,
311 "next_state" : "parse_ethernet"
312 }
313 ],
314 "transition_key" : []
315 },
316 {
317 "name" : "parse_ethernet",
318 "id" : 2,
319 "parser_ops" : [
320 {
321 "parameters" : [
322 {
323 "type" : "regular",
324 "value" : "ethernet"
325 }
326 ],
327 "op" : "extract"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800328 },
329 {
330 "parameters" : [
331 {
332 "type" : "field",
333 "value" : ["scalars", "fabric_metadata_t.eth_type"]
334 },
335 {
336 "type" : "field",
337 "value" : ["ethernet", "eth_type"]
338 }
339 ],
340 "op" : "set"
341 },
342 {
343 "parameters" : [
344 {
345 "type" : "field",
346 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
347 },
348 {
349 "type" : "hexstr",
350 "value" : "0x0ffe"
351 }
352 ],
353 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700354 }
355 ],
356 "transitions" : [
357 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800358 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700359 "value" : "0x8100",
360 "mask" : null,
361 "next_state" : "parse_vlan_tag"
362 },
363 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800364 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700365 "value" : "0x8847",
366 "mask" : null,
367 "next_state" : "parse_mpls"
368 },
369 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800370 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700371 "value" : "0x0800",
372 "mask" : null,
373 "next_state" : "parse_ipv4"
374 },
375 {
Yi Tsengbe342052017-11-03 10:21:23 -0700376 "value" : "default",
377 "mask" : null,
378 "next_state" : null
379 }
380 ],
381 "transition_key" : [
382 {
383 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800384 "value" : ["ethernet", "eth_type"]
Yi Tsengbe342052017-11-03 10:21:23 -0700385 }
386 ]
387 },
388 {
389 "name" : "parse_vlan_tag",
390 "id" : 3,
391 "parser_ops" : [
392 {
393 "parameters" : [
394 {
395 "type" : "regular",
396 "value" : "vlan_tag"
397 }
398 ],
399 "op" : "extract"
400 }
401 ],
402 "transitions" : [
403 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800404 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800405 "value" : "0x0800",
Yi Tsengbe342052017-11-03 10:21:23 -0700406 "mask" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800407 "next_state" : "parse_ipv4"
Yi Tsengbe342052017-11-03 10:21:23 -0700408 },
409 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800410 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800411 "value" : "0x8847",
412 "mask" : null,
413 "next_state" : "parse_mpls"
414 },
415 {
416 "type" : "hexstr",
417 "value" : "0x8100",
418 "mask" : null,
419 "next_state" : "parse_inner_vlan_tag"
420 },
421 {
422 "value" : "default",
423 "mask" : null,
424 "next_state" : null
425 }
426 ],
427 "transition_key" : [
428 {
429 "type" : "field",
430 "value" : ["vlan_tag", "eth_type"]
431 }
432 ]
433 },
434 {
435 "name" : "parse_inner_vlan_tag",
436 "id" : 4,
437 "parser_ops" : [
438 {
439 "parameters" : [
440 {
441 "type" : "regular",
442 "value" : "inner_vlan_tag"
443 }
444 ],
445 "op" : "extract"
446 }
447 ],
448 "transitions" : [
449 {
450 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700451 "value" : "0x0800",
452 "mask" : null,
453 "next_state" : "parse_ipv4"
454 },
455 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800456 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800457 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700458 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800459 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700460 },
461 {
462 "value" : "default",
463 "mask" : null,
464 "next_state" : null
465 }
466 ],
467 "transition_key" : [
468 {
469 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800470 "value" : ["inner_vlan_tag", "eth_type"]
Yi Tsengbe342052017-11-03 10:21:23 -0700471 }
472 ]
473 },
474 {
475 "name" : "parse_mpls",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800476 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700477 "parser_ops" : [
478 {
479 "parameters" : [
480 {
481 "type" : "regular",
482 "value" : "mpls"
483 }
484 ],
485 "op" : "extract"
486 },
487 {
488 "parameters" : [
489 {
490 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800491 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
492 },
493 {
494 "type" : "field",
495 "value" : ["mpls", "label"]
496 }
497 ],
498 "op" : "set"
499 },
500 {
501 "parameters" : [
502 {
503 "type" : "field",
504 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
505 },
506 {
507 "type" : "field",
508 "value" : ["mpls", "ttl"]
509 }
510 ],
511 "op" : "set"
512 },
513 {
514 "parameters" : [
515 {
516 "type" : "field",
517 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700518 },
519 {
520 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800521 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700522 }
523 ],
524 "op" : "set"
525 }
526 ],
527 "transitions" : [
528 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800529 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700530 "value" : "0x04",
531 "mask" : null,
532 "next_state" : "parse_ipv4"
533 },
534 {
Yi Tsengbe342052017-11-03 10:21:23 -0700535 "value" : "default",
536 "mask" : null,
537 "next_state" : "parse_ethernet"
538 }
539 ],
540 "transition_key" : [
541 {
542 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800543 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700544 }
545 ]
546 },
547 {
548 "name" : "parse_ipv4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800549 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700550 "parser_ops" : [
551 {
552 "parameters" : [
553 {
554 "type" : "regular",
555 "value" : "ipv4"
556 }
557 ],
558 "op" : "extract"
559 },
560 {
561 "parameters" : [
562 {
563 "type" : "field",
564 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
565 },
566 {
567 "type" : "field",
568 "value" : ["ipv4", "protocol"]
569 }
570 ],
571 "op" : "set"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800572 },
573 {
574 "parameters" : [
575 {
576 "type" : "field",
577 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
578 },
579 {
580 "type" : "hexstr",
581 "value" : "0x0800"
582 }
583 ],
584 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700585 }
586 ],
587 "transitions" : [
588 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800589 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700590 "value" : "0x06",
591 "mask" : null,
592 "next_state" : "parse_tcp"
593 },
594 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800595 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700596 "value" : "0x11",
597 "mask" : null,
598 "next_state" : "parse_udp"
599 },
600 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800601 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700602 "value" : "0x01",
603 "mask" : null,
604 "next_state" : "parse_icmp"
605 },
606 {
607 "value" : "default",
608 "mask" : null,
609 "next_state" : null
610 }
611 ],
612 "transition_key" : [
613 {
614 "type" : "field",
615 "value" : ["ipv4", "protocol"]
616 }
617 ]
618 },
619 {
Yi Tsengbe342052017-11-03 10:21:23 -0700620 "name" : "parse_tcp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200621 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700622 "parser_ops" : [
623 {
624 "parameters" : [
625 {
626 "type" : "regular",
627 "value" : "tcp"
628 }
629 ],
630 "op" : "extract"
631 },
632 {
633 "parameters" : [
634 {
635 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800636 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700637 },
638 {
639 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800640 "value" : ["tcp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700641 }
642 ],
643 "op" : "set"
644 },
645 {
646 "parameters" : [
647 {
648 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800649 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700650 },
651 {
652 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800653 "value" : ["tcp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700654 }
655 ],
656 "op" : "set"
657 }
658 ],
659 "transitions" : [
660 {
661 "value" : "default",
662 "mask" : null,
663 "next_state" : null
664 }
665 ],
666 "transition_key" : []
667 },
668 {
669 "name" : "parse_udp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200670 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700671 "parser_ops" : [
672 {
673 "parameters" : [
674 {
675 "type" : "regular",
676 "value" : "udp"
677 }
678 ],
679 "op" : "extract"
680 },
681 {
682 "parameters" : [
683 {
684 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800685 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700686 },
687 {
688 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800689 "value" : ["udp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700690 }
691 ],
692 "op" : "set"
693 },
694 {
695 "parameters" : [
696 {
697 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800698 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700699 },
700 {
701 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800702 "value" : ["udp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700703 }
704 ],
705 "op" : "set"
706 }
707 ],
708 "transitions" : [
709 {
710 "value" : "default",
711 "mask" : null,
712 "next_state" : null
713 }
714 ],
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700715 "transition_key" : [
716 {
717 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800718 "value" : ["udp", "dport"]
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700719 }
720 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700721 },
722 {
723 "name" : "parse_icmp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200724 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700725 "parser_ops" : [
726 {
727 "parameters" : [
728 {
729 "type" : "regular",
730 "value" : "icmp"
731 }
732 ],
733 "op" : "extract"
734 }
735 ],
736 "transitions" : [
737 {
738 "value" : "default",
739 "mask" : null,
740 "next_state" : null
741 }
742 ],
743 "transition_key" : []
744 }
745 ]
746 }
747 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800748 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700749 "deparsers" : [
750 {
751 "name" : "deparser",
752 "id" : 0,
753 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200754 "filename" : "include/parser.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800755 "line" : 243,
Yi Tsengbe342052017-11-03 10:21:23 -0700756 "column" : 8,
757 "source_fragment" : "FabricDeparser"
758 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800759 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700760 }
761 ],
762 "meter_arrays" : [],
763 "counter_arrays" : [
764 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800765 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800766 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800767 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700768 "binding" : "FabricIngress.filtering.ingress_port_vlan",
769 "source_info" : {
770 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800771 "line" : 31,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700772 "column" : 50,
773 "source_fragment" : "ingress_port_vlan_counter"
774 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800775 },
776 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800777 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800778 "id" : 1,
779 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700780 "binding" : "FabricIngress.filtering.fwd_classifier",
781 "source_info" : {
782 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700783 "line" : 80,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700784 "column" : 50,
785 "source_fragment" : "fwd_classifier_counter"
786 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800787 },
788 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800789 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800790 "id" : 2,
791 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700792 "binding" : "FabricIngress.forwarding.bridging",
793 "source_info" : {
794 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800795 "line" : 36,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700796 "column" : 50,
797 "source_fragment" : "bridging_counter"
798 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800799 },
800 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800801 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800802 "id" : 3,
803 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700804 "binding" : "FabricIngress.forwarding.mpls",
805 "source_info" : {
806 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700807 "line" : 63,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700808 "column" : 50,
809 "source_fragment" : "mpls_counter"
810 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800811 },
812 {
Charles Chan384aea22018-08-23 22:08:02 -0700813 "name" : "FabricIngress.forwarding.routing_v4_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800814 "id" : 4,
815 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700816 "binding" : "FabricIngress.forwarding.routing_v4",
817 "source_info" : {
818 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700819 "line" : 87,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700820 "column" : 50,
821 "source_fragment" : "routing_v4_counter"
822 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800823 },
824 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800825 "name" : "FabricIngress.acl.acl_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800826 "id" : 5,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800827 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800828 "binding" : "FabricIngress.acl.acl",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700829 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800830 "filename" : "include/control/acl.p4",
831 "line" : 30,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700832 "column" : 50,
833 "source_fragment" : "acl_counter"
834 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800835 },
836 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800837 "name" : "FabricIngress.next.next_vlan_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200838 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800839 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800840 "binding" : "FabricIngress.next.next_vlan",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700841 "source_info" : {
842 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800843 "line" : 67,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700844 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800845 "source_fragment" : "next_vlan_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700846 }
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800847 },
848 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800849 "name" : "FabricIngress.next.xconnect_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200850 "id" : 7,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800851 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800852 "binding" : "FabricIngress.next.xconnect",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700853 "source_info" : {
854 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700855 "line" : 92,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700856 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800857 "source_fragment" : "xconnect_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700858 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800859 },
860 {
861 "name" : "FabricIngress.next.hashed_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200862 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800863 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700864 "binding" : "FabricIngress.next.hashed",
865 "source_info" : {
866 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700867 "line" : 166,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700868 "column" : 50,
869 "source_fragment" : "hashed_counter"
870 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800871 },
872 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000873 "name" : "FabricIngress.next.multicast_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200874 "id" : 9,
Esin Karaman971fb7f2017-12-28 13:44:52 +0000875 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700876 "binding" : "FabricIngress.next.multicast",
877 "source_info" : {
878 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700879 "line" : 210,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700880 "column" : 50,
881 "source_fragment" : "multicast_counter"
882 }
Esin Karaman971fb7f2017-12-28 13:44:52 +0000883 },
884 {
885 "name" : "FabricIngress.port_counters_control.egress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200886 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700887 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200888 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800889 "line" : 26,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800890 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700891 "source_fragment" : "egress_port_counter"
892 },
893 "size" : 511,
894 "is_direct" : false
895 },
896 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800897 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200898 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700899 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200900 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800901 "line" : 27,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800902 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700903 "source_fragment" : "ingress_port_counter"
904 },
905 "size" : 511,
906 "is_direct" : false
Yi Tseng47eac892018-07-11 02:17:04 +0800907 },
908 {
909 "name" : "FabricEgress.egress_next.egress_vlan_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200910 "id" : 12,
Yi Tseng47eac892018-07-11 02:17:04 +0800911 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700912 "binding" : "FabricEgress.egress_next.egress_vlan",
913 "source_info" : {
914 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700915 "line" : 283,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700916 "column" : 50,
917 "source_fragment" : "egress_vlan_counter"
918 }
Yi Tsengbe342052017-11-03 10:21:23 -0700919 }
920 ],
921 "register_arrays" : [],
922 "calculations" : [
923 {
924 "name" : "calc",
925 "id" : 0,
926 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200927 "filename" : "include/checksum.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200928 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700929 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200930 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700931 },
932 "algo" : "csum16",
933 "input" : [
934 {
935 "type" : "field",
936 "value" : ["ipv4", "version"]
937 },
938 {
939 "type" : "field",
940 "value" : ["ipv4", "ihl"]
941 },
942 {
943 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900944 "value" : ["ipv4", "dscp"]
945 },
946 {
947 "type" : "field",
948 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -0700949 },
950 {
951 "type" : "field",
952 "value" : ["ipv4", "total_len"]
953 },
954 {
955 "type" : "field",
956 "value" : ["ipv4", "identification"]
957 },
958 {
959 "type" : "field",
960 "value" : ["ipv4", "flags"]
961 },
962 {
963 "type" : "field",
964 "value" : ["ipv4", "frag_offset"]
965 },
966 {
967 "type" : "field",
968 "value" : ["ipv4", "ttl"]
969 },
970 {
971 "type" : "field",
972 "value" : ["ipv4", "protocol"]
973 },
974 {
975 "type" : "field",
976 "value" : ["ipv4", "src_addr"]
977 },
978 {
979 "type" : "field",
980 "value" : ["ipv4", "dst_addr"]
981 }
982 ]
983 },
984 {
985 "name" : "calc_0",
986 "id" : 1,
987 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200988 "filename" : "include/checksum.p4",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900989 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -0700990 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200991 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700992 },
993 "algo" : "csum16",
994 "input" : [
995 {
996 "type" : "field",
997 "value" : ["ipv4", "version"]
998 },
999 {
1000 "type" : "field",
1001 "value" : ["ipv4", "ihl"]
1002 },
1003 {
1004 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001005 "value" : ["ipv4", "dscp"]
1006 },
1007 {
1008 "type" : "field",
1009 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -07001010 },
1011 {
1012 "type" : "field",
1013 "value" : ["ipv4", "total_len"]
1014 },
1015 {
1016 "type" : "field",
1017 "value" : ["ipv4", "identification"]
1018 },
1019 {
1020 "type" : "field",
1021 "value" : ["ipv4", "flags"]
1022 },
1023 {
1024 "type" : "field",
1025 "value" : ["ipv4", "frag_offset"]
1026 },
1027 {
1028 "type" : "field",
1029 "value" : ["ipv4", "ttl"]
1030 },
1031 {
1032 "type" : "field",
1033 "value" : ["ipv4", "protocol"]
1034 },
1035 {
1036 "type" : "field",
1037 "value" : ["ipv4", "src_addr"]
1038 },
1039 {
1040 "type" : "field",
1041 "value" : ["ipv4", "dst_addr"]
1042 }
1043 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001044 }
1045 ],
1046 "learn_lists" : [],
1047 "actions" : [
1048 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001049 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001050 "id" : 0,
1051 "runtime_data" : [],
1052 "primitives" : []
1053 },
1054 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001055 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001056 "id" : 1,
1057 "runtime_data" : [],
1058 "primitives" : []
1059 },
1060 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001061 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001062 "id" : 2,
1063 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001064 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001065 },
1066 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001067 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001068 "id" : 3,
1069 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001070 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001071 },
1072 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001073 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001074 "id" : 4,
1075 "runtime_data" : [],
1076 "primitives" : []
1077 },
1078 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001079 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001080 "id" : 5,
1081 "runtime_data" : [],
1082 "primitives" : []
1083 },
1084 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001085 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001086 "id" : 6,
1087 "runtime_data" : [],
1088 "primitives" : []
1089 },
1090 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001091 "name" : "FabricIngress.filtering.deny",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001092 "id" : 7,
Yi Tseng47eac892018-07-11 02:17:04 +08001093 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001094 "primitives" : [
1095 {
Yi Tsengbe342052017-11-03 10:21:23 -07001096 "op" : "assign",
1097 "parameters" : [
1098 {
1099 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001100 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
Yi Tsengbe342052017-11-03 10:21:23 -07001101 },
1102 {
1103 "type" : "expression",
1104 "value" : {
1105 "type" : "expression",
1106 "value" : {
1107 "op" : "b2d",
1108 "left" : null,
1109 "right" : {
1110 "type" : "bool",
1111 "value" : true
1112 }
1113 }
1114 }
1115 }
1116 ],
1117 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001118 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001119 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001120 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001121 "source_fragment" : "fabric_metadata.skip_forwarding = true"
1122 }
1123 },
1124 {
1125 "op" : "assign",
1126 "parameters" : [
1127 {
1128 "type" : "field",
1129 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1130 },
1131 {
1132 "type" : "expression",
1133 "value" : {
1134 "type" : "expression",
1135 "value" : {
1136 "op" : "b2d",
1137 "left" : null,
1138 "right" : {
1139 "type" : "bool",
1140 "value" : true
1141 }
1142 }
1143 }
1144 }
1145 ],
1146 "source_info" : {
1147 "filename" : "include/control/filtering.p4",
1148 "line" : 37,
1149 "column" : 8,
1150 "source_fragment" : "fabric_metadata.skip_next = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001151 }
1152 }
1153 ]
1154 },
1155 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001156 "name" : "FabricIngress.filtering.permit",
1157 "id" : 8,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001158 "runtime_data" : [],
1159 "primitives" : []
1160 },
1161 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001162 "name" : "FabricIngress.filtering.permit_with_internal_vlan",
1163 "id" : 9,
1164 "runtime_data" : [
1165 {
1166 "name" : "vlan_id",
1167 "bitwidth" : 12
1168 }
1169 ],
1170 "primitives" : [
1171 {
1172 "op" : "assign",
1173 "parameters" : [
1174 {
1175 "type" : "field",
1176 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1177 },
1178 {
1179 "type" : "runtime_data",
1180 "value" : 0
1181 }
1182 ],
1183 "source_info" : {
1184 "filename" : "include/control/filtering.p4",
1185 "line" : 47,
1186 "column" : 8,
1187 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1188 }
1189 }
1190 ]
1191 },
1192 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001193 "name" : "FabricIngress.filtering.set_forwarding_type",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001194 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07001195 "runtime_data" : [
1196 {
1197 "name" : "fwd_type",
1198 "bitwidth" : 3
1199 }
1200 ],
1201 "primitives" : [
1202 {
1203 "op" : "assign",
1204 "parameters" : [
1205 {
1206 "type" : "field",
1207 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1208 },
1209 {
1210 "type" : "runtime_data",
1211 "value" : 0
1212 }
1213 ],
1214 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001215 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001216 "line" : 83,
Yi Tsengbe342052017-11-03 10:21:23 -07001217 "column" : 8,
1218 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1219 }
1220 }
1221 ]
1222 },
1223 {
Yi Tseng47eac892018-07-11 02:17:04 +08001224 "name" : "FabricIngress.forwarding.set_next_id_bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001225 "id" : 11,
Carmelo Casconef645e842018-07-16 18:31:52 +02001226 "runtime_data" : [
1227 {
1228 "name" : "next_id",
1229 "bitwidth" : 32
1230 }
1231 ],
1232 "primitives" : [
1233 {
1234 "op" : "assign",
1235 "parameters" : [
1236 {
1237 "type" : "field",
1238 "value" : ["scalars", "fabric_metadata_t.next_id"]
1239 },
1240 {
1241 "type" : "runtime_data",
1242 "value" : 0
1243 }
1244 ],
1245 "source_info" : {
1246 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001247 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001248 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001249 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001250 }
1251 }
1252 ]
1253 },
1254 {
1255 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001256 "id" : 12,
Carmelo Casconef645e842018-07-16 18:31:52 +02001257 "runtime_data" : [
1258 {
1259 "name" : "next_id",
1260 "bitwidth" : 32
1261 }
1262 ],
1263 "primitives" : [
1264 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001265 "op" : "assign",
Carmelo Casconef645e842018-07-16 18:31:52 +02001266 "parameters" : [
1267 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001268 "type" : "field",
1269 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1270 },
1271 {
1272 "type" : "hexstr",
1273 "value" : "0x000000"
Carmelo Casconef645e842018-07-16 18:31:52 +02001274 }
1275 ],
1276 "source_info" : {
1277 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001278 "line" : 66,
Carmelo Casconef645e842018-07-16 18:31:52 +02001279 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001280 "source_fragment" : "fabric_metadata.mpls_label = 0"
Carmelo Casconef645e842018-07-16 18:31:52 +02001281 }
1282 },
1283 {
1284 "op" : "assign",
1285 "parameters" : [
1286 {
1287 "type" : "field",
1288 "value" : ["scalars", "fabric_metadata_t.next_id"]
1289 },
1290 {
1291 "type" : "runtime_data",
1292 "value" : 0
1293 }
1294 ],
1295 "source_info" : {
1296 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001297 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001298 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001299 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001300 }
1301 }
1302 ]
1303 },
1304 {
Charles Chan384aea22018-08-23 22:08:02 -07001305 "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001306 "id" : 13,
Carmelo Casconef645e842018-07-16 18:31:52 +02001307 "runtime_data" : [
1308 {
1309 "name" : "next_id",
1310 "bitwidth" : 32
1311 }
1312 ],
1313 "primitives" : [
1314 {
1315 "op" : "assign",
1316 "parameters" : [
1317 {
1318 "type" : "field",
1319 "value" : ["scalars", "fabric_metadata_t.next_id"]
1320 },
1321 {
1322 "type" : "runtime_data",
1323 "value" : 0
1324 }
1325 ],
1326 "source_info" : {
1327 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001328 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001329 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001330 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001331 }
1332 }
1333 ]
1334 },
1335 {
Charles Chancd03f072018-08-31 17:46:37 -07001336 "name" : "FabricIngress.forwarding.nop_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001337 "id" : 14,
Charles Chancd03f072018-08-31 17:46:37 -07001338 "runtime_data" : [],
1339 "primitives" : []
1340 },
1341 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001342 "name" : "FabricIngress.acl.set_next_id_acl",
1343 "id" : 15,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001344 "runtime_data" : [
1345 {
1346 "name" : "next_id",
1347 "bitwidth" : 32
1348 }
1349 ],
1350 "primitives" : [
1351 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001352 "op" : "assign",
1353 "parameters" : [
1354 {
1355 "type" : "field",
1356 "value" : ["scalars", "fabric_metadata_t.next_id"]
1357 },
1358 {
1359 "type" : "runtime_data",
1360 "value" : 0
1361 }
1362 ],
1363 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001364 "filename" : "include/control/acl.p4",
1365 "line" : 33,
Yi Tseng47eac892018-07-11 02:17:04 +08001366 "column" : 8,
1367 "source_fragment" : "fabric_metadata.next_id = next_id"
1368 }
1369 }
1370 ]
1371 },
1372 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001373 "name" : "FabricIngress.acl.punt_to_cpu",
1374 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07001375 "runtime_data" : [],
1376 "primitives" : [
1377 {
1378 "op" : "assign",
1379 "parameters" : [
1380 {
1381 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001382 "value" : ["standard_metadata", "egress_spec"]
1383 },
1384 {
1385 "type" : "hexstr",
1386 "value" : "0x00ff"
1387 }
1388 ],
1389 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001390 "filename" : "include/control/acl.p4",
1391 "line" : 39,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001392 "column" : 8,
1393 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001394 }
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001395 },
1396 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001397 "op" : "assign",
1398 "parameters" : [
1399 {
1400 "type" : "field",
1401 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1402 },
1403 {
1404 "type" : "expression",
1405 "value" : {
1406 "type" : "expression",
1407 "value" : {
1408 "op" : "b2d",
1409 "left" : null,
1410 "right" : {
1411 "type" : "bool",
1412 "value" : true
1413 }
1414 }
1415 }
1416 }
1417 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001418 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001419 "filename" : "include/control/acl.p4",
1420 "line" : 40,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001421 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001422 "source_fragment" : "fabric_metadata.skip_next = true"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001423 }
1424 }
1425 ]
1426 },
1427 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001428 "name" : "FabricIngress.acl.clone_to_cpu",
1429 "id" : 17,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001430 "runtime_data" : [],
1431 "primitives" : [
1432 {
1433 "op" : "assign",
1434 "parameters" : [
1435 {
1436 "type" : "field",
1437 "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
1438 },
1439 {
1440 "type" : "expression",
1441 "value" : {
1442 "type" : "expression",
1443 "value" : {
1444 "op" : "b2d",
1445 "left" : null,
1446 "right" : {
1447 "type" : "bool",
1448 "value" : true
1449 }
1450 }
1451 }
1452 }
1453 ],
1454 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001455 "filename" : "include/control/acl.p4",
1456 "line" : 46,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001457 "column" : 8,
1458 "source_fragment" : "fabric_metadata.clone_to_cpu = true"
1459 }
Yi Tsengbe342052017-11-03 10:21:23 -07001460 }
1461 ]
1462 },
1463 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001464 "name" : "FabricIngress.acl.drop",
1465 "id" : 18,
Yi Tseng47eac892018-07-11 02:17:04 +08001466 "runtime_data" : [],
1467 "primitives" : [
1468 {
1469 "op" : "drop",
1470 "parameters" : [],
1471 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001472 "filename" : "include/control/acl.p4",
1473 "line" : 51,
Yi Tseng47eac892018-07-11 02:17:04 +08001474 "column" : 8,
1475 "source_fragment" : "mark_to_drop()"
1476 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001477 },
1478 {
1479 "op" : "assign",
1480 "parameters" : [
1481 {
1482 "type" : "field",
1483 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1484 },
1485 {
1486 "type" : "expression",
1487 "value" : {
1488 "type" : "expression",
1489 "value" : {
1490 "op" : "b2d",
1491 "left" : null,
1492 "right" : {
1493 "type" : "bool",
1494 "value" : true
1495 }
1496 }
1497 }
1498 }
1499 ],
1500 "source_info" : {
1501 "filename" : "include/control/acl.p4",
1502 "line" : 52,
1503 "column" : 8,
1504 "source_fragment" : "fabric_metadata.skip_next = true"
1505 }
Yi Tseng47eac892018-07-11 02:17:04 +08001506 }
1507 ]
1508 },
1509 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001510 "name" : "FabricIngress.acl.nop_acl",
1511 "id" : 19,
Charles Chancf696e52018-08-16 16:25:13 -07001512 "runtime_data" : [],
1513 "primitives" : []
1514 },
1515 {
Yi Tseng47eac892018-07-11 02:17:04 +08001516 "name" : "FabricIngress.next.set_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001517 "id" : 20,
1518 "runtime_data" : [
1519 {
1520 "name" : "vlan_id",
1521 "bitwidth" : 12
1522 }
1523 ],
1524 "primitives" : [
1525 {
1526 "op" : "assign",
1527 "parameters" : [
1528 {
1529 "type" : "field",
1530 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1531 },
1532 {
1533 "type" : "runtime_data",
1534 "value" : 0
1535 }
1536 ],
1537 "source_info" : {
1538 "filename" : "include/control/next.p4",
1539 "line" : 70,
1540 "column" : 8,
1541 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1542 }
1543 }
1544 ]
1545 },
1546 {
1547 "name" : "FabricIngress.next.output_xconnect",
Charles Chancd03f072018-08-31 17:46:37 -07001548 "id" : 21,
Yi Tseng47eac892018-07-11 02:17:04 +08001549 "runtime_data" : [
1550 {
Yi Tsengbe342052017-11-03 10:21:23 -07001551 "name" : "port_num",
1552 "bitwidth" : 9
1553 }
1554 ],
1555 "primitives" : [
1556 {
1557 "op" : "assign",
1558 "parameters" : [
1559 {
1560 "type" : "field",
1561 "value" : ["standard_metadata", "egress_spec"]
1562 },
1563 {
1564 "type" : "runtime_data",
1565 "value" : 0
1566 }
1567 ],
1568 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001569 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001570 "line" : 31,
1571 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001572 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1573 }
1574 }
1575 ]
1576 },
1577 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001578 "name" : "FabricIngress.next.set_next_id_xconnect",
1579 "id" : 22,
1580 "runtime_data" : [
1581 {
1582 "name" : "next_id",
1583 "bitwidth" : 32
1584 }
1585 ],
1586 "primitives" : [
1587 {
1588 "op" : "assign",
1589 "parameters" : [
1590 {
1591 "type" : "field",
1592 "value" : ["scalars", "fabric_metadata_t.next_id"]
1593 },
1594 {
1595 "type" : "runtime_data",
1596 "value" : 0
1597 }
1598 ],
1599 "source_info" : {
1600 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001601 "line" : 100,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001602 "column" : 8,
1603 "source_fragment" : "fabric_metadata.next_id = next_id"
1604 }
1605 }
1606 ]
1607 },
1608 {
1609 "name" : "FabricIngress.next.output_hashed",
1610 "id" : 23,
1611 "runtime_data" : [
1612 {
1613 "name" : "port_num",
1614 "bitwidth" : 9
1615 }
1616 ],
1617 "primitives" : [
1618 {
1619 "op" : "assign",
1620 "parameters" : [
1621 {
1622 "type" : "field",
1623 "value" : ["standard_metadata", "egress_spec"]
1624 },
1625 {
1626 "type" : "runtime_data",
1627 "value" : 0
1628 }
1629 ],
1630 "source_info" : {
1631 "filename" : "include/control/next.p4",
1632 "line" : 31,
1633 "column" : 5,
1634 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1635 }
1636 }
1637 ]
1638 },
1639 {
1640 "name" : "FabricIngress.next.routing_hashed",
Charles Chancd03f072018-08-31 17:46:37 -07001641 "id" : 24,
Yi Tseng47eac892018-07-11 02:17:04 +08001642 "runtime_data" : [
1643 {
1644 "name" : "port_num",
1645 "bitwidth" : 9
1646 },
1647 {
1648 "name" : "smac",
1649 "bitwidth" : 48
1650 },
1651 {
1652 "name" : "dmac",
1653 "bitwidth" : 48
1654 }
1655 ],
1656 "primitives" : [
1657 {
1658 "op" : "assign",
1659 "parameters" : [
1660 {
1661 "type" : "field",
1662 "value" : ["ethernet", "src_addr"]
1663 },
1664 {
1665 "type" : "runtime_data",
1666 "value" : 1
1667 }
1668 ],
1669 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001670 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001671 "line" : 36,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001672 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001673 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1674 }
1675 },
1676 {
1677 "op" : "assign",
1678 "parameters" : [
1679 {
1680 "type" : "field",
1681 "value" : ["ethernet", "dst_addr"]
1682 },
1683 {
1684 "type" : "runtime_data",
1685 "value" : 2
1686 }
1687 ],
1688 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001689 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001690 "line" : 41,
1691 "column" : 8,
1692 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1693 }
1694 },
1695 {
1696 "op" : "assign",
1697 "parameters" : [
1698 {
1699 "type" : "field",
1700 "value" : ["standard_metadata", "egress_spec"]
1701 },
1702 {
1703 "type" : "runtime_data",
1704 "value" : 0
1705 }
1706 ],
1707 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001708 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001709 "line" : 31,
1710 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001711 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001712 }
1713 }
1714 ]
1715 },
1716 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001717 "name" : "FabricIngress.next.mpls_routing_hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02001718 "id" : 25,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001719 "runtime_data" : [
1720 {
1721 "name" : "port_num",
1722 "bitwidth" : 9
1723 },
1724 {
1725 "name" : "smac",
1726 "bitwidth" : 48
1727 },
1728 {
1729 "name" : "dmac",
1730 "bitwidth" : 48
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001731 },
1732 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001733 "name" : "label",
1734 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001735 }
1736 ],
1737 "primitives" : [
1738 {
1739 "op" : "assign",
1740 "parameters" : [
1741 {
1742 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001743 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1744 },
1745 {
1746 "type" : "runtime_data",
1747 "value" : 3
1748 }
1749 ],
1750 "source_info" : {
1751 "filename" : "include/control/next.p4",
1752 "line" : 46,
1753 "column" : 8,
1754 "source_fragment" : "fabric_metadata.mpls_label = label; ..."
1755 }
1756 },
1757 {
1758 "op" : "assign",
1759 "parameters" : [
1760 {
1761 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001762 "value" : ["ethernet", "src_addr"]
1763 },
1764 {
1765 "type" : "runtime_data",
1766 "value" : 1
1767 }
1768 ],
1769 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001770 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001771 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001772 "column" : 8,
1773 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1774 }
1775 },
1776 {
1777 "op" : "assign",
1778 "parameters" : [
1779 {
1780 "type" : "field",
1781 "value" : ["ethernet", "dst_addr"]
1782 },
1783 {
1784 "type" : "runtime_data",
1785 "value" : 2
1786 }
1787 ],
1788 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001789 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001790 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001791 "column" : 8,
1792 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1793 }
1794 },
1795 {
1796 "op" : "assign",
1797 "parameters" : [
1798 {
1799 "type" : "field",
1800 "value" : ["standard_metadata", "egress_spec"]
1801 },
1802 {
1803 "type" : "runtime_data",
1804 "value" : 0
1805 }
1806 ],
1807 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001808 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001809 "line" : 31,
1810 "column" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07001811 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1812 }
Yi Tsengbe342052017-11-03 10:21:23 -07001813 }
1814 ]
1815 },
1816 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001817 "name" : "FabricIngress.next.set_mcast_group_id",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001818 "id" : 26,
1819 "runtime_data" : [
1820 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001821 "name" : "group_id",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001822 "bitwidth" : 16
1823 }
1824 ],
1825 "primitives" : [
1826 {
1827 "op" : "assign",
1828 "parameters" : [
1829 {
1830 "type" : "field",
1831 "value" : ["standard_metadata", "mcast_grp"]
1832 },
1833 {
1834 "type" : "runtime_data",
1835 "value" : 0
1836 }
1837 ],
1838 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001839 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001840 "line" : 213,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001841 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001842 "source_fragment" : "standard_metadata.mcast_grp = group_id"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001843 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02001844 },
1845 {
1846 "op" : "assign",
1847 "parameters" : [
1848 {
1849 "type" : "field",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001850 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02001851 },
1852 {
1853 "type" : "expression",
1854 "value" : {
1855 "type" : "expression",
1856 "value" : {
1857 "op" : "b2d",
1858 "left" : null,
1859 "right" : {
1860 "type" : "bool",
1861 "value" : true
1862 }
1863 }
1864 }
1865 }
1866 ],
1867 "source_info" : {
1868 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001869 "line" : 214,
Carmelo Casconea5400af2018-07-17 22:11:54 +02001870 "column" : 8,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001871 "source_fragment" : "fabric_metadata.is_multicast = true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02001872 }
Esin Karaman971fb7f2017-12-28 13:44:52 +00001873 }
1874 ]
1875 },
1876 {
1877 "name" : "act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001878 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001879 "runtime_data" : [],
1880 "primitives" : [
1881 {
1882 "op" : "assign",
1883 "parameters" : [
1884 {
1885 "type" : "field",
1886 "value" : ["standard_metadata", "egress_spec"]
1887 },
1888 {
1889 "type" : "field",
1890 "value" : ["packet_out", "egress_port"]
1891 }
1892 ],
1893 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001894 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001895 "line" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001896 "column" : 12,
1897 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
1898 }
Yi Tseng1d842672017-11-28 16:06:52 -08001899 },
1900 {
1901 "op" : "remove_header",
1902 "parameters" : [
1903 {
1904 "type" : "header",
1905 "value" : "packet_out"
1906 }
1907 ],
1908 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001909 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001910 "line" : 26,
Yi Tseng1d842672017-11-28 16:06:52 -08001911 "column" : 12,
1912 "source_fragment" : "hdr.packet_out.setInvalid()"
1913 }
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001914 },
1915 {
1916 "op" : "assign",
1917 "parameters" : [
1918 {
1919 "type" : "field",
1920 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
1921 },
1922 {
1923 "type" : "expression",
1924 "value" : {
1925 "type" : "expression",
1926 "value" : {
1927 "op" : "b2d",
1928 "left" : null,
1929 "right" : {
1930 "type" : "bool",
1931 "value" : true
1932 }
1933 }
1934 }
1935 }
1936 ],
1937 "source_info" : {
1938 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001939 "line" : 27,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001940 "column" : 12,
1941 "source_fragment" : "fabric_metadata.is_controller_packet_out = true"
1942 }
Yi Tsengbe342052017-11-03 10:21:23 -07001943 }
1944 ]
1945 },
1946 {
1947 "name" : "act_0",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001948 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07001949 "runtime_data" : [],
1950 "primitives" : [
1951 {
1952 "op" : "assign",
1953 "parameters" : [
1954 {
1955 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001956 "value" : ["scalars", "fabric_metadata_t.eth_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08001957 },
1958 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001959 "type" : "field",
1960 "value" : ["vlan_tag", "eth_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08001961 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001962 ],
1963 "source_info" : {
1964 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001965 "line" : 105,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001966 "column" : 12,
1967 "source_fragment" : "fabric_metadata.eth_type = hdr.vlan_tag.eth_type"
1968 }
1969 },
1970 {
1971 "op" : "assign",
1972 "parameters" : [
1973 {
1974 "type" : "field",
1975 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1976 },
1977 {
1978 "type" : "field",
1979 "value" : ["vlan_tag", "vlan_id"]
1980 }
1981 ],
1982 "source_info" : {
1983 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001984 "line" : 106,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001985 "column" : 12,
1986 "source_fragment" : "fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id"
1987 }
1988 },
1989 {
1990 "op" : "assign",
1991 "parameters" : [
1992 {
1993 "type" : "field",
1994 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
1995 },
1996 {
1997 "type" : "field",
1998 "value" : ["vlan_tag", "pri"]
1999 }
2000 ],
2001 "source_info" : {
2002 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002003 "line" : 107,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002004 "column" : 12,
2005 "source_fragment" : "fabric_metadata.vlan_pri = hdr.vlan_tag.pri"
2006 }
2007 },
2008 {
2009 "op" : "assign",
2010 "parameters" : [
2011 {
2012 "type" : "field",
2013 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2014 },
2015 {
2016 "type" : "field",
2017 "value" : ["vlan_tag", "cfi"]
2018 }
2019 ],
2020 "source_info" : {
2021 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002022 "line" : 108,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002023 "column" : 12,
2024 "source_fragment" : "fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi"
2025 }
Yi Tseng1d842672017-11-28 16:06:52 -08002026 }
2027 ]
2028 },
2029 {
2030 "name" : "act_1",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002031 "id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002032 "runtime_data" : [],
2033 "primitives" : [
2034 {
2035 "op" : "assign",
2036 "parameters" : [
2037 {
2038 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002039 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2040 },
2041 {
2042 "type" : "hexstr",
2043 "value" : "0x41"
2044 }
2045 ],
2046 "source_info" : {
2047 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002048 "line" : 115,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002049 "column" : 12,
2050 "source_fragment" : "fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1"
2051 }
2052 }
2053 ]
2054 },
2055 {
2056 "name" : "act_2",
2057 "id" : 30,
2058 "runtime_data" : [],
2059 "primitives" : [
2060 {
2061 "op" : "assign",
2062 "parameters" : [
2063 {
2064 "type" : "field",
2065 "value" : ["scalars", "tmp"]
Yi Tseng1d842672017-11-28 16:06:52 -08002066 },
2067 {
2068 "type" : "expression",
2069 "value" : {
2070 "type" : "expression",
2071 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002072 "op" : "&",
2073 "left" : {
2074 "type" : "field",
2075 "value" : ["standard_metadata", "egress_spec"]
2076 },
Yi Tseng1d842672017-11-28 16:06:52 -08002077 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002078 "type" : "hexstr",
2079 "value" : "0xffffffff"
Yi Tseng1d842672017-11-28 16:06:52 -08002080 }
2081 }
2082 }
2083 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002084 ],
2085 "source_info" : {
2086 "filename" : "include/control/port_counter.p4",
2087 "line" : 31,
2088 "column" : 38,
2089 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2090 }
2091 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002092 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002093 "op" : "count",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002094 "parameters" : [
2095 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002096 "type" : "counter_array",
2097 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002098 },
2099 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002100 "type" : "field",
2101 "value" : ["scalars", "tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002102 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002103 ],
2104 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002105 "filename" : "include/control/port_counter.p4",
2106 "line" : 31,
2107 "column" : 12,
2108 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002109 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002110 }
2111 ]
2112 },
2113 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002114 "name" : "act_3",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002115 "id" : 31,
2116 "runtime_data" : [],
2117 "primitives" : [
2118 {
2119 "op" : "assign",
2120 "parameters" : [
2121 {
2122 "type" : "field",
2123 "value" : ["scalars", "tmp_1"]
2124 },
2125 {
2126 "type" : "expression",
2127 "value" : {
2128 "type" : "expression",
2129 "value" : {
2130 "op" : "&",
2131 "left" : {
2132 "type" : "field",
2133 "value" : ["standard_metadata", "ingress_port"]
2134 },
2135 "right" : {
2136 "type" : "hexstr",
2137 "value" : "0xffffffff"
2138 }
2139 }
2140 }
2141 }
2142 ],
2143 "source_info" : {
2144 "filename" : "include/control/port_counter.p4",
2145 "line" : 34,
2146 "column" : 39,
2147 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
2148 }
2149 },
2150 {
2151 "op" : "count",
2152 "parameters" : [
2153 {
2154 "type" : "counter_array",
2155 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
2156 },
2157 {
2158 "type" : "field",
2159 "value" : ["scalars", "tmp_1"]
2160 }
2161 ],
2162 "source_info" : {
2163 "filename" : "include/control/port_counter.p4",
2164 "line" : 34,
2165 "column" : 12,
2166 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2167 }
2168 }
2169 ]
2170 },
2171 {
2172 "name" : "nop",
2173 "id" : 32,
2174 "runtime_data" : [],
2175 "primitives" : []
2176 },
2177 {
2178 "name" : "FabricEgress.egress_next.pop_mpls_if_present",
2179 "id" : 33,
2180 "runtime_data" : [],
2181 "primitives" : [
2182 {
2183 "op" : "remove_header",
2184 "parameters" : [
2185 {
2186 "type" : "header",
2187 "value" : "mpls"
2188 }
2189 ],
2190 "source_info" : {
2191 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002192 "line" : 252,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002193 "column" : 8,
2194 "source_fragment" : "hdr.mpls.setInvalid()"
2195 }
2196 },
2197 {
2198 "op" : "assign",
2199 "parameters" : [
2200 {
2201 "type" : "field",
2202 "value" : ["scalars", "fabric_metadata_t.eth_type"]
2203 },
2204 {
2205 "type" : "field",
2206 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
2207 }
2208 ],
2209 "source_info" : {
2210 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002211 "line" : 254,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002212 "column" : 8,
2213 "source_fragment" : "fabric_metadata.eth_type = fabric_metadata.ip_eth_type"
2214 }
2215 }
2216 ]
2217 },
2218 {
2219 "name" : "FabricEgress.egress_next.set_mpls",
2220 "id" : 34,
2221 "runtime_data" : [],
2222 "primitives" : [
2223 {
2224 "op" : "add_header",
2225 "parameters" : [
2226 {
2227 "type" : "header",
2228 "value" : "mpls"
2229 }
2230 ],
2231 "source_info" : {
2232 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002233 "line" : 259,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002234 "column" : 8,
2235 "source_fragment" : "hdr.mpls.setValid()"
2236 }
2237 },
2238 {
2239 "op" : "assign",
2240 "parameters" : [
2241 {
2242 "type" : "field",
2243 "value" : ["mpls", "label"]
2244 },
2245 {
2246 "type" : "field",
2247 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
2248 }
2249 ],
2250 "source_info" : {
2251 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002252 "line" : 260,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002253 "column" : 8,
2254 "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label"
2255 }
2256 },
2257 {
2258 "op" : "assign",
2259 "parameters" : [
2260 {
2261 "type" : "field",
2262 "value" : ["mpls", "tc"]
2263 },
2264 {
2265 "type" : "hexstr",
2266 "value" : "0x00"
2267 }
2268 ],
2269 "source_info" : {
2270 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002271 "line" : 261,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002272 "column" : 8,
2273 "source_fragment" : "hdr.mpls.tc = 3w0"
2274 }
2275 },
2276 {
2277 "op" : "assign",
2278 "parameters" : [
2279 {
2280 "type" : "field",
2281 "value" : ["mpls", "bos"]
2282 },
2283 {
2284 "type" : "hexstr",
2285 "value" : "0x01"
2286 }
2287 ],
2288 "source_info" : {
2289 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002290 "line" : 262,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002291 "column" : 8,
2292 "source_fragment" : "hdr.mpls.bos = 1w1"
2293 }
2294 },
2295 {
2296 "op" : "assign",
2297 "parameters" : [
2298 {
2299 "type" : "field",
2300 "value" : ["mpls", "ttl"]
2301 },
2302 {
2303 "type" : "field",
2304 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2305 }
2306 ],
2307 "source_info" : {
2308 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002309 "line" : 263,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002310 "column" : 8,
2311 "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl"
2312 }
2313 },
2314 {
2315 "op" : "assign",
2316 "parameters" : [
2317 {
2318 "type" : "field",
2319 "value" : ["scalars", "fabric_metadata_t.eth_type"]
2320 },
2321 {
2322 "type" : "hexstr",
2323 "value" : "0x8847"
2324 }
2325 ],
2326 "source_info" : {
2327 "filename" : "include/control/../define.p4",
2328 "line" : 108,
2329 "column" : 31,
2330 "source_fragment" : "0x8847; ..."
2331 }
2332 }
2333 ]
2334 },
2335 {
2336 "name" : "FabricEgress.egress_next.push_vlan",
2337 "id" : 35,
2338 "runtime_data" : [],
2339 "primitives" : [
2340 {
2341 "op" : "add_header",
2342 "parameters" : [
2343 {
2344 "type" : "header",
2345 "value" : "vlan_tag"
2346 }
2347 ],
2348 "source_info" : {
2349 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002350 "line" : 271,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002351 "column" : 8,
2352 "source_fragment" : "hdr.vlan_tag.setValid()"
2353 }
2354 },
2355 {
2356 "op" : "assign",
2357 "parameters" : [
2358 {
2359 "type" : "field",
2360 "value" : ["vlan_tag", "cfi"]
2361 },
2362 {
2363 "type" : "field",
2364 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2365 }
2366 ],
2367 "source_info" : {
2368 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002369 "line" : 272,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002370 "column" : 8,
2371 "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi"
2372 }
2373 },
2374 {
2375 "op" : "assign",
2376 "parameters" : [
2377 {
2378 "type" : "field",
2379 "value" : ["vlan_tag", "pri"]
2380 },
2381 {
2382 "type" : "field",
2383 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2384 }
2385 ],
2386 "source_info" : {
2387 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002388 "line" : 273,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002389 "column" : 8,
2390 "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri"
2391 }
2392 },
2393 {
2394 "op" : "assign",
2395 "parameters" : [
2396 {
2397 "type" : "field",
2398 "value" : ["vlan_tag", "eth_type"]
2399 },
2400 {
2401 "type" : "field",
2402 "value" : ["scalars", "fabric_metadata_t.eth_type"]
2403 }
2404 ],
2405 "source_info" : {
2406 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002407 "line" : 274,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002408 "column" : 8,
2409 "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type"
2410 }
2411 },
2412 {
2413 "op" : "assign",
2414 "parameters" : [
2415 {
2416 "type" : "field",
2417 "value" : ["vlan_tag", "vlan_id"]
2418 },
2419 {
2420 "type" : "field",
2421 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2422 }
2423 ],
2424 "source_info" : {
2425 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002426 "line" : 275,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002427 "column" : 8,
2428 "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id"
2429 }
2430 },
2431 {
2432 "op" : "assign",
2433 "parameters" : [
2434 {
2435 "type" : "field",
2436 "value" : ["ethernet", "eth_type"]
2437 },
2438 {
2439 "type" : "hexstr",
2440 "value" : "0x8100"
2441 }
2442 ],
2443 "source_info" : {
2444 "filename" : "include/control/../define.p4",
2445 "line" : 107,
2446 "column" : 31,
2447 "source_fragment" : "0x8100; ..."
2448 }
2449 }
2450 ]
2451 },
2452 {
2453 "name" : "FabricEgress.egress_next.pop_vlan",
Charles Chancd03f072018-08-31 17:46:37 -07002454 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002455 "runtime_data" : [],
2456 "primitives" : [
2457 {
2458 "op" : "assign",
2459 "parameters" : [
2460 {
2461 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002462 "value" : ["ethernet", "eth_type"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002463 },
2464 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002465 "type" : "field",
2466 "value" : ["scalars", "fabric_metadata_t.eth_type"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002467 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002468 ],
2469 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002470 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002471 "line" : 286,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002472 "column" : 8,
2473 "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type"
2474 }
2475 },
2476 {
2477 "op" : "remove_header",
2478 "parameters" : [
2479 {
2480 "type" : "header",
2481 "value" : "vlan_tag"
2482 }
2483 ],
2484 "source_info" : {
2485 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002486 "line" : 287,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002487 "column" : 8,
2488 "source_fragment" : "hdr.vlan_tag.setInvalid()"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002489 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002490 }
2491 ]
2492 },
2493 {
2494 "name" : "act_4",
Charles Chancd03f072018-08-31 17:46:37 -07002495 "id" : 37,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002496 "runtime_data" : [],
2497 "primitives" : [
2498 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002499 "op" : "drop",
2500 "parameters" : [],
2501 "source_info" : {
2502 "filename" : "include/control/packetio.p4",
2503 "line" : 47,
2504 "column" : 16,
2505 "source_fragment" : "mark_to_drop()"
2506 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002507 }
2508 ]
2509 },
2510 {
2511 "name" : "act_5",
Charles Chancd03f072018-08-31 17:46:37 -07002512 "id" : 38,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002513 "runtime_data" : [],
2514 "primitives" : [
2515 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002516 "op" : "add_header",
2517 "parameters" : [
2518 {
2519 "type" : "header",
2520 "value" : "packet_in"
2521 }
2522 ],
2523 "source_info" : {
2524 "filename" : "include/control/packetio.p4",
2525 "line" : 49,
2526 "column" : 12,
2527 "source_fragment" : "hdr.packet_in.setValid()"
2528 }
2529 },
2530 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02002531 "op" : "assign",
2532 "parameters" : [
2533 {
2534 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002535 "value" : ["packet_in", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002536 },
2537 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002538 "type" : "field",
2539 "value" : ["standard_metadata", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002540 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002541 ],
2542 "source_info" : {
2543 "filename" : "include/control/packetio.p4",
2544 "line" : 50,
2545 "column" : 12,
2546 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2547 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002548 }
2549 ]
2550 },
2551 {
2552 "name" : "act_6",
Charles Chancd03f072018-08-31 17:46:37 -07002553 "id" : 39,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002554 "runtime_data" : [],
2555 "primitives" : [
2556 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002557 "op" : "drop",
2558 "parameters" : [],
2559 "source_info" : {
2560 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002561 "line" : 308,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002562 "column" : 12,
2563 "source_fragment" : "mark_to_drop()"
2564 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002565 }
2566 ]
2567 },
2568 {
2569 "name" : "act_7",
Charles Chancd03f072018-08-31 17:46:37 -07002570 "id" : 40,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002571 "runtime_data" : [],
2572 "primitives" : [
2573 {
2574 "op" : "assign",
2575 "parameters" : [
2576 {
2577 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002578 "value" : ["scalars", "egress_next_tmp"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002579 },
2580 {
2581 "type" : "expression",
2582 "value" : {
2583 "type" : "expression",
2584 "value" : {
2585 "op" : "b2d",
2586 "left" : null,
2587 "right" : {
2588 "type" : "bool",
2589 "value" : true
2590 }
2591 }
2592 }
2593 }
2594 ]
2595 }
2596 ]
2597 },
2598 {
2599 "name" : "act_8",
Charles Chancd03f072018-08-31 17:46:37 -07002600 "id" : 41,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002601 "runtime_data" : [],
2602 "primitives" : [
2603 {
2604 "op" : "assign",
2605 "parameters" : [
2606 {
2607 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002608 "value" : ["scalars", "egress_next_tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002609 },
2610 {
2611 "type" : "expression",
2612 "value" : {
2613 "type" : "expression",
2614 "value" : {
2615 "op" : "b2d",
2616 "left" : null,
2617 "right" : {
2618 "type" : "bool",
2619 "value" : false
2620 }
2621 }
2622 }
2623 }
2624 ]
2625 }
2626 ]
2627 },
2628 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002629 "name" : "act_9",
Charles Chancd03f072018-08-31 17:46:37 -07002630 "id" : 42,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002631 "runtime_data" : [],
2632 "primitives" : [
2633 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002634 "op" : "drop",
2635 "parameters" : [],
2636 "source_info" : {
2637 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002638 "line" : 327,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002639 "column" : 35,
2640 "source_fragment" : "mark_to_drop()"
2641 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002642 }
2643 ]
2644 },
2645 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002646 "name" : "act_10",
Charles Chancd03f072018-08-31 17:46:37 -07002647 "id" : 43,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002648 "runtime_data" : [],
2649 "primitives" : [
2650 {
2651 "op" : "assign",
2652 "parameters" : [
2653 {
2654 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002655 "value" : ["mpls", "ttl"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002656 },
2657 {
2658 "type" : "expression",
2659 "value" : {
2660 "type" : "expression",
2661 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002662 "op" : "&",
2663 "left" : {
2664 "type" : "expression",
2665 "value" : {
2666 "op" : "+",
2667 "left" : {
2668 "type" : "field",
2669 "value" : ["mpls", "ttl"]
2670 },
2671 "right" : {
2672 "type" : "hexstr",
2673 "value" : "0xff"
2674 }
2675 }
2676 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002677 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002678 "type" : "hexstr",
2679 "value" : "0xff"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002680 }
2681 }
2682 }
2683 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002684 ],
2685 "source_info" : {
2686 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002687 "line" : 326,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002688 "column" : 12,
2689 "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
2690 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002691 }
2692 ]
2693 },
2694 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002695 "name" : "act_11",
Charles Chancd03f072018-08-31 17:46:37 -07002696 "id" : 44,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002697 "runtime_data" : [],
2698 "primitives" : [
2699 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002700 "op" : "drop",
2701 "parameters" : [],
Carmelo Casconea5400af2018-07-17 22:11:54 +02002702 "source_info" : {
2703 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002704 "line" : 331,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002705 "column" : 39,
2706 "source_fragment" : "mark_to_drop()"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002707 }
2708 }
2709 ]
2710 },
2711 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002712 "name" : "act_12",
Charles Chancd03f072018-08-31 17:46:37 -07002713 "id" : 45,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002714 "runtime_data" : [],
2715 "primitives" : [
2716 {
2717 "op" : "assign",
2718 "parameters" : [
2719 {
2720 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002721 "value" : ["ipv4", "ttl"]
2722 },
2723 {
2724 "type" : "expression",
2725 "value" : {
2726 "type" : "expression",
2727 "value" : {
2728 "op" : "&",
2729 "left" : {
2730 "type" : "expression",
2731 "value" : {
2732 "op" : "+",
2733 "left" : {
2734 "type" : "field",
2735 "value" : ["ipv4", "ttl"]
2736 },
2737 "right" : {
2738 "type" : "hexstr",
2739 "value" : "0xff"
2740 }
2741 }
2742 },
2743 "right" : {
2744 "type" : "hexstr",
2745 "value" : "0xff"
2746 }
2747 }
2748 }
2749 }
2750 ],
2751 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002752 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002753 "line" : 330,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002754 "column" : 16,
Yi Tseng1d842672017-11-28 16:06:52 -08002755 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2756 }
2757 }
2758 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002759 }
2760 ],
2761 "pipelines" : [
2762 {
2763 "name" : "ingress",
2764 "id" : 0,
2765 "source_info" : {
2766 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002767 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07002768 "column" : 8,
2769 "source_fragment" : "FabricIngress"
2770 },
2771 "init_table" : "node_2",
2772 "tables" : [
2773 {
2774 "name" : "tbl_act",
2775 "id" : 0,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002776 "source_info" : {
2777 "filename" : "include/control/packetio.p4",
2778 "line" : 25,
2779 "column" : 42,
2780 "source_fragment" : "= hdr.packet_out.egress_port; ..."
2781 },
Yi Tsengbe342052017-11-03 10:21:23 -07002782 "key" : [],
2783 "match_type" : "exact",
2784 "type" : "simple",
2785 "max_size" : 1024,
2786 "with_counters" : false,
2787 "support_timeout" : false,
2788 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002789 "action_ids" : [27],
Yi Tsengbe342052017-11-03 10:21:23 -07002790 "actions" : ["act"],
2791 "base_default_next" : null,
2792 "next_tables" : {
2793 "act" : null
2794 },
2795 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002796 "action_id" : 27,
2797 "action_const" : true,
2798 "action_data" : [],
2799 "action_entry_const" : true
2800 }
2801 },
2802 {
2803 "name" : "tbl_act_0",
2804 "id" : 1,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002805 "source_info" : {
2806 "filename" : "include/control/filtering.p4",
2807 "line" : 105,
2808 "column" : 37,
2809 "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
2810 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002811 "key" : [],
2812 "match_type" : "exact",
2813 "type" : "simple",
2814 "max_size" : 1024,
2815 "with_counters" : false,
2816 "support_timeout" : false,
2817 "direct_meters" : null,
2818 "action_ids" : [28],
2819 "actions" : ["act_0"],
2820 "base_default_next" : "node_6",
2821 "next_tables" : {
2822 "act_0" : "node_6"
2823 },
2824 "default_entry" : {
2825 "action_id" : 28,
2826 "action_const" : true,
2827 "action_data" : [],
2828 "action_entry_const" : true
2829 }
2830 },
2831 {
2832 "name" : "tbl_act_1",
2833 "id" : 2,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002834 "source_info" : {
2835 "filename" : "include/control/filtering.p4",
2836 "line" : 115,
2837 "column" : 37,
2838 "source_fragment" : "="
2839 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002840 "key" : [],
2841 "match_type" : "exact",
2842 "type" : "simple",
2843 "max_size" : 1024,
2844 "with_counters" : false,
2845 "support_timeout" : false,
2846 "direct_meters" : null,
2847 "action_ids" : [29],
2848 "actions" : ["act_1"],
2849 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
2850 "next_tables" : {
2851 "act_1" : "FabricIngress.filtering.ingress_port_vlan"
2852 },
2853 "default_entry" : {
2854 "action_id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002855 "action_const" : true,
2856 "action_data" : [],
2857 "action_entry_const" : true
2858 }
2859 },
2860 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002861 "name" : "FabricIngress.filtering.ingress_port_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002862 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -07002863 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002864 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002865 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07002866 "column" : 10,
2867 "source_fragment" : "ingress_port_vlan"
2868 },
2869 "key" : [
2870 {
2871 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002872 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002873 "target" : ["standard_metadata", "ingress_port"],
2874 "mask" : null
2875 },
2876 {
2877 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002878 "name" : "vlan_is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07002879 "target" : ["vlan_tag", "$valid$"],
2880 "mask" : null
2881 },
2882 {
2883 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002884 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002885 "target" : ["vlan_tag", "vlan_id"],
2886 "mask" : null
2887 }
2888 ],
2889 "match_type" : "ternary",
2890 "type" : "simple",
2891 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002892 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002893 "support_timeout" : false,
2894 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002895 "action_ids" : [7, 8, 9],
2896 "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"],
2897 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002898 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002899 "FabricIngress.filtering.deny" : "FabricIngress.filtering.fwd_classifier",
2900 "FabricIngress.filtering.permit" : "FabricIngress.filtering.fwd_classifier",
2901 "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002902 },
2903 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002904 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07002905 "action_const" : true,
2906 "action_data" : [],
2907 "action_entry_const" : true
2908 }
2909 },
2910 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002911 "name" : "FabricIngress.filtering.fwd_classifier",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002912 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07002913 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002914 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002915 "line" : 87,
Yi Tsengbe342052017-11-03 10:21:23 -07002916 "column" : 10,
2917 "source_fragment" : "fwd_classifier"
2918 },
2919 "key" : [
2920 {
2921 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002922 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002923 "target" : ["standard_metadata", "ingress_port"],
2924 "mask" : null
2925 },
2926 {
Charles Chan384aea22018-08-23 22:08:02 -07002927 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002928 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07002929 "target" : ["ethernet", "dst_addr"],
2930 "mask" : null
2931 },
2932 {
2933 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002934 "name" : "eth_type",
2935 "target" : ["scalars", "fabric_metadata_t.eth_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002936 "mask" : null
2937 }
2938 ],
Charles Chan384aea22018-08-23 22:08:02 -07002939 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002940 "type" : "simple",
2941 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002942 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002943 "support_timeout" : false,
2944 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002945 "action_ids" : [10],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002946 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002947 "base_default_next" : "node_10",
Yi Tsengbe342052017-11-03 10:21:23 -07002948 "next_tables" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002949 "FabricIngress.filtering.set_forwarding_type" : "node_10"
Yi Tsengbe342052017-11-03 10:21:23 -07002950 },
2951 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002952 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07002953 "action_const" : true,
2954 "action_data" : ["0x0"],
2955 "action_entry_const" : true
2956 }
2957 },
2958 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002959 "name" : "FabricIngress.forwarding.bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002960 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07002961 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002962 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002963 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002964 "column" : 10,
2965 "source_fragment" : "bridging"
2966 },
2967 "key" : [
2968 {
2969 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002970 "name" : "vlan_id",
2971 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tsengbe342052017-11-03 10:21:23 -07002972 "mask" : null
2973 },
2974 {
2975 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002976 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07002977 "target" : ["ethernet", "dst_addr"],
2978 "mask" : null
2979 }
2980 ],
2981 "match_type" : "ternary",
2982 "type" : "simple",
2983 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002984 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002985 "support_timeout" : false,
2986 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002987 "action_ids" : [11, 0],
2988 "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
2989 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08002990 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002991 "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
2992 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08002993 },
2994 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002995 "action_id" : 0,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002996 "action_const" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002997 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002998 "action_entry_const" : true
Yi Tseng1d842672017-11-28 16:06:52 -08002999 }
3000 },
3001 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003002 "name" : "FabricIngress.forwarding.mpls",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003003 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003004 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003005 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003006 "line" : 71,
Yi Tseng1d842672017-11-28 16:06:52 -08003007 "column" : 10,
3008 "source_fragment" : "mpls"
3009 },
3010 "key" : [
3011 {
3012 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003013 "name" : "mpls_label",
3014 "target" : ["scalars", "fabric_metadata_t.mpls_label"],
Yi Tseng1d842672017-11-28 16:06:52 -08003015 "mask" : null
3016 }
3017 ],
3018 "match_type" : "exact",
3019 "type" : "simple",
3020 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003021 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003022 "support_timeout" : false,
3023 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003024 "action_ids" : [12, 1],
3025 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
3026 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003027 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003028 "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
3029 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003030 },
3031 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003032 "action_id" : 1,
Yi Tseng1d842672017-11-28 16:06:52 -08003033 "action_const" : true,
3034 "action_data" : [],
3035 "action_entry_const" : true
3036 }
3037 },
3038 {
Charles Chan384aea22018-08-23 22:08:02 -07003039 "name" : "FabricIngress.forwarding.routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003040 "id" : 7,
Yi Tseng1d842672017-11-28 16:06:52 -08003041 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003042 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003043 "line" : 101,
Yi Tseng1d842672017-11-28 16:06:52 -08003044 "column" : 10,
Charles Chan384aea22018-08-23 22:08:02 -07003045 "source_fragment" : "routing_v4"
Yi Tseng1d842672017-11-28 16:06:52 -08003046 },
3047 "key" : [
3048 {
3049 "match_type" : "lpm",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003050 "name" : "ipv4_dst",
Yi Tseng1d842672017-11-28 16:06:52 -08003051 "target" : ["ipv4", "dst_addr"],
3052 "mask" : null
3053 }
3054 ],
3055 "match_type" : "lpm",
3056 "type" : "simple",
3057 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003058 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003059 "support_timeout" : false,
3060 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003061 "action_ids" : [13, 14, 2],
3062 "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
3063 "base_default_next" : "FabricIngress.acl.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003064 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003065 "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
3066 "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
3067 "nop" : "FabricIngress.acl.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003068 },
3069 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003070 "action_id" : 2,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003071 "action_const" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003072 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003073 "action_entry_const" : true
Yi Tsengbe342052017-11-03 10:21:23 -07003074 }
3075 },
3076 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003077 "name" : "FabricIngress.acl.acl",
3078 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003079 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003080 "filename" : "include/control/acl.p4",
3081 "line" : 60,
Yi Tsengbe342052017-11-03 10:21:23 -07003082 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003083 "source_fragment" : "acl"
3084 },
3085 "key" : [
3086 {
3087 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003088 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003089 "target" : ["standard_metadata", "ingress_port"],
3090 "mask" : null
3091 },
3092 {
3093 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003094 "name" : "ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003095 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3096 "mask" : null
3097 },
3098 {
3099 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003100 "name" : "l4_sport",
3101 "target" : ["scalars", "fabric_metadata_t.l4_sport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003102 "mask" : null
3103 },
3104 {
3105 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003106 "name" : "l4_dport",
3107 "target" : ["scalars", "fabric_metadata_t.l4_dport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003108 "mask" : null
3109 },
3110 {
3111 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003112 "name" : "eth_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003113 "target" : ["ethernet", "dst_addr"],
3114 "mask" : null
3115 },
3116 {
3117 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003118 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003119 "target" : ["ethernet", "src_addr"],
3120 "mask" : null
3121 },
3122 {
3123 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003124 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003125 "target" : ["vlan_tag", "vlan_id"],
3126 "mask" : null
3127 },
3128 {
3129 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003130 "name" : "eth_type",
3131 "target" : ["scalars", "fabric_metadata_t.eth_type"],
Yi Tseng8235a1a2018-07-24 20:57:28 +08003132 "mask" : null
3133 },
3134 {
3135 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003136 "name" : "ipv4_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003137 "target" : ["ipv4", "src_addr"],
3138 "mask" : null
3139 },
3140 {
3141 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003142 "name" : "ipv4_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003143 "target" : ["ipv4", "dst_addr"],
3144 "mask" : null
3145 },
3146 {
3147 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003148 "name" : "icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003149 "target" : ["icmp", "icmp_type"],
3150 "mask" : null
3151 },
3152 {
3153 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003154 "name" : "icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003155 "target" : ["icmp", "icmp_code"],
3156 "mask" : null
3157 }
3158 ],
3159 "match_type" : "ternary",
3160 "type" : "simple",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003161 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003162 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003163 "support_timeout" : false,
3164 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003165 "action_ids" : [15, 16, 17, 18, 19],
3166 "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.clone_to_cpu", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
3167 "base_default_next" : "node_18",
Yi Tsengbe342052017-11-03 10:21:23 -07003168 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003169 "FabricIngress.acl.set_next_id_acl" : "node_18",
3170 "FabricIngress.acl.punt_to_cpu" : "node_18",
3171 "FabricIngress.acl.clone_to_cpu" : "node_18",
3172 "FabricIngress.acl.drop" : "node_18",
3173 "FabricIngress.acl.nop_acl" : "node_18"
Yi Tsengbe342052017-11-03 10:21:23 -07003174 },
3175 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003176 "action_id" : 19,
Yi Tsengbe342052017-11-03 10:21:23 -07003177 "action_const" : true,
3178 "action_data" : [],
3179 "action_entry_const" : true
3180 }
3181 },
3182 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003183 "name" : "FabricIngress.next.xconnect",
3184 "id" : 9,
3185 "source_info" : {
3186 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003187 "line" : 104,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003188 "column" : 10,
3189 "source_fragment" : "xconnect"
3190 },
3191 "key" : [
3192 {
3193 "match_type" : "exact",
3194 "name" : "ig_port",
3195 "target" : ["standard_metadata", "ingress_port"],
3196 "mask" : null
3197 },
3198 {
3199 "match_type" : "exact",
3200 "name" : "next_id",
3201 "target" : ["scalars", "fabric_metadata_t.next_id"],
3202 "mask" : null
3203 }
3204 ],
3205 "match_type" : "exact",
3206 "type" : "simple",
3207 "max_size" : 1024,
3208 "with_counters" : true,
3209 "support_timeout" : false,
3210 "direct_meters" : null,
3211 "action_ids" : [21, 22, 4],
3212 "actions" : ["FabricIngress.next.output_xconnect", "FabricIngress.next.set_next_id_xconnect", "nop"],
3213 "base_default_next" : "FabricIngress.next.hashed",
3214 "next_tables" : {
3215 "FabricIngress.next.output_xconnect" : "FabricIngress.next.hashed",
3216 "FabricIngress.next.set_next_id_xconnect" : "FabricIngress.next.hashed",
3217 "nop" : "FabricIngress.next.hashed"
3218 },
3219 "default_entry" : {
3220 "action_id" : 4,
3221 "action_const" : true,
3222 "action_data" : [],
3223 "action_entry_const" : true
3224 }
3225 },
3226 {
3227 "name" : "FabricIngress.next.hashed",
3228 "id" : 10,
3229 "source_info" : {
3230 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003231 "line" : 184,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003232 "column" : 10,
3233 "source_fragment" : "hashed"
3234 },
3235 "key" : [
3236 {
3237 "match_type" : "exact",
3238 "name" : "next_id",
3239 "target" : ["scalars", "fabric_metadata_t.next_id"],
3240 "mask" : null
3241 }
3242 ],
3243 "match_type" : "exact",
3244 "type" : "indirect_ws",
3245 "action_profile" : "FabricIngress.next.hashed_selector",
3246 "max_size" : 1024,
3247 "with_counters" : true,
3248 "support_timeout" : false,
3249 "direct_meters" : null,
3250 "action_ids" : [23, 24, 25, 5],
3251 "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "FabricIngress.next.mpls_routing_hashed", "nop"],
3252 "base_default_next" : "FabricIngress.next.multicast",
3253 "next_tables" : {
3254 "FabricIngress.next.output_hashed" : "FabricIngress.next.multicast",
3255 "FabricIngress.next.routing_hashed" : "FabricIngress.next.multicast",
3256 "FabricIngress.next.mpls_routing_hashed" : "FabricIngress.next.multicast",
3257 "nop" : "FabricIngress.next.multicast"
3258 }
3259 },
3260 {
3261 "name" : "FabricIngress.next.multicast",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003262 "id" : 11,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003263 "source_info" : {
3264 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003265 "line" : 218,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003266 "column" : 10,
3267 "source_fragment" : "multicast"
3268 },
3269 "key" : [
3270 {
3271 "match_type" : "exact",
3272 "name" : "next_id",
3273 "target" : ["scalars", "fabric_metadata_t.next_id"],
3274 "mask" : null
3275 }
3276 ],
3277 "match_type" : "exact",
3278 "type" : "simple",
3279 "max_size" : 1024,
3280 "with_counters" : true,
3281 "support_timeout" : false,
3282 "direct_meters" : null,
3283 "action_ids" : [26, 6],
3284 "actions" : ["FabricIngress.next.set_mcast_group_id", "nop"],
3285 "base_default_next" : "FabricIngress.next.next_vlan",
3286 "next_tables" : {
3287 "FabricIngress.next.set_mcast_group_id" : "FabricIngress.next.next_vlan",
3288 "nop" : "FabricIngress.next.next_vlan"
3289 },
3290 "default_entry" : {
3291 "action_id" : 6,
3292 "action_const" : true,
3293 "action_data" : [],
3294 "action_entry_const" : true
3295 }
3296 },
3297 {
3298 "name" : "FabricIngress.next.next_vlan",
3299 "id" : 12,
3300 "source_info" : {
3301 "filename" : "include/control/next.p4",
3302 "line" : 74,
3303 "column" : 10,
3304 "source_fragment" : "next_vlan"
3305 },
3306 "key" : [
3307 {
3308 "match_type" : "exact",
3309 "name" : "next_id",
3310 "target" : ["scalars", "fabric_metadata_t.next_id"],
3311 "mask" : null
3312 }
3313 ],
3314 "match_type" : "exact",
3315 "type" : "simple",
3316 "max_size" : 1024,
3317 "with_counters" : true,
3318 "support_timeout" : false,
3319 "direct_meters" : null,
3320 "action_ids" : [20, 3],
3321 "actions" : ["FabricIngress.next.set_vlan", "nop"],
3322 "base_default_next" : "node_23",
3323 "next_tables" : {
3324 "FabricIngress.next.set_vlan" : "node_23",
3325 "nop" : "node_23"
3326 },
3327 "default_entry" : {
3328 "action_id" : 3,
3329 "action_const" : true,
3330 "action_data" : [],
3331 "action_entry_const" : true
3332 }
3333 },
3334 {
3335 "name" : "tbl_act_2",
3336 "id" : 13,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003337 "source_info" : {
3338 "filename" : "include/control/port_counter.p4",
3339 "line" : 31,
3340 "column" : 12,
3341 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
3342 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003343 "key" : [],
3344 "match_type" : "exact",
3345 "type" : "simple",
3346 "max_size" : 1024,
3347 "with_counters" : false,
3348 "support_timeout" : false,
3349 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003350 "action_ids" : [30],
3351 "actions" : ["act_2"],
3352 "base_default_next" : "node_25",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003353 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003354 "act_2" : "node_25"
Carmelo Casconea5400af2018-07-17 22:11:54 +02003355 },
3356 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003357 "action_id" : 30,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003358 "action_const" : true,
3359 "action_data" : [],
3360 "action_entry_const" : true
3361 }
3362 },
3363 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003364 "name" : "tbl_act_3",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003365 "id" : 14,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003366 "source_info" : {
3367 "filename" : "include/control/port_counter.p4",
3368 "line" : 34,
3369 "column" : 12,
3370 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
3371 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003372 "key" : [],
3373 "match_type" : "exact",
3374 "type" : "simple",
3375 "max_size" : 1024,
3376 "with_counters" : false,
3377 "support_timeout" : false,
3378 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003379 "action_ids" : [31],
3380 "actions" : ["act_3"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003381 "base_default_next" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003382 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003383 "act_3" : null
Yi Tseng27b9bc02018-04-12 14:52:40 +08003384 },
3385 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003386 "action_id" : 31,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003387 "action_const" : true,
3388 "action_data" : [],
3389 "action_entry_const" : true
3390 }
Yi Tsengbe342052017-11-03 10:21:23 -07003391 }
3392 ],
3393 "action_profiles" : [
3394 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003395 "name" : "FabricIngress.next.hashed_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003396 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003397 "source_info" : {
3398 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003399 "line" : 165,
3400 "column" : 57,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003401 "source_fragment" : "hashed_selector"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003402 },
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003403 "max_size" : 1024,
Yi Tsengbe342052017-11-03 10:21:23 -07003404 "selector" : {
3405 "algo" : "crc16",
3406 "input" : [
3407 {
3408 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003409 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003410 },
3411 {
3412 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003413 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003414 },
3415 {
3416 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003417 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003418 },
3419 {
3420 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003421 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003422 },
3423 {
3424 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003425 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003426 }
3427 ]
3428 }
3429 }
3430 ],
3431 "conditionals" : [
3432 {
3433 "name" : "node_2",
3434 "id" : 0,
3435 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003436 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003437 "line" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07003438 "column" : 12,
3439 "source_fragment" : "hdr.packet_out.isValid()"
3440 },
3441 "expression" : {
3442 "type" : "expression",
3443 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003444 "op" : "d2b",
3445 "left" : null,
3446 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003447 "type" : "field",
3448 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003449 }
3450 }
3451 },
3452 "true_next" : "tbl_act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003453 "false_next" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07003454 },
3455 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003456 "name" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07003457 "id" : 1,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003458 "source_info" : {
3459 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003460 "line" : 104,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003461 "column" : 12,
3462 "source_fragment" : "hdr.vlan_tag.isValid()"
3463 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003464 "expression" : {
3465 "type" : "expression",
3466 "value" : {
3467 "op" : "d2b",
3468 "left" : null,
3469 "right" : {
3470 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003471 "value" : ["vlan_tag", "$valid$"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003472 }
3473 }
3474 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003475 "true_next" : "tbl_act_0",
3476 "false_next" : "node_6"
3477 },
3478 {
3479 "name" : "node_6",
3480 "id" : 2,
3481 "source_info" : {
3482 "filename" : "include/control/filtering.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003483 "line" : 110,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003484 "column" : 12,
3485 "source_fragment" : "!hdr.mpls.isValid()"
3486 },
3487 "expression" : {
3488 "type" : "expression",
3489 "value" : {
3490 "op" : "not",
3491 "left" : null,
3492 "right" : {
3493 "type" : "expression",
3494 "value" : {
3495 "op" : "d2b",
3496 "left" : null,
3497 "right" : {
3498 "type" : "field",
3499 "value" : ["mpls", "$valid$"]
3500 }
3501 }
3502 }
3503 }
3504 },
3505 "true_next" : "tbl_act_1",
3506 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003507 },
3508 {
3509 "name" : "node_10",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003510 "id" : 3,
3511 "source_info" : {
3512 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003513 "line" : 67,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003514 "column" : 12,
3515 "source_fragment" : "fabric_metadata.skip_forwarding == false"
3516 },
3517 "expression" : {
3518 "type" : "expression",
3519 "value" : {
3520 "op" : "==",
3521 "left" : {
3522 "type" : "expression",
3523 "value" : {
3524 "op" : "d2b",
3525 "left" : null,
3526 "right" : {
3527 "type" : "field",
3528 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
3529 }
3530 }
3531 },
3532 "right" : {
3533 "type" : "bool",
3534 "value" : false
3535 }
3536 }
3537 },
3538 "true_next" : "node_11",
3539 "false_next" : "FabricIngress.acl.acl"
3540 },
3541 {
3542 "name" : "node_11",
3543 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07003544 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003545 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003546 "line" : 141,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003547 "column" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003548 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3549 },
3550 "expression" : {
3551 "type" : "expression",
3552 "value" : {
3553 "op" : "==",
3554 "left" : {
3555 "type" : "field",
3556 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3557 },
3558 "right" : {
3559 "type" : "hexstr",
3560 "value" : "0x00"
3561 }
3562 }
3563 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003564 "true_next" : "FabricIngress.forwarding.bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003565 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003566 },
3567 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003568 "name" : "node_13",
3569 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003570 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003571 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003572 "line" : 142,
Yi Tsengbe342052017-11-03 10:21:23 -07003573 "column" : 17,
3574 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3575 },
3576 "expression" : {
3577 "type" : "expression",
3578 "value" : {
3579 "op" : "==",
3580 "left" : {
3581 "type" : "field",
3582 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3583 },
3584 "right" : {
3585 "type" : "hexstr",
3586 "value" : "0x01"
3587 }
3588 }
3589 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003590 "true_next" : "FabricIngress.forwarding.mpls",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003591 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07003592 },
3593 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003594 "name" : "node_15",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003595 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003596 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003597 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003598 "line" : 143,
Yi Tsengbe342052017-11-03 10:21:23 -07003599 "column" : 17,
3600 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3601 },
3602 "expression" : {
3603 "type" : "expression",
3604 "value" : {
3605 "op" : "==",
3606 "left" : {
3607 "type" : "field",
3608 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3609 },
3610 "right" : {
3611 "type" : "hexstr",
3612 "value" : "0x02"
3613 }
3614 }
3615 },
Charles Chan384aea22018-08-23 22:08:02 -07003616 "true_next" : "FabricIngress.forwarding.routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003617 "false_next" : "FabricIngress.acl.acl"
3618 },
3619 {
3620 "name" : "node_18",
3621 "id" : 7,
3622 "source_info" : {
3623 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003624 "line" : 71,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003625 "column" : 12,
3626 "source_fragment" : "fabric_metadata.skip_next == false"
3627 },
3628 "expression" : {
3629 "type" : "expression",
3630 "value" : {
3631 "op" : "==",
3632 "left" : {
3633 "type" : "expression",
3634 "value" : {
3635 "op" : "d2b",
3636 "left" : null,
3637 "right" : {
3638 "type" : "field",
3639 "value" : ["scalars", "fabric_metadata_t.skip_next"]
3640 }
3641 }
3642 },
3643 "right" : {
3644 "type" : "bool",
3645 "value" : false
3646 }
3647 }
3648 },
3649 "false_next" : null,
3650 "true_next" : "FabricIngress.next.xconnect"
Yi Tseng27b9bc02018-04-12 14:52:40 +08003651 },
3652 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003653 "name" : "node_23",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003654 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003655 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003656 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003657 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07003658 "column" : 12,
3659 "source_fragment" : "standard_metadata.egress_spec < 511"
3660 },
3661 "expression" : {
3662 "type" : "expression",
3663 "value" : {
3664 "op" : "<",
3665 "left" : {
3666 "type" : "field",
3667 "value" : ["standard_metadata", "egress_spec"]
3668 },
3669 "right" : {
3670 "type" : "hexstr",
3671 "value" : "0x01ff"
3672 }
3673 }
3674 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003675 "true_next" : "tbl_act_2",
3676 "false_next" : "node_25"
Yi Tsengbe342052017-11-03 10:21:23 -07003677 },
3678 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003679 "name" : "node_25",
3680 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003681 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003682 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003683 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07003684 "column" : 12,
3685 "source_fragment" : "standard_metadata.ingress_port < 511"
3686 },
3687 "expression" : {
3688 "type" : "expression",
3689 "value" : {
3690 "op" : "<",
3691 "left" : {
3692 "type" : "field",
3693 "value" : ["standard_metadata", "ingress_port"]
3694 },
3695 "right" : {
3696 "type" : "hexstr",
3697 "value" : "0x01ff"
3698 }
3699 }
3700 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003701 "false_next" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003702 "true_next" : "tbl_act_3"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003703 }
3704 ]
3705 },
3706 {
3707 "name" : "egress",
3708 "id" : 1,
3709 "source_info" : {
3710 "filename" : "fabric.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003711 "line" : 85,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003712 "column" : 8,
3713 "source_fragment" : "FabricEgress"
3714 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003715 "init_table" : "node_29",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003716 "tables" : [
3717 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003718 "name" : "tbl_act_4",
3719 "id" : 15,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003720 "source_info" : {
3721 "filename" : "include/control/packetio.p4",
3722 "line" : 47,
3723 "column" : 16,
3724 "source_fragment" : "mark_to_drop()"
3725 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003726 "key" : [],
3727 "match_type" : "exact",
3728 "type" : "simple",
3729 "max_size" : 1024,
3730 "with_counters" : false,
3731 "support_timeout" : false,
3732 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003733 "action_ids" : [37],
3734 "actions" : ["act_4"],
3735 "base_default_next" : "tbl_act_5",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003736 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003737 "act_4" : "tbl_act_5"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003738 },
3739 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003740 "action_id" : 37,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003741 "action_const" : true,
3742 "action_data" : [],
3743 "action_entry_const" : true
3744 }
3745 },
3746 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003747 "name" : "tbl_act_5",
3748 "id" : 16,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003749 "source_info" : {
3750 "filename" : "include/control/packetio.p4",
3751 "line" : 49,
3752 "column" : 12,
3753 "source_fragment" : "hdr.packet_in.setValid(); ..."
3754 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003755 "key" : [],
3756 "match_type" : "exact",
3757 "type" : "simple",
3758 "max_size" : 1024,
3759 "with_counters" : false,
3760 "support_timeout" : false,
3761 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003762 "action_ids" : [38],
3763 "actions" : ["act_5"],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003764 "base_default_next" : null,
3765 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003766 "act_5" : null
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003767 },
3768 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003769 "action_id" : 38,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003770 "action_const" : true,
3771 "action_data" : [],
3772 "action_entry_const" : true
3773 }
3774 },
3775 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003776 "name" : "tbl_act_6",
3777 "id" : 17,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003778 "source_info" : {
3779 "filename" : "include/control/next.p4",
3780 "line" : 308,
3781 "column" : 12,
3782 "source_fragment" : "mark_to_drop()"
3783 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003784 "key" : [],
3785 "match_type" : "exact",
3786 "type" : "simple",
3787 "max_size" : 1024,
3788 "with_counters" : false,
3789 "support_timeout" : false,
3790 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003791 "action_ids" : [39],
3792 "actions" : ["act_6"],
3793 "base_default_next" : "node_36",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003794 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003795 "act_6" : "node_36"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003796 },
3797 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003798 "action_id" : 39,
3799 "action_const" : true,
3800 "action_data" : [],
3801 "action_entry_const" : true
3802 }
3803 },
3804 {
3805 "name" : "tbl_egress_next_pop_mpls_if_present",
3806 "id" : 18,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003807 "source_info" : {
3808 "filename" : "include/control/next.p4",
3809 "line" : 312,
3810 "column" : 36,
3811 "source_fragment" : "pop_mpls_if_present()"
3812 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003813 "key" : [],
3814 "match_type" : "exact",
3815 "type" : "simple",
3816 "max_size" : 1024,
3817 "with_counters" : false,
3818 "support_timeout" : false,
3819 "direct_meters" : null,
3820 "action_ids" : [33],
3821 "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
3822 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3823 "next_tables" : {
3824 "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
3825 },
3826 "default_entry" : {
3827 "action_id" : 33,
3828 "action_const" : true,
3829 "action_data" : [],
3830 "action_entry_const" : true
3831 }
3832 },
3833 {
3834 "name" : "tbl_egress_next_set_mpls",
3835 "id" : 19,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003836 "source_info" : {
3837 "filename" : "include/control/next.p4",
3838 "line" : 314,
3839 "column" : 12,
3840 "source_fragment" : "set_mpls()"
3841 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003842 "key" : [],
3843 "match_type" : "exact",
3844 "type" : "simple",
3845 "max_size" : 1024,
3846 "with_counters" : false,
3847 "support_timeout" : false,
3848 "direct_meters" : null,
3849 "action_ids" : [34],
3850 "actions" : ["FabricEgress.egress_next.set_mpls"],
3851 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3852 "next_tables" : {
3853 "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
3854 },
3855 "default_entry" : {
3856 "action_id" : 34,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003857 "action_const" : true,
3858 "action_data" : [],
3859 "action_entry_const" : true
3860 }
3861 },
3862 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003863 "name" : "FabricEgress.egress_next.egress_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003864 "id" : 20,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003865 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003866 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003867 "line" : 291,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003868 "column" : 10,
3869 "source_fragment" : "egress_vlan"
3870 },
3871 "key" : [
3872 {
3873 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003874 "name" : "vlan_id",
3875 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003876 "mask" : null
3877 },
3878 {
3879 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003880 "name" : "eg_port",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003881 "target" : ["standard_metadata", "egress_port"],
3882 "mask" : null
3883 }
3884 ],
3885 "match_type" : "exact",
3886 "type" : "simple",
3887 "max_size" : 1024,
Yi Tseng47eac892018-07-11 02:17:04 +08003888 "with_counters" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003889 "support_timeout" : false,
3890 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003891 "action_ids" : [36, 32],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003892 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003893 "base_default_next" : null,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003894 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003895 "__HIT__" : "tbl_act_7",
3896 "__MISS__" : "tbl_act_8"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003897 },
3898 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003899 "action_id" : 32,
3900 "action_const" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003901 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003902 "action_entry_const" : true
3903 }
3904 },
3905 {
3906 "name" : "tbl_act_7",
3907 "id" : 21,
3908 "key" : [],
3909 "match_type" : "exact",
3910 "type" : "simple",
3911 "max_size" : 1024,
3912 "with_counters" : false,
3913 "support_timeout" : false,
3914 "direct_meters" : null,
3915 "action_ids" : [40],
3916 "actions" : ["act_7"],
3917 "base_default_next" : "node_43",
3918 "next_tables" : {
3919 "act_7" : "node_43"
3920 },
3921 "default_entry" : {
3922 "action_id" : 40,
3923 "action_const" : true,
3924 "action_data" : [],
3925 "action_entry_const" : true
3926 }
3927 },
3928 {
3929 "name" : "tbl_act_8",
3930 "id" : 22,
3931 "key" : [],
3932 "match_type" : "exact",
3933 "type" : "simple",
3934 "max_size" : 1024,
3935 "with_counters" : false,
3936 "support_timeout" : false,
3937 "direct_meters" : null,
3938 "action_ids" : [41],
3939 "actions" : ["act_8"],
3940 "base_default_next" : "node_43",
3941 "next_tables" : {
3942 "act_8" : "node_43"
3943 },
3944 "default_entry" : {
3945 "action_id" : 41,
3946 "action_const" : true,
3947 "action_data" : [],
3948 "action_entry_const" : true
3949 }
3950 },
3951 {
3952 "name" : "tbl_egress_next_push_vlan",
3953 "id" : 23,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003954 "source_info" : {
3955 "filename" : "include/control/next.p4",
3956 "line" : 320,
3957 "column" : 16,
3958 "source_fragment" : "push_vlan()"
3959 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003960 "key" : [],
3961 "match_type" : "exact",
3962 "type" : "simple",
3963 "max_size" : 1024,
3964 "with_counters" : false,
3965 "support_timeout" : false,
3966 "direct_meters" : null,
3967 "action_ids" : [35],
3968 "actions" : ["FabricEgress.egress_next.push_vlan"],
3969 "base_default_next" : "node_46",
3970 "next_tables" : {
3971 "FabricEgress.egress_next.push_vlan" : "node_46"
3972 },
3973 "default_entry" : {
3974 "action_id" : 35,
3975 "action_const" : true,
3976 "action_data" : [],
3977 "action_entry_const" : true
3978 }
3979 },
3980 {
3981 "name" : "tbl_act_9",
3982 "id" : 24,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003983 "source_info" : {
3984 "filename" : "include/control/next.p4",
3985 "line" : 326,
3986 "column" : 25,
3987 "source_fragment" : "="
3988 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003989 "key" : [],
3990 "match_type" : "exact",
3991 "type" : "simple",
3992 "max_size" : 1024,
3993 "with_counters" : false,
3994 "support_timeout" : false,
3995 "direct_meters" : null,
3996 "action_ids" : [43],
3997 "actions" : ["act_10"],
3998 "base_default_next" : "node_48",
3999 "next_tables" : {
4000 "act_10" : "node_48"
4001 },
4002 "default_entry" : {
4003 "action_id" : 43,
4004 "action_const" : true,
4005 "action_data" : [],
4006 "action_entry_const" : true
4007 }
4008 },
4009 {
4010 "name" : "tbl_act_10",
4011 "id" : 25,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004012 "source_info" : {
4013 "filename" : "include/control/next.p4",
4014 "line" : 327,
4015 "column" : 35,
4016 "source_fragment" : "mark_to_drop()"
4017 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004018 "key" : [],
4019 "match_type" : "exact",
4020 "type" : "simple",
4021 "max_size" : 1024,
4022 "with_counters" : false,
4023 "support_timeout" : false,
4024 "direct_meters" : null,
4025 "action_ids" : [42],
4026 "actions" : ["act_9"],
4027 "base_default_next" : null,
4028 "next_tables" : {
4029 "act_9" : null
4030 },
4031 "default_entry" : {
4032 "action_id" : 42,
4033 "action_const" : true,
4034 "action_data" : [],
4035 "action_entry_const" : true
4036 }
4037 },
4038 {
4039 "name" : "tbl_act_11",
4040 "id" : 26,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004041 "source_info" : {
4042 "filename" : "include/control/next.p4",
4043 "line" : 330,
4044 "column" : 29,
4045 "source_fragment" : "="
4046 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004047 "key" : [],
4048 "match_type" : "exact",
4049 "type" : "simple",
4050 "max_size" : 1024,
4051 "with_counters" : false,
4052 "support_timeout" : false,
4053 "direct_meters" : null,
4054 "action_ids" : [45],
4055 "actions" : ["act_12"],
4056 "base_default_next" : "node_52",
4057 "next_tables" : {
4058 "act_12" : "node_52"
4059 },
4060 "default_entry" : {
4061 "action_id" : 45,
4062 "action_const" : true,
4063 "action_data" : [],
4064 "action_entry_const" : true
4065 }
4066 },
4067 {
4068 "name" : "tbl_act_12",
4069 "id" : 27,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004070 "source_info" : {
4071 "filename" : "include/control/next.p4",
4072 "line" : 331,
4073 "column" : 39,
4074 "source_fragment" : "mark_to_drop()"
4075 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004076 "key" : [],
4077 "match_type" : "exact",
4078 "type" : "simple",
4079 "max_size" : 1024,
4080 "with_counters" : false,
4081 "support_timeout" : false,
4082 "direct_meters" : null,
4083 "action_ids" : [44],
4084 "actions" : ["act_11"],
4085 "base_default_next" : null,
4086 "next_tables" : {
4087 "act_11" : null
4088 },
4089 "default_entry" : {
4090 "action_id" : 44,
4091 "action_const" : true,
4092 "action_data" : [],
4093 "action_entry_const" : true
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004094 }
Yi Tseng3a5731e2018-01-22 11:38:58 -08004095 }
4096 ],
4097 "action_profiles" : [],
4098 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004099 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004100 "name" : "node_29",
4101 "id" : 10,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004102 "source_info" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004103 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004104 "line" : 39,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004105 "column" : 12,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004106 "source_fragment" : "fabric_metadata.is_controller_packet_out == true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004107 },
4108 "expression" : {
4109 "type" : "expression",
4110 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004111 "op" : "==",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004112 "left" : {
4113 "type" : "expression",
4114 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004115 "op" : "d2b",
4116 "left" : null,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004117 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004118 "type" : "field",
4119 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02004120 }
4121 }
4122 },
4123 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004124 "type" : "bool",
4125 "value" : true
Carmelo Casconea5400af2018-07-17 22:11:54 +02004126 }
4127 }
4128 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004129 "true_next" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004130 "false_next" : "node_30"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004131 },
4132 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004133 "name" : "node_30",
4134 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07004135 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004136 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004137 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07004138 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08004139 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07004140 },
4141 "expression" : {
4142 "type" : "expression",
4143 "value" : {
4144 "op" : "==",
4145 "left" : {
4146 "type" : "field",
4147 "value" : ["standard_metadata", "egress_port"]
4148 },
4149 "right" : {
4150 "type" : "hexstr",
4151 "value" : "0x00ff"
4152 }
4153 }
4154 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004155 "true_next" : "node_31",
4156 "false_next" : "node_34"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004157 },
4158 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004159 "name" : "node_31",
4160 "id" : 12,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004161 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004162 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004163 "line" : 44,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02004164 "column" : 16,
4165 "source_fragment" : "fabric_metadata.is_multicast == true && ..."
4166 },
4167 "expression" : {
4168 "type" : "expression",
4169 "value" : {
4170 "op" : "and",
4171 "left" : {
4172 "type" : "expression",
4173 "value" : {
4174 "op" : "==",
4175 "left" : {
4176 "type" : "expression",
4177 "value" : {
4178 "op" : "d2b",
4179 "left" : null,
4180 "right" : {
4181 "type" : "field",
4182 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4183 }
4184 }
4185 },
4186 "right" : {
4187 "type" : "bool",
4188 "value" : true
4189 }
4190 }
4191 },
4192 "right" : {
4193 "type" : "expression",
4194 "value" : {
4195 "op" : "==",
4196 "left" : {
4197 "type" : "expression",
4198 "value" : {
4199 "op" : "d2b",
4200 "left" : null,
4201 "right" : {
4202 "type" : "field",
4203 "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
4204 }
4205 }
4206 },
4207 "right" : {
4208 "type" : "bool",
4209 "value" : false
4210 }
4211 }
4212 }
4213 }
4214 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004215 "true_next" : "tbl_act_4",
4216 "false_next" : "tbl_act_5"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004217 },
4218 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004219 "name" : "node_34",
4220 "id" : 13,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004221 "source_info" : {
4222 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004223 "line" : 306,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004224 "column" : 12,
4225 "source_fragment" : "fabric_metadata.is_multicast == true ..."
4226 },
4227 "expression" : {
4228 "type" : "expression",
4229 "value" : {
4230 "op" : "and",
4231 "left" : {
4232 "type" : "expression",
4233 "value" : {
4234 "op" : "==",
4235 "left" : {
4236 "type" : "expression",
4237 "value" : {
4238 "op" : "d2b",
4239 "left" : null,
4240 "right" : {
4241 "type" : "field",
4242 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4243 }
4244 }
4245 },
4246 "right" : {
4247 "type" : "bool",
4248 "value" : true
4249 }
4250 }
4251 },
4252 "right" : {
4253 "type" : "expression",
4254 "value" : {
4255 "op" : "==",
4256 "left" : {
4257 "type" : "field",
4258 "value" : ["standard_metadata", "ingress_port"]
4259 },
4260 "right" : {
4261 "type" : "field",
4262 "value" : ["standard_metadata", "egress_port"]
4263 }
4264 }
4265 }
4266 }
4267 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004268 "true_next" : "tbl_act_6",
4269 "false_next" : "node_36"
4270 },
4271 {
4272 "name" : "node_36",
4273 "id" : 14,
4274 "source_info" : {
4275 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004276 "line" : 311,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004277 "column" : 12,
4278 "source_fragment" : "fabric_metadata.mpls_label == 0"
4279 },
4280 "expression" : {
4281 "type" : "expression",
4282 "value" : {
4283 "op" : "==",
4284 "left" : {
4285 "type" : "field",
4286 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
4287 },
4288 "right" : {
4289 "type" : "hexstr",
4290 "value" : "0x000000"
4291 }
4292 }
4293 },
4294 "true_next" : "node_37",
4295 "false_next" : "tbl_egress_next_set_mpls"
4296 },
4297 {
4298 "name" : "node_37",
4299 "id" : 15,
4300 "source_info" : {
4301 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004302 "line" : 312,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004303 "column" : 16,
4304 "source_fragment" : "hdr.mpls.isValid()"
4305 },
4306 "expression" : {
4307 "type" : "expression",
4308 "value" : {
4309 "op" : "d2b",
4310 "left" : null,
4311 "right" : {
4312 "type" : "field",
4313 "value" : ["mpls", "$valid$"]
4314 }
4315 }
4316 },
4317 "true_next" : "tbl_egress_next_pop_mpls_if_present",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004318 "false_next" : "FabricEgress.egress_next.egress_vlan"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004319 },
4320 {
4321 "name" : "node_43",
4322 "id" : 16,
4323 "source_info" : {
4324 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004325 "line" : 317,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004326 "column" : 12,
4327 "source_fragment" : "!egress_vlan.apply().hit"
4328 },
4329 "expression" : {
4330 "type" : "expression",
4331 "value" : {
4332 "op" : "not",
4333 "left" : null,
4334 "right" : {
4335 "type" : "expression",
4336 "value" : {
4337 "op" : "d2b",
4338 "left" : null,
4339 "right" : {
4340 "type" : "field",
4341 "value" : ["scalars", "egress_next_tmp"]
4342 }
4343 }
4344 }
4345 }
4346 },
4347 "true_next" : "node_44",
4348 "false_next" : "node_46"
4349 },
4350 {
4351 "name" : "node_44",
4352 "id" : 17,
4353 "source_info" : {
4354 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004355 "line" : 319,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004356 "column" : 16,
4357 "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
4358 },
4359 "expression" : {
4360 "type" : "expression",
4361 "value" : {
4362 "op" : "!=",
4363 "left" : {
4364 "type" : "field",
4365 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
4366 },
4367 "right" : {
4368 "type" : "hexstr",
4369 "value" : "0x0ffe"
4370 }
4371 }
4372 },
4373 "true_next" : "tbl_egress_next_push_vlan",
4374 "false_next" : "node_46"
4375 },
4376 {
4377 "name" : "node_46",
4378 "id" : 18,
4379 "source_info" : {
4380 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004381 "line" : 325,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004382 "column" : 12,
4383 "source_fragment" : "hdr.mpls.isValid()"
4384 },
4385 "expression" : {
4386 "type" : "expression",
4387 "value" : {
4388 "op" : "d2b",
4389 "left" : null,
4390 "right" : {
4391 "type" : "field",
4392 "value" : ["mpls", "$valid$"]
4393 }
4394 }
4395 },
4396 "true_next" : "tbl_act_9",
4397 "false_next" : "node_50"
4398 },
4399 {
4400 "name" : "node_48",
4401 "id" : 19,
4402 "source_info" : {
4403 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004404 "line" : 327,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004405 "column" : 16,
4406 "source_fragment" : "hdr.mpls.ttl == 0"
4407 },
4408 "expression" : {
4409 "type" : "expression",
4410 "value" : {
4411 "op" : "==",
4412 "left" : {
4413 "type" : "field",
4414 "value" : ["mpls", "ttl"]
4415 },
4416 "right" : {
4417 "type" : "hexstr",
4418 "value" : "0x00"
4419 }
4420 }
4421 },
4422 "false_next" : null,
4423 "true_next" : "tbl_act_10"
4424 },
4425 {
4426 "name" : "node_50",
4427 "id" : 20,
4428 "source_info" : {
4429 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004430 "line" : 329,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004431 "column" : 15,
4432 "source_fragment" : "hdr.ipv4.isValid()"
4433 },
4434 "expression" : {
4435 "type" : "expression",
4436 "value" : {
4437 "op" : "d2b",
4438 "left" : null,
4439 "right" : {
4440 "type" : "field",
4441 "value" : ["ipv4", "$valid$"]
4442 }
4443 }
4444 },
4445 "false_next" : null,
4446 "true_next" : "tbl_act_11"
4447 },
4448 {
4449 "name" : "node_52",
4450 "id" : 21,
4451 "source_info" : {
4452 "filename" : "include/control/next.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004453 "line" : 331,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004454 "column" : 20,
4455 "source_fragment" : "hdr.ipv4.ttl == 0"
4456 },
4457 "expression" : {
4458 "type" : "expression",
4459 "value" : {
4460 "op" : "==",
4461 "left" : {
4462 "type" : "field",
4463 "value" : ["ipv4", "ttl"]
4464 },
4465 "right" : {
4466 "type" : "hexstr",
4467 "value" : "0x00"
4468 }
4469 }
4470 },
4471 "false_next" : null,
4472 "true_next" : "tbl_act_12"
Yi Tsengbe342052017-11-03 10:21:23 -07004473 }
4474 ]
4475 }
4476 ],
4477 "checksums" : [
4478 {
4479 "name" : "cksum",
4480 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004481 "source_info" : {
4482 "filename" : "include/checksum.p4",
4483 "line" : 28,
4484 "column" : 8,
4485 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
4486 },
Yi Tsengbe342052017-11-03 10:21:23 -07004487 "target" : ["ipv4", "hdr_checksum"],
4488 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004489 "calculation" : "calc",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004490 "verify" : false,
4491 "update" : true,
Yi Tsengbd46d052018-01-22 17:18:16 -08004492 "if_cond" : {
4493 "type" : "expression",
4494 "value" : {
4495 "op" : "d2b",
4496 "left" : null,
4497 "right" : {
4498 "type" : "field",
4499 "value" : ["ipv4", "$valid$"]
4500 }
4501 }
4502 }
Yi Tsengbe342052017-11-03 10:21:23 -07004503 },
4504 {
4505 "name" : "cksum_0",
4506 "id" : 1,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004507 "source_info" : {
4508 "filename" : "include/checksum.p4",
4509 "line" : 57,
4510 "column" : 8,
4511 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
4512 },
Yi Tsengbe342052017-11-03 10:21:23 -07004513 "target" : ["ipv4", "hdr_checksum"],
4514 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004515 "calculation" : "calc_0",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004516 "verify" : true,
4517 "update" : false,
Yi Tsengbd46d052018-01-22 17:18:16 -08004518 "if_cond" : {
4519 "type" : "expression",
4520 "value" : {
4521 "op" : "d2b",
4522 "left" : null,
4523 "right" : {
4524 "type" : "field",
4525 "value" : ["ipv4", "$valid$"]
4526 }
4527 }
4528 }
Yi Tsengbe342052017-11-03 10:21:23 -07004529 }
4530 ],
4531 "force_arith" : [],
4532 "extern_instances" : [],
4533 "field_aliases" : [
4534 [
4535 "queueing_metadata.enq_timestamp",
4536 ["standard_metadata", "enq_timestamp"]
4537 ],
4538 [
4539 "queueing_metadata.enq_qdepth",
4540 ["standard_metadata", "enq_qdepth"]
4541 ],
4542 [
4543 "queueing_metadata.deq_timedelta",
4544 ["standard_metadata", "deq_timedelta"]
4545 ],
4546 [
4547 "queueing_metadata.deq_qdepth",
4548 ["standard_metadata", "deq_qdepth"]
4549 ],
4550 [
4551 "intrinsic_metadata.ingress_global_timestamp",
4552 ["standard_metadata", "ingress_global_timestamp"]
4553 ],
4554 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08004555 "intrinsic_metadata.egress_global_timestamp",
4556 ["standard_metadata", "egress_global_timestamp"]
4557 ],
4558 [
Yi Tsengbe342052017-11-03 10:21:23 -07004559 "intrinsic_metadata.lf_field_list",
4560 ["standard_metadata", "lf_field_list"]
4561 ],
4562 [
4563 "intrinsic_metadata.mcast_grp",
4564 ["standard_metadata", "mcast_grp"]
4565 ],
4566 [
4567 "intrinsic_metadata.resubmit_flag",
4568 ["standard_metadata", "resubmit_flag"]
4569 ],
4570 [
4571 "intrinsic_metadata.egress_rid",
4572 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08004573 ],
4574 [
4575 "intrinsic_metadata.recirculate_flag",
4576 ["standard_metadata", "recirculate_flag"]
Yi Tsengbe342052017-11-03 10:21:23 -07004577 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02004578 ],
4579 "program" : "fabric.p4",
4580 "__meta__" : {
4581 "version" : [2, 18],
4582 "compiler" : "https://github.com/p4lang/p4c"
4583 }
Carmelo Cascone25243d62019-02-21 15:37:31 -08004584}