blob: 8aad592859a1eac7d6cbd43f970da56350e876c5 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tsengbe342052017-11-03 10:21:23 -07002 "header_types" : [
3 {
4 "name" : "scalars_0",
5 "id" : 0,
6 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -08007 ["tmp", 4, false],
8 ["tmp_0", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -07009 ["tmp_1", 32, false],
Yi Tseng1d842672017-11-28 16:06:52 -080010 ["next_tmp_0", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070011 ["fabric_metadata_t.fwd_type", 3, false],
12 ["fabric_metadata_t.next_id", 32, false],
Yi Tseng20f9e7b2018-05-24 23:27:39 +080013 ["fabric_metadata_t.pop_vlan_when_packet_in", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070014 ["fabric_metadata_t.ip_proto", 8, false],
15 ["fabric_metadata_t.l4_src_port", 16, false],
Yi Tsengf55eaa82017-11-29 15:51:28 -080016 ["fabric_metadata_t.l4_dst_port", 16, false],
Yi Tseng1d842672017-11-28 16:06:52 -080017 ["fabric_metadata_t.original_ether_type", 16, false],
Yi Tsengc6844f52017-12-19 11:58:25 -080018 ["_padding_0", 7, false]
19 ]
20 },
21 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +020022 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -080023 "id" : 1,
24 "fields" : [
Carmelo Cascone6af4e172018-06-15 16:01:30 +020025 ["ingress_port", 9, false],
26 ["egress_spec", 9, false],
27 ["egress_port", 9, false],
28 ["clone_spec", 32, false],
29 ["instance_type", 32, false],
30 ["drop", 1, false],
31 ["recirculate_port", 16, false],
32 ["packet_length", 32, false],
33 ["enq_timestamp", 32, false],
34 ["enq_qdepth", 19, false],
35 ["deq_timedelta", 32, false],
36 ["deq_qdepth", 19, false],
37 ["ingress_global_timestamp", 48, false],
38 ["egress_global_timestamp", 48, false],
39 ["lf_field_list", 32, false],
40 ["mcast_grp", 16, false],
41 ["resubmit_flag", 32, false],
42 ["egress_rid", 16, false],
43 ["checksum_error", 1, false],
44 ["recirculate_flag", 32, false],
45 ["_padding", 5, false]
46 ]
47 },
48 {
49 "name" : "ethernet_t",
50 "id" : 2,
51 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080052 ["dst_addr", 48, false],
53 ["src_addr", 48, false],
54 ["ether_type", 16, false]
55 ]
56 },
57 {
58 "name" : "vlan_tag_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020059 "id" : 3,
Yi Tsengc6844f52017-12-19 11:58:25 -080060 "fields" : [
61 ["pri", 3, false],
62 ["cfi", 1, false],
63 ["vlan_id", 12, false],
64 ["ether_type", 16, false]
65 ]
66 },
67 {
68 "name" : "mpls_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020069 "id" : 4,
Yi Tsengc6844f52017-12-19 11:58:25 -080070 "fields" : [
71 ["label", 20, false],
72 ["tc", 3, false],
73 ["bos", 1, false],
74 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070075 ]
76 },
77 {
78 "name" : "ipv4_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020079 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -070080 "fields" : [
81 ["version", 4, false],
82 ["ihl", 4, false],
83 ["diffserv", 8, false],
84 ["total_len", 16, false],
85 ["identification", 16, false],
86 ["flags", 3, false],
87 ["frag_offset", 13, false],
88 ["ttl", 8, false],
89 ["protocol", 8, false],
90 ["hdr_checksum", 16, false],
91 ["src_addr", 32, false],
92 ["dst_addr", 32, false]
93 ]
94 },
95 {
Yi Tseng27b9bc02018-04-12 14:52:40 +080096 "name" : "arp_t",
97 "id" : 6,
98 "fields" : [
Yi Tsengbe342052017-11-03 10:21:23 -070099 ["hw_type", 16, false],
100 ["proto_type", 16, false],
101 ["hw_addr_len", 8, false],
102 ["proto_addr_len", 8, false],
103 ["opcode", 16, false]
104 ]
105 },
106 {
107 "name" : "tcp_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800108 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700109 "fields" : [
110 ["src_port", 16, false],
111 ["dst_port", 16, false],
112 ["seq_no", 32, false],
113 ["ack_no", 32, false],
114 ["data_offset", 4, false],
115 ["res", 3, false],
116 ["ecn", 3, false],
117 ["ctrl", 6, false],
118 ["window", 16, false],
119 ["checksum", 16, false],
120 ["urgent_ptr", 16, false]
121 ]
122 },
123 {
124 "name" : "udp_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800125 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700126 "fields" : [
127 ["src_port", 16, false],
128 ["dst_port", 16, false],
129 ["len", 16, false],
130 ["checksum", 16, false]
131 ]
132 },
133 {
134 "name" : "icmp_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800135 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700136 "fields" : [
137 ["icmp_type", 8, false],
138 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800139 ["checksum", 16, false],
140 ["identifier", 16, false],
141 ["sequence_number", 16, false],
142 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700143 ]
144 },
145 {
146 "name" : "packet_out_header_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800147 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700148 "fields" : [
149 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800150 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700151 ]
152 },
153 {
154 "name" : "packet_in_header_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800155 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700156 "fields" : [
157 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800158 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700159 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700160 }
161 ],
162 "headers" : [
163 {
Yi Tsengbe342052017-11-03 10:21:23 -0700164 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800165 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700166 "header_type" : "scalars_0",
167 "metadata" : true,
168 "pi_omit" : true
169 },
170 {
171 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800172 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700173 "header_type" : "standard_metadata",
174 "metadata" : true,
175 "pi_omit" : true
176 },
177 {
178 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800179 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700180 "header_type" : "ethernet_t",
181 "metadata" : false,
182 "pi_omit" : true
183 },
184 {
185 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800186 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700187 "header_type" : "vlan_tag_t",
188 "metadata" : false,
189 "pi_omit" : true
190 },
191 {
Yi Tsengbe342052017-11-03 10:21:23 -0700192 "name" : "mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800193 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700194 "header_type" : "mpls_t",
195 "metadata" : false,
196 "pi_omit" : true
197 },
198 {
199 "name" : "ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800200 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700201 "header_type" : "ipv4_t",
202 "metadata" : false,
203 "pi_omit" : true
204 },
205 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800206 "name" : "arp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200207 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700208 "header_type" : "arp_t",
209 "metadata" : false,
210 "pi_omit" : true
211 },
212 {
213 "name" : "tcp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200214 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700215 "header_type" : "tcp_t",
216 "metadata" : false,
217 "pi_omit" : true
218 },
219 {
220 "name" : "udp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200221 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700222 "header_type" : "udp_t",
223 "metadata" : false,
224 "pi_omit" : true
225 },
226 {
227 "name" : "icmp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200228 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700229 "header_type" : "icmp_t",
230 "metadata" : false,
231 "pi_omit" : true
232 },
233 {
234 "name" : "packet_out",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200235 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700236 "header_type" : "packet_out_header_t",
237 "metadata" : false,
238 "pi_omit" : true
239 },
240 {
241 "name" : "packet_in",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200242 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700243 "header_type" : "packet_in_header_t",
244 "metadata" : false,
245 "pi_omit" : true
246 }
247 ],
248 "header_stacks" : [],
249 "header_union_types" : [],
250 "header_unions" : [],
251 "header_union_stacks" : [],
252 "field_lists" : [],
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200253 "errors" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700254 "enums" : [],
255 "parsers" : [
256 {
257 "name" : "parser",
258 "id" : 0,
259 "init_state" : "start",
260 "parse_states" : [
261 {
262 "name" : "start",
263 "id" : 0,
264 "parser_ops" : [],
265 "transitions" : [
266 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800267 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700268 "value" : "0x00ff",
269 "mask" : null,
270 "next_state" : "parse_packet_out"
271 },
272 {
273 "value" : "default",
274 "mask" : null,
275 "next_state" : "parse_ethernet"
276 }
277 ],
278 "transition_key" : [
279 {
280 "type" : "field",
281 "value" : ["standard_metadata", "ingress_port"]
282 }
283 ]
284 },
285 {
286 "name" : "parse_packet_out",
287 "id" : 1,
288 "parser_ops" : [
289 {
290 "parameters" : [
291 {
292 "type" : "regular",
293 "value" : "packet_out"
294 }
295 ],
296 "op" : "extract"
297 }
298 ],
299 "transitions" : [
300 {
301 "value" : "default",
302 "mask" : null,
303 "next_state" : "parse_ethernet"
304 }
305 ],
306 "transition_key" : []
307 },
308 {
309 "name" : "parse_ethernet",
310 "id" : 2,
311 "parser_ops" : [
312 {
313 "parameters" : [
314 {
315 "type" : "regular",
316 "value" : "ethernet"
317 }
318 ],
319 "op" : "extract"
Yi Tseng1d842672017-11-28 16:06:52 -0800320 },
321 {
322 "parameters" : [
323 {
324 "type" : "field",
325 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
326 },
327 {
328 "type" : "field",
329 "value" : ["ethernet", "ether_type"]
330 }
331 ],
332 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700333 }
334 ],
335 "transitions" : [
336 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800337 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700338 "value" : "0x8100",
339 "mask" : null,
340 "next_state" : "parse_vlan_tag"
341 },
342 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800343 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700344 "value" : "0x8847",
345 "mask" : null,
346 "next_state" : "parse_mpls"
347 },
348 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800349 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700350 "value" : "0x0806",
351 "mask" : null,
352 "next_state" : "parse_arp"
353 },
354 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800355 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700356 "value" : "0x0800",
357 "mask" : null,
358 "next_state" : "parse_ipv4"
359 },
360 {
Yi Tsengbe342052017-11-03 10:21:23 -0700361 "value" : "default",
362 "mask" : null,
363 "next_state" : null
364 }
365 ],
366 "transition_key" : [
367 {
368 "type" : "field",
369 "value" : ["ethernet", "ether_type"]
370 }
371 ]
372 },
373 {
374 "name" : "parse_vlan_tag",
375 "id" : 3,
376 "parser_ops" : [
377 {
378 "parameters" : [
379 {
380 "type" : "regular",
381 "value" : "vlan_tag"
382 }
383 ],
384 "op" : "extract"
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800385 },
386 {
387 "parameters" : [
388 {
389 "type" : "field",
390 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
391 },
392 {
393 "type" : "field",
394 "value" : ["vlan_tag", "ether_type"]
395 }
396 ],
397 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700398 }
399 ],
400 "transitions" : [
401 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800402 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700403 "value" : "0x0806",
404 "mask" : null,
405 "next_state" : "parse_arp"
406 },
407 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800408 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700409 "value" : "0x0800",
410 "mask" : null,
411 "next_state" : "parse_ipv4"
412 },
413 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800414 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800415 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700416 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800417 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700418 },
419 {
420 "value" : "default",
421 "mask" : null,
422 "next_state" : null
423 }
424 ],
425 "transition_key" : [
426 {
427 "type" : "field",
428 "value" : ["vlan_tag", "ether_type"]
429 }
430 ]
431 },
432 {
433 "name" : "parse_mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800434 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700435 "parser_ops" : [
436 {
437 "parameters" : [
438 {
439 "type" : "regular",
440 "value" : "mpls"
441 }
442 ],
443 "op" : "extract"
444 },
445 {
446 "parameters" : [
447 {
448 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800449 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700450 },
451 {
452 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800453 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700454 }
455 ],
456 "op" : "set"
457 }
458 ],
459 "transitions" : [
460 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800461 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700462 "value" : "0x04",
463 "mask" : null,
464 "next_state" : "parse_ipv4"
465 },
466 {
Yi Tsengbe342052017-11-03 10:21:23 -0700467 "value" : "default",
468 "mask" : null,
469 "next_state" : "parse_ethernet"
470 }
471 ],
472 "transition_key" : [
473 {
474 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800475 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700476 }
477 ]
478 },
479 {
480 "name" : "parse_ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800481 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700482 "parser_ops" : [
483 {
484 "parameters" : [
485 {
486 "type" : "regular",
487 "value" : "ipv4"
488 }
489 ],
490 "op" : "extract"
491 },
492 {
493 "parameters" : [
494 {
495 "type" : "field",
496 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
497 },
498 {
499 "type" : "field",
500 "value" : ["ipv4", "protocol"]
501 }
502 ],
503 "op" : "set"
504 }
505 ],
506 "transitions" : [
507 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800508 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700509 "value" : "0x06",
510 "mask" : null,
511 "next_state" : "parse_tcp"
512 },
513 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800514 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700515 "value" : "0x11",
516 "mask" : null,
517 "next_state" : "parse_udp"
518 },
519 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800520 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700521 "value" : "0x01",
522 "mask" : null,
523 "next_state" : "parse_icmp"
524 },
525 {
526 "value" : "default",
527 "mask" : null,
528 "next_state" : null
529 }
530 ],
531 "transition_key" : [
532 {
533 "type" : "field",
534 "value" : ["ipv4", "protocol"]
535 }
536 ]
537 },
538 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800539 "name" : "parse_arp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200540 "id" : 6,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800541 "parser_ops" : [
542 {
543 "parameters" : [
544 {
545 "type" : "regular",
Yi Tsengbe342052017-11-03 10:21:23 -0700546 "value" : "arp"
547 }
548 ],
549 "op" : "extract"
550 }
551 ],
552 "transitions" : [
553 {
554 "value" : "default",
555 "mask" : null,
556 "next_state" : null
557 }
558 ],
559 "transition_key" : []
560 },
561 {
562 "name" : "parse_tcp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200563 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700564 "parser_ops" : [
565 {
566 "parameters" : [
567 {
568 "type" : "regular",
569 "value" : "tcp"
570 }
571 ],
572 "op" : "extract"
573 },
574 {
575 "parameters" : [
576 {
577 "type" : "field",
578 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
579 },
580 {
581 "type" : "field",
582 "value" : ["tcp", "src_port"]
583 }
584 ],
585 "op" : "set"
586 },
587 {
588 "parameters" : [
589 {
590 "type" : "field",
591 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
592 },
593 {
594 "type" : "field",
595 "value" : ["tcp", "dst_port"]
596 }
597 ],
598 "op" : "set"
599 }
600 ],
601 "transitions" : [
602 {
603 "value" : "default",
604 "mask" : null,
605 "next_state" : null
606 }
607 ],
608 "transition_key" : []
609 },
610 {
611 "name" : "parse_udp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200612 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700613 "parser_ops" : [
614 {
615 "parameters" : [
616 {
617 "type" : "regular",
618 "value" : "udp"
619 }
620 ],
621 "op" : "extract"
622 },
623 {
624 "parameters" : [
625 {
626 "type" : "field",
627 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
628 },
629 {
630 "type" : "field",
631 "value" : ["udp", "src_port"]
632 }
633 ],
634 "op" : "set"
635 },
636 {
637 "parameters" : [
638 {
639 "type" : "field",
640 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
641 },
642 {
643 "type" : "field",
644 "value" : ["udp", "dst_port"]
645 }
646 ],
647 "op" : "set"
648 }
649 ],
650 "transitions" : [
651 {
652 "value" : "default",
653 "mask" : null,
654 "next_state" : null
655 }
656 ],
657 "transition_key" : []
658 },
659 {
660 "name" : "parse_icmp",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200661 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700662 "parser_ops" : [
663 {
664 "parameters" : [
665 {
666 "type" : "regular",
667 "value" : "icmp"
668 }
669 ],
670 "op" : "extract"
671 }
672 ],
673 "transitions" : [
674 {
675 "value" : "default",
676 "mask" : null,
677 "next_state" : null
678 }
679 ],
680 "transition_key" : []
681 }
682 ]
683 }
684 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800685 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700686 "deparsers" : [
687 {
688 "name" : "deparser",
689 "id" : 0,
690 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200691 "filename" : "include/parser.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800692 "line" : 165,
Yi Tsengbe342052017-11-03 10:21:23 -0700693 "column" : 8,
694 "source_fragment" : "FabricDeparser"
695 },
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200696 "order" : ["packet_in", "ethernet", "vlan_tag", "mpls", "arp", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700697 }
698 ],
699 "meter_arrays" : [],
700 "counter_arrays" : [
701 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800702 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800703 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800704 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800705 "binding" : "FabricIngress.filtering.ingress_port_vlan"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800706 },
707 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800708 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800709 "id" : 1,
710 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800711 "binding" : "FabricIngress.filtering.fwd_classifier"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800712 },
713 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800714 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800715 "id" : 2,
716 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800717 "binding" : "FabricIngress.forwarding.bridging"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800718 },
719 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800720 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800721 "id" : 3,
722 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800723 "binding" : "FabricIngress.forwarding.mpls"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800724 },
725 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800726 "name" : "FabricIngress.forwarding.unicast_v4_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800727 "id" : 4,
728 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800729 "binding" : "FabricIngress.forwarding.unicast_v4"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800730 },
731 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800732 "name" : "FabricIngress.forwarding.acl_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800733 "id" : 5,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800734 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800735 "binding" : "FabricIngress.forwarding.acl"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800736 },
737 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800738 "name" : "FabricIngress.next.vlan_meta_counter",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200739 "id" : 6,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800740 "is_direct" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800741 "binding" : "FabricIngress.next.vlan_meta"
742 },
743 {
744 "name" : "FabricIngress.next.simple_counter",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200745 "id" : 7,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800746 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800747 "binding" : "FabricIngress.next.simple"
748 },
749 {
750 "name" : "FabricIngress.next.hashed_counter",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200751 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800752 "is_direct" : true,
753 "binding" : "FabricIngress.next.hashed"
754 },
755 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800756 "name" : "FabricIngress.port_counters_control.egress_port_counter",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200757 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700758 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200759 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700760 "line" : 23,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800761 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700762 "source_fragment" : "egress_port_counter"
763 },
764 "size" : 511,
765 "is_direct" : false
766 },
767 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800768 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200769 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700770 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200771 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700772 "line" : 24,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800773 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700774 "source_fragment" : "ingress_port_counter"
775 },
776 "size" : 511,
777 "is_direct" : false
778 }
779 ],
780 "register_arrays" : [],
781 "calculations" : [
782 {
783 "name" : "calc",
784 "id" : 0,
785 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200786 "filename" : "include/checksum.p4",
787 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700788 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200789 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700790 },
791 "algo" : "csum16",
792 "input" : [
793 {
794 "type" : "field",
795 "value" : ["ipv4", "version"]
796 },
797 {
798 "type" : "field",
799 "value" : ["ipv4", "ihl"]
800 },
801 {
802 "type" : "field",
803 "value" : ["ipv4", "diffserv"]
804 },
805 {
806 "type" : "field",
807 "value" : ["ipv4", "total_len"]
808 },
809 {
810 "type" : "field",
811 "value" : ["ipv4", "identification"]
812 },
813 {
814 "type" : "field",
815 "value" : ["ipv4", "flags"]
816 },
817 {
818 "type" : "field",
819 "value" : ["ipv4", "frag_offset"]
820 },
821 {
822 "type" : "field",
823 "value" : ["ipv4", "ttl"]
824 },
825 {
826 "type" : "field",
827 "value" : ["ipv4", "protocol"]
828 },
829 {
830 "type" : "field",
831 "value" : ["ipv4", "src_addr"]
832 },
833 {
834 "type" : "field",
835 "value" : ["ipv4", "dst_addr"]
836 }
837 ]
838 },
839 {
840 "name" : "calc_0",
841 "id" : 1,
842 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200843 "filename" : "include/checksum.p4",
844 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -0700845 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200846 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700847 },
848 "algo" : "csum16",
849 "input" : [
850 {
851 "type" : "field",
852 "value" : ["ipv4", "version"]
853 },
854 {
855 "type" : "field",
856 "value" : ["ipv4", "ihl"]
857 },
858 {
859 "type" : "field",
860 "value" : ["ipv4", "diffserv"]
861 },
862 {
863 "type" : "field",
864 "value" : ["ipv4", "total_len"]
865 },
866 {
867 "type" : "field",
868 "value" : ["ipv4", "identification"]
869 },
870 {
871 "type" : "field",
872 "value" : ["ipv4", "flags"]
873 },
874 {
875 "type" : "field",
876 "value" : ["ipv4", "frag_offset"]
877 },
878 {
879 "type" : "field",
880 "value" : ["ipv4", "ttl"]
881 },
882 {
883 "type" : "field",
884 "value" : ["ipv4", "protocol"]
885 },
886 {
887 "type" : "field",
888 "value" : ["ipv4", "src_addr"]
889 },
890 {
891 "type" : "field",
892 "value" : ["ipv4", "dst_addr"]
893 }
894 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700895 }
896 ],
897 "learn_lists" : [],
898 "actions" : [
899 {
900 "name" : "nop",
901 "id" : 0,
902 "runtime_data" : [],
903 "primitives" : []
904 },
905 {
906 "name" : "nop",
907 "id" : 1,
908 "runtime_data" : [],
909 "primitives" : []
910 },
911 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800912 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -0700913 "id" : 2,
914 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800915 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700916 },
917 {
Yi Tseng1d842672017-11-28 16:06:52 -0800918 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700919 "id" : 3,
920 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800921 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700922 },
923 {
924 "name" : "NoAction",
925 "id" : 4,
926 "runtime_data" : [],
927 "primitives" : []
928 },
929 {
930 "name" : "NoAction",
931 "id" : 5,
932 "runtime_data" : [],
933 "primitives" : []
934 },
935 {
936 "name" : "NoAction",
937 "id" : 6,
938 "runtime_data" : [],
939 "primitives" : []
940 },
941 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800942 "name" : "NoAction",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800943 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700944 "runtime_data" : [],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800945 "primitives" : []
946 },
947 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800948 "name" : "FabricIngress.filtering.drop",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200949 "id" : 8,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800950 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800951 "primitives" : [
952 {
953 "op" : "drop",
954 "parameters" : [],
955 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200956 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800957 "line" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -0800958 "column" : 8,
959 "source_fragment" : "mark_to_drop()"
960 }
961 }
962 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700963 },
964 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800965 "name" : "FabricIngress.filtering.set_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200966 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700967 "runtime_data" : [
968 {
969 "name" : "new_vlan_id",
970 "bitwidth" : 12
971 }
972 ],
973 "primitives" : [
974 {
975 "op" : "assign",
976 "parameters" : [
977 {
978 "type" : "field",
979 "value" : ["vlan_tag", "vlan_id"]
980 },
981 {
982 "type" : "runtime_data",
983 "value" : 0
984 }
985 ],
986 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200987 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800988 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -0700989 "column" : 8,
990 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
991 }
992 }
993 ]
994 },
995 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800996 "name" : "FabricIngress.filtering.push_internal_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200997 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700998 "runtime_data" : [
999 {
1000 "name" : "new_vlan_id",
1001 "bitwidth" : 12
1002 }
1003 ],
1004 "primitives" : [
1005 {
1006 "op" : "add_header",
1007 "parameters" : [
1008 {
1009 "type" : "header",
1010 "value" : "vlan_tag"
1011 }
1012 ],
1013 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001014 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001015 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001016 "column" : 8,
1017 "source_fragment" : "hdr.vlan_tag.setValid()"
1018 }
1019 },
1020 {
1021 "op" : "assign",
1022 "parameters" : [
1023 {
1024 "type" : "field",
1025 "value" : ["vlan_tag", "cfi"]
1026 },
1027 {
1028 "type" : "hexstr",
1029 "value" : "0x00"
1030 }
1031 ],
1032 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001033 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001034 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001035 "column" : 8,
1036 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1037 }
1038 },
1039 {
1040 "op" : "assign",
1041 "parameters" : [
1042 {
1043 "type" : "field",
1044 "value" : ["vlan_tag", "pri"]
1045 },
1046 {
1047 "type" : "hexstr",
1048 "value" : "0x00"
1049 }
1050 ],
1051 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001052 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001053 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001054 "column" : 8,
1055 "source_fragment" : "hdr.vlan_tag.pri = 0"
1056 }
1057 },
1058 {
1059 "op" : "assign",
1060 "parameters" : [
1061 {
1062 "type" : "field",
1063 "value" : ["vlan_tag", "ether_type"]
1064 },
1065 {
Yi Tseng1d842672017-11-28 16:06:52 -08001066 "type" : "field",
1067 "value" : ["ethernet", "ether_type"]
1068 }
1069 ],
1070 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001071 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001072 "line" : 44,
Yi Tseng1d842672017-11-28 16:06:52 -08001073 "column" : 8,
1074 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1075 }
1076 },
1077 {
1078 "op" : "assign",
1079 "parameters" : [
1080 {
1081 "type" : "field",
1082 "value" : ["ethernet", "ether_type"]
1083 },
1084 {
Yi Tsengbe342052017-11-03 10:21:23 -07001085 "type" : "hexstr",
1086 "value" : "0x8100"
1087 }
1088 ],
1089 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001090 "filename" : "include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001091 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001092 "column" : 31,
1093 "source_fragment" : "0x8100; ..."
1094 }
1095 },
1096 {
1097 "op" : "assign",
1098 "parameters" : [
1099 {
1100 "type" : "field",
1101 "value" : ["vlan_tag", "vlan_id"]
1102 },
1103 {
1104 "type" : "runtime_data",
1105 "value" : 0
1106 }
1107 ],
1108 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001109 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001110 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001111 "column" : 8,
1112 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1113 }
1114 },
1115 {
1116 "op" : "assign",
1117 "parameters" : [
1118 {
1119 "type" : "field",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001120 "value" : ["scalars", "fabric_metadata_t.pop_vlan_when_packet_in"]
Yi Tsengbe342052017-11-03 10:21:23 -07001121 },
1122 {
1123 "type" : "expression",
1124 "value" : {
1125 "type" : "expression",
1126 "value" : {
1127 "op" : "b2d",
1128 "left" : null,
1129 "right" : {
1130 "type" : "bool",
1131 "value" : true
1132 }
1133 }
1134 }
1135 }
1136 ],
1137 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001138 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001139 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001140 "column" : 8,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001141 "source_fragment" : "fabric_metadata.pop_vlan_when_packet_in = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001142 }
1143 }
1144 ]
1145 },
1146 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001147 "name" : "FabricIngress.filtering.set_forwarding_type",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001148 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07001149 "runtime_data" : [
1150 {
1151 "name" : "fwd_type",
1152 "bitwidth" : 3
1153 }
1154 ],
1155 "primitives" : [
1156 {
1157 "op" : "assign",
1158 "parameters" : [
1159 {
1160 "type" : "field",
1161 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1162 },
1163 {
1164 "type" : "runtime_data",
1165 "value" : 0
1166 }
1167 ],
1168 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001169 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001170 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07001171 "column" : 8,
1172 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1173 }
1174 }
1175 ]
1176 },
1177 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001178 "name" : "FabricIngress.forwarding.drop",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001179 "id" : 12,
Yi Tseng1d842672017-11-28 16:06:52 -08001180 "runtime_data" : [],
1181 "primitives" : [
1182 {
1183 "op" : "drop",
1184 "parameters" : [],
1185 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001186 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001187 "line" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08001188 "column" : 8,
1189 "source_fragment" : "mark_to_drop()"
1190 }
1191 }
1192 ]
1193 },
1194 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001195 "name" : "FabricIngress.forwarding.set_next_id",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001196 "id" : 13,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001197 "runtime_data" : [
1198 {
1199 "name" : "next_id",
1200 "bitwidth" : 32
1201 }
1202 ],
1203 "primitives" : [
1204 {
1205 "op" : "assign",
1206 "parameters" : [
1207 {
1208 "type" : "field",
1209 "value" : ["scalars", "fabric_metadata_t.next_id"]
1210 },
1211 {
1212 "type" : "runtime_data",
1213 "value" : 0
1214 }
1215 ],
1216 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001217 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001218 "line" : 40,
1219 "column" : 8,
1220 "source_fragment" : "fabric_metadata.next_id = next_id"
1221 }
1222 }
1223 ]
1224 },
1225 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001226 "name" : "FabricIngress.forwarding.set_next_id",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001227 "id" : 14,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001228 "runtime_data" : [
1229 {
1230 "name" : "next_id",
1231 "bitwidth" : 32
1232 }
1233 ],
1234 "primitives" : [
1235 {
1236 "op" : "assign",
1237 "parameters" : [
1238 {
1239 "type" : "field",
1240 "value" : ["scalars", "fabric_metadata_t.next_id"]
1241 },
1242 {
1243 "type" : "runtime_data",
1244 "value" : 0
1245 }
1246 ],
1247 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001248 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001249 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001250 "column" : 8,
1251 "source_fragment" : "fabric_metadata.next_id = next_id"
1252 }
1253 }
1254 ]
1255 },
1256 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001257 "name" : "FabricIngress.forwarding.set_next_id",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001258 "id" : 15,
Yi Tseng27b9bc02018-04-12 14:52:40 +08001259 "runtime_data" : [
1260 {
1261 "name" : "next_id",
1262 "bitwidth" : 32
1263 }
1264 ],
1265 "primitives" : [
1266 {
1267 "op" : "assign",
1268 "parameters" : [
1269 {
1270 "type" : "field",
1271 "value" : ["scalars", "fabric_metadata_t.next_id"]
1272 },
1273 {
1274 "type" : "runtime_data",
1275 "value" : 0
1276 }
1277 ],
1278 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001279 "filename" : "include/control/forwarding.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001280 "line" : 40,
1281 "column" : 8,
1282 "source_fragment" : "fabric_metadata.next_id = next_id"
1283 }
1284 }
1285 ]
1286 },
1287 {
1288 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001289 "id" : 16,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001290 "runtime_data" : [
1291 {
1292 "name" : "next_id",
1293 "bitwidth" : 32
1294 }
1295 ],
1296 "primitives" : [
1297 {
Yi Tsengbe342052017-11-03 10:21:23 -07001298 "op" : "remove_header",
1299 "parameters" : [
1300 {
1301 "type" : "header",
1302 "value" : "mpls"
1303 }
1304 ],
1305 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001306 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001307 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07001308 "column" : 8,
1309 "source_fragment" : "hdr.mpls.setInvalid()"
1310 }
1311 },
1312 {
1313 "op" : "assign",
1314 "parameters" : [
1315 {
1316 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001317 "value" : ["scalars", "fabric_metadata_t.next_id"]
1318 },
1319 {
1320 "type" : "runtime_data",
1321 "value" : 0
1322 }
1323 ],
1324 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001325 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001326 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001327 "column" : 8,
1328 "source_fragment" : "fabric_metadata.next_id = next_id"
1329 }
1330 }
1331 ]
1332 },
1333 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001334 "name" : "FabricIngress.forwarding.duplicate_to_controller",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001335 "id" : 17,
Yi Tsengbe342052017-11-03 10:21:23 -07001336 "runtime_data" : [],
1337 "primitives" : [
1338 {
1339 "op" : "assign",
1340 "parameters" : [
1341 {
1342 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001343 "value" : ["standard_metadata", "egress_spec"]
1344 },
1345 {
1346 "type" : "hexstr",
1347 "value" : "0x00ff"
1348 }
1349 ],
1350 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001351 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001352 "line" : 49,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001353 "column" : 8,
1354 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001355 }
1356 }
1357 ]
1358 },
1359 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001360 "name" : "FabricIngress.next.output",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001361 "id" : 18,
Yi Tsengbe342052017-11-03 10:21:23 -07001362 "runtime_data" : [
1363 {
1364 "name" : "port_num",
1365 "bitwidth" : 9
1366 }
1367 ],
1368 "primitives" : [
1369 {
1370 "op" : "assign",
1371 "parameters" : [
1372 {
1373 "type" : "field",
1374 "value" : ["standard_metadata", "egress_spec"]
1375 },
1376 {
1377 "type" : "runtime_data",
1378 "value" : 0
1379 }
1380 ],
1381 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001382 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001383 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001384 "column" : 8,
1385 "source_fragment" : "standard_metadata.egress_spec = port_num"
1386 }
Yi Tsengbe342052017-11-03 10:21:23 -07001387 }
1388 ]
1389 },
1390 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001391 "name" : "FabricIngress.next.set_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001392 "id" : 19,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001393 "runtime_data" : [
1394 {
1395 "name" : "new_vlan_id",
1396 "bitwidth" : 12
1397 }
1398 ],
1399 "primitives" : [
1400 {
1401 "op" : "assign",
1402 "parameters" : [
1403 {
1404 "type" : "field",
1405 "value" : ["vlan_tag", "vlan_id"]
1406 },
1407 {
1408 "type" : "runtime_data",
1409 "value" : 0
1410 }
1411 ],
1412 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001413 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001414 "line" : 37,
1415 "column" : 8,
1416 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1417 }
1418 }
1419 ]
1420 },
1421 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001422 "name" : "FabricIngress.next.set_vlan_output",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001423 "id" : 20,
Yi Tsengbe342052017-11-03 10:21:23 -07001424 "runtime_data" : [
1425 {
1426 "name" : "new_vlan_id",
1427 "bitwidth" : 12
1428 },
1429 {
1430 "name" : "port_num",
1431 "bitwidth" : 9
1432 }
1433 ],
1434 "primitives" : [
1435 {
1436 "op" : "assign",
1437 "parameters" : [
1438 {
1439 "type" : "field",
1440 "value" : ["vlan_tag", "vlan_id"]
1441 },
1442 {
1443 "type" : "runtime_data",
1444 "value" : 0
1445 }
1446 ],
1447 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001448 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001449 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07001450 "column" : 8,
1451 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1452 }
1453 },
1454 {
1455 "op" : "assign",
1456 "parameters" : [
1457 {
1458 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001459 "value" : ["standard_metadata", "egress_spec"]
1460 },
1461 {
1462 "type" : "runtime_data",
1463 "value" : 1
1464 }
1465 ],
1466 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001467 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001468 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001469 "column" : 8,
1470 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1471 }
Yi Tsengbe342052017-11-03 10:21:23 -07001472 }
1473 ]
1474 },
1475 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001476 "name" : "FabricIngress.next.l3_routing",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001477 "id" : 21,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001478 "runtime_data" : [
1479 {
1480 "name" : "port_num",
1481 "bitwidth" : 9
1482 },
1483 {
1484 "name" : "smac",
1485 "bitwidth" : 48
1486 },
1487 {
1488 "name" : "dmac",
1489 "bitwidth" : 48
1490 }
1491 ],
1492 "primitives" : [
1493 {
1494 "op" : "assign",
1495 "parameters" : [
1496 {
1497 "type" : "field",
1498 "value" : ["ethernet", "src_addr"]
1499 },
1500 {
1501 "type" : "runtime_data",
1502 "value" : 1
1503 }
1504 ],
1505 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001506 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001507 "line" : 51,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001508 "column" : 8,
1509 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1510 }
1511 },
1512 {
1513 "op" : "assign",
1514 "parameters" : [
1515 {
1516 "type" : "field",
1517 "value" : ["ethernet", "dst_addr"]
1518 },
1519 {
1520 "type" : "runtime_data",
1521 "value" : 2
1522 }
1523 ],
1524 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001525 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001526 "line" : 55,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001527 "column" : 8,
1528 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1529 }
1530 },
1531 {
1532 "op" : "assign",
1533 "parameters" : [
1534 {
1535 "type" : "field",
1536 "value" : ["standard_metadata", "egress_spec"]
1537 },
1538 {
1539 "type" : "runtime_data",
1540 "value" : 0
1541 }
1542 ],
1543 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001544 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001545 "line" : 33,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001546 "column" : 8,
1547 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1548 }
1549 }
1550 ]
1551 },
1552 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001553 "name" : "FabricIngress.next.l3_routing",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001554 "id" : 22,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001555 "runtime_data" : [
1556 {
1557 "name" : "port_num",
1558 "bitwidth" : 9
1559 },
1560 {
1561 "name" : "smac",
1562 "bitwidth" : 48
1563 },
1564 {
1565 "name" : "dmac",
1566 "bitwidth" : 48
1567 }
1568 ],
1569 "primitives" : [
1570 {
1571 "op" : "assign",
1572 "parameters" : [
1573 {
1574 "type" : "field",
1575 "value" : ["ethernet", "src_addr"]
1576 },
1577 {
1578 "type" : "runtime_data",
1579 "value" : 1
1580 }
1581 ],
1582 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001583 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001584 "line" : 51,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001585 "column" : 8,
1586 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1587 }
1588 },
1589 {
1590 "op" : "assign",
1591 "parameters" : [
1592 {
1593 "type" : "field",
1594 "value" : ["ethernet", "dst_addr"]
1595 },
1596 {
1597 "type" : "runtime_data",
1598 "value" : 2
1599 }
1600 ],
1601 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001602 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001603 "line" : 55,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001604 "column" : 8,
1605 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1606 }
1607 },
1608 {
1609 "op" : "assign",
1610 "parameters" : [
1611 {
1612 "type" : "field",
1613 "value" : ["standard_metadata", "egress_spec"]
1614 },
1615 {
1616 "type" : "runtime_data",
1617 "value" : 0
1618 }
1619 ],
1620 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001621 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001622 "line" : 33,
1623 "column" : 8,
1624 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1625 }
1626 }
1627 ]
1628 },
1629 {
1630 "name" : "FabricIngress.next.l3_routing_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001631 "id" : 23,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001632 "runtime_data" : [
1633 {
1634 "name" : "port_num",
1635 "bitwidth" : 9
1636 },
1637 {
1638 "name" : "smac",
1639 "bitwidth" : 48
1640 },
1641 {
1642 "name" : "dmac",
1643 "bitwidth" : 48
1644 },
1645 {
1646 "name" : "new_vlan_id",
1647 "bitwidth" : 12
1648 }
1649 ],
1650 "primitives" : [
1651 {
1652 "op" : "assign",
1653 "parameters" : [
1654 {
1655 "type" : "field",
1656 "value" : ["ethernet", "src_addr"]
1657 },
1658 {
1659 "type" : "runtime_data",
1660 "value" : 1
1661 }
1662 ],
1663 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001664 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001665 "line" : 51,
1666 "column" : 8,
1667 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1668 }
1669 },
1670 {
1671 "op" : "assign",
1672 "parameters" : [
1673 {
1674 "type" : "field",
1675 "value" : ["ethernet", "dst_addr"]
1676 },
1677 {
1678 "type" : "runtime_data",
1679 "value" : 2
1680 }
1681 ],
1682 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001683 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001684 "line" : 55,
1685 "column" : 8,
1686 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1687 }
1688 },
1689 {
1690 "op" : "assign",
1691 "parameters" : [
1692 {
1693 "type" : "field",
1694 "value" : ["vlan_tag", "vlan_id"]
1695 },
1696 {
1697 "type" : "runtime_data",
1698 "value" : 3
1699 }
1700 ],
1701 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001702 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001703 "line" : 46,
1704 "column" : 8,
1705 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1706 }
1707 },
1708 {
1709 "op" : "assign",
1710 "parameters" : [
1711 {
1712 "type" : "field",
1713 "value" : ["standard_metadata", "egress_spec"]
1714 },
1715 {
1716 "type" : "runtime_data",
1717 "value" : 0
1718 }
1719 ],
1720 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001721 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001722 "line" : 33,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001723 "column" : 8,
1724 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1725 }
1726 }
1727 ]
1728 },
1729 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001730 "name" : "FabricIngress.next.mpls_routing_v4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001731 "id" : 24,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001732 "runtime_data" : [
1733 {
1734 "name" : "port_num",
1735 "bitwidth" : 9
1736 },
1737 {
1738 "name" : "smac",
1739 "bitwidth" : 48
1740 },
1741 {
1742 "name" : "dmac",
1743 "bitwidth" : 48
1744 },
1745 {
1746 "name" : "label",
1747 "bitwidth" : 20
1748 }
1749 ],
1750 "primitives" : [
1751 {
1752 "op" : "assign",
1753 "parameters" : [
1754 {
1755 "type" : "field",
1756 "value" : ["ethernet", "src_addr"]
1757 },
1758 {
1759 "type" : "runtime_data",
1760 "value" : 1
1761 }
1762 ],
1763 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001764 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001765 "line" : 51,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001766 "column" : 8,
1767 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1768 }
1769 },
1770 {
1771 "op" : "assign",
1772 "parameters" : [
1773 {
1774 "type" : "field",
1775 "value" : ["ethernet", "dst_addr"]
1776 },
1777 {
1778 "type" : "runtime_data",
1779 "value" : 2
1780 }
1781 ],
1782 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001783 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001784 "line" : 55,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001785 "column" : 8,
1786 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1787 }
1788 },
1789 {
1790 "op" : "assign",
1791 "parameters" : [
1792 {
1793 "type" : "field",
1794 "value" : ["standard_metadata", "egress_spec"]
1795 },
1796 {
1797 "type" : "runtime_data",
1798 "value" : 0
1799 }
1800 ],
1801 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001802 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001803 "line" : 33,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001804 "column" : 8,
1805 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1806 }
1807 },
1808 {
1809 "op" : "add_header",
1810 "parameters" : [
1811 {
1812 "type" : "header",
1813 "value" : "mpls"
1814 }
1815 ],
1816 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001817 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001818 "line" : 72,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001819 "column" : 8,
1820 "source_fragment" : "hdr.mpls.setValid()"
1821 }
1822 },
1823 {
1824 "op" : "assign",
1825 "parameters" : [
1826 {
1827 "type" : "field",
1828 "value" : ["vlan_tag", "ether_type"]
1829 },
1830 {
1831 "type" : "hexstr",
1832 "value" : "0x8847"
1833 }
1834 ],
1835 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001836 "filename" : "include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001837 "line" : 33,
1838 "column" : 31,
1839 "source_fragment" : "0x8847; ..."
1840 }
1841 },
1842 {
1843 "op" : "assign",
1844 "parameters" : [
1845 {
1846 "type" : "field",
1847 "value" : ["mpls", "label"]
1848 },
1849 {
1850 "type" : "runtime_data",
1851 "value" : 3
1852 }
1853 ],
1854 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001855 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001856 "line" : 74,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001857 "column" : 8,
1858 "source_fragment" : "hdr.mpls.label = label; ..."
1859 }
1860 },
1861 {
1862 "op" : "assign",
1863 "parameters" : [
1864 {
1865 "type" : "field",
1866 "value" : ["mpls", "tc"]
1867 },
1868 {
1869 "type" : "hexstr",
1870 "value" : "0x00"
1871 }
1872 ],
1873 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001874 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001875 "line" : 75,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001876 "column" : 8,
1877 "source_fragment" : "hdr.mpls.tc = tc; ..."
1878 }
1879 },
1880 {
1881 "op" : "assign",
1882 "parameters" : [
1883 {
1884 "type" : "field",
1885 "value" : ["mpls", "bos"]
1886 },
1887 {
1888 "type" : "hexstr",
1889 "value" : "0x01"
1890 }
1891 ],
1892 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001893 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001894 "line" : 76,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001895 "column" : 8,
1896 "source_fragment" : "hdr.mpls.bos = 1w1"
1897 }
1898 },
1899 {
1900 "op" : "assign",
1901 "parameters" : [
1902 {
1903 "type" : "field",
1904 "value" : ["mpls", "ttl"]
1905 },
1906 {
1907 "type" : "hexstr",
1908 "value" : "0x40"
1909 }
1910 ],
1911 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001912 "filename" : "include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001913 "line" : 67,
1914 "column" : 32,
1915 "source_fragment" : "64; ..."
1916 }
1917 }
1918 ]
1919 },
1920 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001921 "name" : "FabricIngress.next.mpls_routing_v4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001922 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001923 "runtime_data" : [
1924 {
1925 "name" : "port_num",
1926 "bitwidth" : 9
1927 },
1928 {
1929 "name" : "smac",
1930 "bitwidth" : 48
1931 },
1932 {
1933 "name" : "dmac",
1934 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001935 },
1936 {
1937 "name" : "label",
1938 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001939 }
1940 ],
1941 "primitives" : [
1942 {
1943 "op" : "assign",
1944 "parameters" : [
1945 {
1946 "type" : "field",
1947 "value" : ["ethernet", "src_addr"]
1948 },
1949 {
1950 "type" : "runtime_data",
1951 "value" : 1
1952 }
1953 ],
1954 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001955 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001956 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07001957 "column" : 8,
1958 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1959 }
1960 },
1961 {
1962 "op" : "assign",
1963 "parameters" : [
1964 {
1965 "type" : "field",
1966 "value" : ["ethernet", "dst_addr"]
1967 },
1968 {
1969 "type" : "runtime_data",
1970 "value" : 2
1971 }
1972 ],
1973 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001974 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001975 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07001976 "column" : 8,
1977 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1978 }
1979 },
1980 {
1981 "op" : "assign",
1982 "parameters" : [
1983 {
1984 "type" : "field",
1985 "value" : ["standard_metadata", "egress_spec"]
1986 },
1987 {
1988 "type" : "runtime_data",
1989 "value" : 0
1990 }
1991 ],
1992 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001993 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001994 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001995 "column" : 8,
1996 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1997 }
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001998 },
1999 {
2000 "op" : "add_header",
2001 "parameters" : [
2002 {
2003 "type" : "header",
2004 "value" : "mpls"
2005 }
2006 ],
2007 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002008 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002009 "line" : 72,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002010 "column" : 8,
2011 "source_fragment" : "hdr.mpls.setValid()"
2012 }
2013 },
2014 {
2015 "op" : "assign",
2016 "parameters" : [
2017 {
2018 "type" : "field",
2019 "value" : ["vlan_tag", "ether_type"]
2020 },
2021 {
2022 "type" : "hexstr",
2023 "value" : "0x8847"
2024 }
2025 ],
2026 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002027 "filename" : "include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002028 "line" : 33,
2029 "column" : 31,
2030 "source_fragment" : "0x8847; ..."
2031 }
2032 },
2033 {
2034 "op" : "assign",
2035 "parameters" : [
2036 {
2037 "type" : "field",
2038 "value" : ["mpls", "label"]
2039 },
2040 {
2041 "type" : "runtime_data",
2042 "value" : 3
2043 }
2044 ],
2045 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002046 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002047 "line" : 74,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002048 "column" : 8,
2049 "source_fragment" : "hdr.mpls.label = label; ..."
2050 }
2051 },
2052 {
2053 "op" : "assign",
2054 "parameters" : [
2055 {
2056 "type" : "field",
2057 "value" : ["mpls", "tc"]
2058 },
2059 {
2060 "type" : "hexstr",
2061 "value" : "0x00"
2062 }
2063 ],
2064 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002065 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002066 "line" : 75,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002067 "column" : 8,
2068 "source_fragment" : "hdr.mpls.tc = tc; ..."
2069 }
2070 },
2071 {
2072 "op" : "assign",
2073 "parameters" : [
2074 {
2075 "type" : "field",
2076 "value" : ["mpls", "bos"]
2077 },
2078 {
2079 "type" : "hexstr",
2080 "value" : "0x01"
2081 }
2082 ],
2083 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002084 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002085 "line" : 76,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002086 "column" : 8,
2087 "source_fragment" : "hdr.mpls.bos = 1w1"
2088 }
2089 },
2090 {
2091 "op" : "assign",
2092 "parameters" : [
2093 {
2094 "type" : "field",
2095 "value" : ["mpls", "ttl"]
2096 },
2097 {
2098 "type" : "hexstr",
2099 "value" : "0x40"
2100 }
2101 ],
2102 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002103 "filename" : "include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002104 "line" : 67,
2105 "column" : 32,
2106 "source_fragment" : "64; ..."
2107 }
Yi Tsengbe342052017-11-03 10:21:23 -07002108 }
2109 ]
2110 },
2111 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002112 "name" : "FabricIngress.next.mpls_routing_v6",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002113 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07002114 "runtime_data" : [
2115 {
2116 "name" : "port_num",
2117 "bitwidth" : 9
2118 },
2119 {
2120 "name" : "smac",
2121 "bitwidth" : 48
2122 },
2123 {
2124 "name" : "dmac",
2125 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002126 },
2127 {
2128 "name" : "label",
2129 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07002130 }
2131 ],
2132 "primitives" : [
2133 {
2134 "op" : "assign",
2135 "parameters" : [
2136 {
2137 "type" : "field",
2138 "value" : ["ethernet", "src_addr"]
2139 },
2140 {
2141 "type" : "runtime_data",
2142 "value" : 1
2143 }
2144 ],
2145 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002146 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002147 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07002148 "column" : 8,
2149 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2150 }
2151 },
2152 {
2153 "op" : "assign",
2154 "parameters" : [
2155 {
2156 "type" : "field",
2157 "value" : ["ethernet", "dst_addr"]
2158 },
2159 {
2160 "type" : "runtime_data",
2161 "value" : 2
2162 }
2163 ],
2164 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002165 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002166 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07002167 "column" : 8,
2168 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2169 }
2170 },
2171 {
2172 "op" : "assign",
2173 "parameters" : [
2174 {
2175 "type" : "field",
2176 "value" : ["standard_metadata", "egress_spec"]
2177 },
2178 {
2179 "type" : "runtime_data",
2180 "value" : 0
2181 }
2182 ],
2183 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002184 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002185 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002186 "column" : 8,
2187 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2188 }
Yi Tsengbe342052017-11-03 10:21:23 -07002189 },
2190 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002191 "op" : "add_header",
Yi Tsengbe342052017-11-03 10:21:23 -07002192 "parameters" : [
2193 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002194 "type" : "header",
2195 "value" : "mpls"
Yi Tsengbe342052017-11-03 10:21:23 -07002196 }
2197 ],
2198 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002199 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002200 "line" : 72,
Yi Tsengbe342052017-11-03 10:21:23 -07002201 "column" : 8,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002202 "source_fragment" : "hdr.mpls.setValid()"
2203 }
2204 },
2205 {
2206 "op" : "assign",
2207 "parameters" : [
2208 {
2209 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002210 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08002211 },
2212 {
2213 "type" : "hexstr",
2214 "value" : "0x8847"
2215 }
2216 ],
2217 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002218 "filename" : "include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002219 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002220 "column" : 31,
2221 "source_fragment" : "0x8847; ..."
2222 }
2223 },
2224 {
2225 "op" : "assign",
2226 "parameters" : [
2227 {
2228 "type" : "field",
2229 "value" : ["mpls", "label"]
2230 },
2231 {
2232 "type" : "runtime_data",
2233 "value" : 3
2234 }
2235 ],
2236 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002237 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002238 "line" : 74,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002239 "column" : 8,
2240 "source_fragment" : "hdr.mpls.label = label; ..."
2241 }
2242 },
2243 {
2244 "op" : "assign",
2245 "parameters" : [
2246 {
2247 "type" : "field",
2248 "value" : ["mpls", "tc"]
2249 },
2250 {
Yi Tseng1d842672017-11-28 16:06:52 -08002251 "type" : "hexstr",
2252 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002253 }
2254 ],
2255 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002256 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002257 "line" : 75,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002258 "column" : 8,
2259 "source_fragment" : "hdr.mpls.tc = tc; ..."
2260 }
2261 },
2262 {
2263 "op" : "assign",
2264 "parameters" : [
2265 {
2266 "type" : "field",
2267 "value" : ["mpls", "bos"]
2268 },
2269 {
2270 "type" : "hexstr",
2271 "value" : "0x01"
2272 }
2273 ],
2274 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002275 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002276 "line" : 76,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002277 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002278 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002279 }
2280 },
2281 {
2282 "op" : "assign",
2283 "parameters" : [
2284 {
2285 "type" : "field",
2286 "value" : ["mpls", "ttl"]
2287 },
2288 {
2289 "type" : "hexstr",
2290 "value" : "0x40"
2291 }
2292 ],
2293 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002294 "filename" : "include/control/../define.p4",
Yi Tseng3d3956d2018-01-31 17:28:05 -08002295 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002296 "column" : 32,
2297 "source_fragment" : "64; ..."
2298 }
2299 }
2300 ]
2301 },
2302 {
Yi Tsengbe342052017-11-03 10:21:23 -07002303 "name" : "act",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002304 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07002305 "runtime_data" : [],
2306 "primitives" : [
2307 {
2308 "op" : "assign",
2309 "parameters" : [
2310 {
2311 "type" : "field",
2312 "value" : ["standard_metadata", "egress_spec"]
2313 },
2314 {
2315 "type" : "field",
2316 "value" : ["packet_out", "egress_port"]
2317 }
2318 ],
2319 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002320 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002321 "line" : 26,
2322 "column" : 12,
2323 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2324 }
Yi Tseng1d842672017-11-28 16:06:52 -08002325 },
2326 {
2327 "op" : "remove_header",
2328 "parameters" : [
2329 {
2330 "type" : "header",
2331 "value" : "packet_out"
2332 }
2333 ],
2334 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002335 "filename" : "include/control/packetio.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002336 "line" : 27,
2337 "column" : 12,
2338 "source_fragment" : "hdr.packet_out.setInvalid()"
2339 }
Yi Tsengbe342052017-11-03 10:21:23 -07002340 }
2341 ]
2342 },
2343 {
2344 "name" : "act_0",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002345 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002346 "runtime_data" : [],
2347 "primitives" : [
2348 {
2349 "op" : "assign",
2350 "parameters" : [
2351 {
2352 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002353 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002354 },
2355 {
2356 "type" : "hexstr",
2357 "value" : "0x0800"
2358 }
2359 ],
2360 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002361 "filename" : "include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002362 "line" : 35,
2363 "column" : 31,
2364 "source_fragment" : "0x0800; ..."
2365 }
2366 },
2367 {
2368 "op" : "assign",
2369 "parameters" : [
2370 {
2371 "type" : "field",
2372 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2373 },
2374 {
2375 "type" : "hexstr",
2376 "value" : "0x0800"
2377 }
2378 ],
2379 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002380 "filename" : "include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002381 "line" : 35,
2382 "column" : 31,
2383 "source_fragment" : "0x0800; ..."
2384 }
2385 }
2386 ]
2387 },
2388 {
2389 "name" : "act_1",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002390 "id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002391 "runtime_data" : [],
2392 "primitives" : [
2393 {
2394 "op" : "assign",
2395 "parameters" : [
2396 {
2397 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002398 "value" : ["scalars", "next_tmp_0"]
2399 },
2400 {
2401 "type" : "expression",
2402 "value" : {
2403 "type" : "expression",
2404 "value" : {
2405 "op" : "b2d",
2406 "left" : null,
2407 "right" : {
2408 "type" : "bool",
2409 "value" : true
2410 }
2411 }
2412 }
2413 }
2414 ]
2415 }
2416 ]
2417 },
2418 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002419 "name" : "act_2",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002420 "id" : 30,
Yi Tseng1d842672017-11-28 16:06:52 -08002421 "runtime_data" : [],
2422 "primitives" : [
2423 {
2424 "op" : "assign",
2425 "parameters" : [
2426 {
2427 "type" : "field",
2428 "value" : ["scalars", "next_tmp_0"]
2429 },
2430 {
2431 "type" : "expression",
2432 "value" : {
2433 "type" : "expression",
2434 "value" : {
2435 "op" : "b2d",
2436 "left" : null,
2437 "right" : {
2438 "type" : "bool",
2439 "value" : false
2440 }
2441 }
2442 }
2443 }
2444 ]
2445 }
2446 ]
2447 },
2448 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002449 "name" : "act_3",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002450 "id" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -08002451 "runtime_data" : [],
2452 "primitives" : [
2453 {
2454 "op" : "assign",
2455 "parameters" : [
2456 {
2457 "type" : "field",
2458 "value" : ["ipv4", "ttl"]
2459 },
2460 {
2461 "type" : "expression",
2462 "value" : {
2463 "type" : "expression",
2464 "value" : {
2465 "op" : "&",
2466 "left" : {
2467 "type" : "expression",
2468 "value" : {
2469 "op" : "+",
2470 "left" : {
2471 "type" : "field",
2472 "value" : ["ipv4", "ttl"]
2473 },
2474 "right" : {
2475 "type" : "hexstr",
2476 "value" : "0xff"
2477 }
2478 }
2479 },
2480 "right" : {
2481 "type" : "hexstr",
2482 "value" : "0xff"
2483 }
2484 }
2485 }
2486 }
2487 ],
2488 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002489 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002490 "line" : 171,
Yi Tseng1d842672017-11-28 16:06:52 -08002491 "column" : 20,
2492 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2493 }
2494 }
2495 ]
2496 },
2497 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002498 "name" : "act_4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002499 "id" : 32,
Yi Tseng1d842672017-11-28 16:06:52 -08002500 "runtime_data" : [],
2501 "primitives" : [
2502 {
2503 "op" : "assign",
2504 "parameters" : [
2505 {
2506 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002507 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002508 },
2509 {
2510 "type" : "expression",
2511 "value" : {
2512 "type" : "expression",
2513 "value" : {
2514 "op" : "&",
2515 "left" : {
2516 "type" : "field",
2517 "value" : ["standard_metadata", "egress_spec"]
2518 },
2519 "right" : {
2520 "type" : "hexstr",
2521 "value" : "0xffffffff"
2522 }
2523 }
2524 }
2525 }
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002526 ],
2527 "source_info" : {
2528 "filename" : "include/control/port_counter.p4",
2529 "line" : 28,
2530 "column" : 38,
2531 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2532 }
Yi Tsengbe342052017-11-03 10:21:23 -07002533 },
2534 {
2535 "op" : "count",
2536 "parameters" : [
2537 {
2538 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002539 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07002540 },
2541 {
2542 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002543 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002544 }
2545 ],
2546 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002547 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002548 "line" : 28,
2549 "column" : 12,
2550 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2551 }
2552 }
2553 ]
2554 },
2555 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002556 "name" : "act_5",
2557 "id" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002558 "runtime_data" : [],
2559 "primitives" : [
2560 {
2561 "op" : "assign",
2562 "parameters" : [
2563 {
2564 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002565 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002566 },
2567 {
2568 "type" : "expression",
2569 "value" : {
2570 "type" : "expression",
2571 "value" : {
2572 "op" : "&",
2573 "left" : {
2574 "type" : "field",
2575 "value" : ["standard_metadata", "ingress_port"]
2576 },
2577 "right" : {
2578 "type" : "hexstr",
2579 "value" : "0xffffffff"
2580 }
2581 }
2582 }
2583 }
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002584 ],
2585 "source_info" : {
2586 "filename" : "include/control/port_counter.p4",
2587 "line" : 31,
2588 "column" : 39,
2589 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
2590 }
Yi Tsengbe342052017-11-03 10:21:23 -07002591 },
2592 {
2593 "op" : "count",
2594 "parameters" : [
2595 {
2596 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002597 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07002598 },
2599 {
2600 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002601 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002602 }
2603 ],
2604 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002605 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002606 "line" : 31,
2607 "column" : 12,
2608 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2609 }
2610 }
2611 ]
2612 },
2613 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002614 "name" : "nop",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002615 "id" : 34,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002616 "runtime_data" : [],
2617 "primitives" : []
2618 },
2619 {
2620 "name" : "FabricEgress.pkt_io_egress.pop_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002621 "id" : 35,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002622 "runtime_data" : [],
2623 "primitives" : [
2624 {
2625 "op" : "assign",
2626 "parameters" : [
2627 {
2628 "type" : "field",
2629 "value" : ["ethernet", "ether_type"]
2630 },
2631 {
2632 "type" : "field",
2633 "value" : ["vlan_tag", "ether_type"]
2634 }
2635 ],
2636 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002637 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002638 "line" : 38,
2639 "column" : 8,
2640 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
2641 }
2642 },
2643 {
2644 "op" : "remove_header",
2645 "parameters" : [
2646 {
2647 "type" : "header",
2648 "value" : "vlan_tag"
2649 }
2650 ],
2651 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002652 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002653 "line" : 39,
2654 "column" : 8,
2655 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2656 }
2657 }
2658 ]
2659 },
2660 {
2661 "name" : "FabricEgress.egress_next.pop_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002662 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002663 "runtime_data" : [],
2664 "primitives" : [
2665 {
2666 "op" : "assign",
2667 "parameters" : [
2668 {
2669 "type" : "field",
2670 "value" : ["ethernet", "ether_type"]
2671 },
2672 {
2673 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002674 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002675 }
2676 ],
2677 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002678 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002679 "line" : 193,
2680 "column" : 8,
Yi Tsengbd46d052018-01-22 17:18:16 -08002681 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
Yi Tseng1d842672017-11-28 16:06:52 -08002682 }
Yi Tsengbd46d052018-01-22 17:18:16 -08002683 },
Yi Tsengbe342052017-11-03 10:21:23 -07002684 {
2685 "op" : "remove_header",
2686 "parameters" : [
2687 {
2688 "type" : "header",
2689 "value" : "vlan_tag"
2690 }
2691 ],
2692 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002693 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002694 "line" : 194,
2695 "column" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07002696 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2697 }
2698 }
2699 ]
2700 },
2701 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002702 "name" : "act_6",
2703 "id" : 37,
Yi Tsengbe342052017-11-03 10:21:23 -07002704 "runtime_data" : [],
2705 "primitives" : [
2706 {
2707 "op" : "add_header",
2708 "parameters" : [
2709 {
2710 "type" : "header",
2711 "value" : "packet_in"
2712 }
2713 ],
2714 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002715 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002716 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002717 "column" : 12,
2718 "source_fragment" : "hdr.packet_in.setValid()"
2719 }
2720 },
2721 {
2722 "op" : "assign",
2723 "parameters" : [
2724 {
2725 "type" : "field",
2726 "value" : ["packet_in", "ingress_port"]
2727 },
2728 {
2729 "type" : "field",
2730 "value" : ["standard_metadata", "ingress_port"]
2731 }
2732 ],
2733 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002734 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002735 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07002736 "column" : 12,
2737 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2738 }
2739 }
2740 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002741 }
2742 ],
2743 "pipelines" : [
2744 {
2745 "name" : "ingress",
2746 "id" : 0,
2747 "source_info" : {
2748 "filename" : "fabric.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002749 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002750 "column" : 8,
2751 "source_fragment" : "FabricIngress"
2752 },
2753 "init_table" : "node_2",
2754 "tables" : [
2755 {
2756 "name" : "tbl_act",
2757 "id" : 0,
2758 "key" : [],
2759 "match_type" : "exact",
2760 "type" : "simple",
2761 "max_size" : 1024,
2762 "with_counters" : false,
2763 "support_timeout" : false,
2764 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002765 "action_ids" : [27],
Yi Tsengbe342052017-11-03 10:21:23 -07002766 "actions" : ["act"],
2767 "base_default_next" : null,
2768 "next_tables" : {
2769 "act" : null
2770 },
2771 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002772 "action_id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07002773 "action_const" : true,
2774 "action_data" : [],
2775 "action_entry_const" : true
2776 }
2777 },
2778 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002779 "name" : "FabricIngress.filtering.ingress_port_vlan",
Yi Tsengbe342052017-11-03 10:21:23 -07002780 "id" : 1,
2781 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002782 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002783 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07002784 "column" : 10,
2785 "source_fragment" : "ingress_port_vlan"
2786 },
2787 "key" : [
2788 {
2789 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002790 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002791 "target" : ["standard_metadata", "ingress_port"],
2792 "mask" : null
2793 },
2794 {
2795 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002796 "name" : "hdr.vlan_tag.is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07002797 "target" : ["vlan_tag", "$valid$"],
2798 "mask" : null
2799 },
2800 {
2801 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002802 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002803 "target" : ["vlan_tag", "vlan_id"],
2804 "mask" : null
2805 }
2806 ],
2807 "match_type" : "ternary",
2808 "type" : "simple",
2809 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002810 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002811 "support_timeout" : false,
2812 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002813 "action_ids" : [10, 9, 0, 8],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002814 "actions" : ["FabricIngress.filtering.push_internal_vlan", "FabricIngress.filtering.set_vlan", "nop", "FabricIngress.filtering.drop"],
2815 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002816 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002817 "FabricIngress.filtering.push_internal_vlan" : "FabricIngress.filtering.fwd_classifier",
2818 "FabricIngress.filtering.set_vlan" : "FabricIngress.filtering.fwd_classifier",
2819 "nop" : "FabricIngress.filtering.fwd_classifier",
2820 "FabricIngress.filtering.drop" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002821 },
2822 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002823 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07002824 "action_const" : true,
2825 "action_data" : [],
2826 "action_entry_const" : true
2827 }
2828 },
2829 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002830 "name" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002831 "id" : 2,
2832 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002833 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002834 "line" : 76,
Yi Tsengbe342052017-11-03 10:21:23 -07002835 "column" : 10,
2836 "source_fragment" : "fwd_classifier"
2837 },
2838 "key" : [
2839 {
2840 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002841 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002842 "target" : ["standard_metadata", "ingress_port"],
2843 "mask" : null
2844 },
2845 {
2846 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002847 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07002848 "target" : ["ethernet", "dst_addr"],
2849 "mask" : null
2850 },
2851 {
2852 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002853 "name" : "fabric_metadata.original_ether_type",
Yi Tseng1d842672017-11-28 16:06:52 -08002854 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002855 "mask" : null
2856 }
2857 ],
2858 "match_type" : "exact",
2859 "type" : "simple",
2860 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002861 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002862 "support_timeout" : false,
2863 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002864 "action_ids" : [11],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002865 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002866 "base_default_next" : "node_6",
2867 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002868 "FabricIngress.filtering.set_forwarding_type" : "node_6"
Yi Tsengbe342052017-11-03 10:21:23 -07002869 },
2870 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002871 "action_id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07002872 "action_const" : true,
2873 "action_data" : ["0x0"],
2874 "action_entry_const" : true
2875 }
2876 },
2877 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002878 "name" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07002879 "id" : 3,
2880 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002881 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002882 "line" : 52,
Yi Tsengbe342052017-11-03 10:21:23 -07002883 "column" : 10,
2884 "source_fragment" : "bridging"
2885 },
2886 "key" : [
2887 {
2888 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002889 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002890 "target" : ["vlan_tag", "vlan_id"],
2891 "mask" : null
2892 },
2893 {
2894 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002895 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07002896 "target" : ["ethernet", "dst_addr"],
2897 "mask" : null
2898 }
2899 ],
2900 "match_type" : "ternary",
2901 "type" : "simple",
2902 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002903 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002904 "support_timeout" : false,
2905 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002906 "action_ids" : [13, 3],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002907 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
2908 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08002909 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002910 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
2911 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08002912 },
2913 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002914 "action_id" : 3,
Yi Tseng1d842672017-11-28 16:06:52 -08002915 "action_const" : false,
2916 "action_data" : [],
2917 "action_entry_const" : false
2918 }
2919 },
2920 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002921 "name" : "FabricIngress.forwarding.mpls",
Yi Tseng1d842672017-11-28 16:06:52 -08002922 "id" : 4,
2923 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002924 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002925 "line" : 64,
Yi Tseng1d842672017-11-28 16:06:52 -08002926 "column" : 10,
2927 "source_fragment" : "mpls"
2928 },
2929 "key" : [
2930 {
2931 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002932 "name" : "hdr.mpls.label",
Yi Tseng1d842672017-11-28 16:06:52 -08002933 "target" : ["mpls", "label"],
2934 "mask" : null
2935 }
2936 ],
2937 "match_type" : "exact",
2938 "type" : "simple",
2939 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002940 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002941 "support_timeout" : false,
2942 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002943 "action_ids" : [16, 4],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002944 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08002945 "base_default_next" : "tbl_act_0",
Yi Tseng1d842672017-11-28 16:06:52 -08002946 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002947 "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_act_0",
Yi Tsengbd46d052018-01-22 17:18:16 -08002948 "NoAction" : "tbl_act_0"
Yi Tseng1d842672017-11-28 16:06:52 -08002949 },
2950 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002951 "action_id" : 4,
Yi Tseng1d842672017-11-28 16:06:52 -08002952 "action_const" : false,
2953 "action_data" : [],
2954 "action_entry_const" : false
2955 }
2956 },
2957 {
2958 "name" : "tbl_act_0",
2959 "id" : 5,
2960 "key" : [],
2961 "match_type" : "exact",
2962 "type" : "simple",
2963 "max_size" : 1024,
2964 "with_counters" : false,
2965 "support_timeout" : false,
2966 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002967 "action_ids" : [28],
Yi Tseng1d842672017-11-28 16:06:52 -08002968 "actions" : ["act_0"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002969 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08002970 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002971 "act_0" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08002972 },
2973 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002974 "action_id" : 28,
Yi Tseng1d842672017-11-28 16:06:52 -08002975 "action_const" : true,
2976 "action_data" : [],
2977 "action_entry_const" : true
2978 }
2979 },
2980 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002981 "name" : "FabricIngress.forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08002982 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08002983 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002984 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002985 "line" : 75,
Yi Tseng1d842672017-11-28 16:06:52 -08002986 "column" : 10,
2987 "source_fragment" : "unicast_v4"
2988 },
2989 "key" : [
2990 {
2991 "match_type" : "lpm",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002992 "name" : "hdr.ipv4.dst_addr",
Yi Tseng1d842672017-11-28 16:06:52 -08002993 "target" : ["ipv4", "dst_addr"],
2994 "mask" : null
2995 }
2996 ],
2997 "match_type" : "lpm",
2998 "type" : "simple",
2999 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003000 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003001 "support_timeout" : false,
3002 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003003 "action_ids" : [14, 5],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003004 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
3005 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003006 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003007 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
3008 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003009 },
3010 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003011 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003012 "action_const" : false,
3013 "action_data" : [],
3014 "action_entry_const" : false
3015 }
3016 },
3017 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003018 "name" : "FabricIngress.forwarding.acl",
Yi Tsengbd46d052018-01-22 17:18:16 -08003019 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003020 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003021 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003022 "line" : 133,
Yi Tsengbe342052017-11-03 10:21:23 -07003023 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003024 "source_fragment" : "acl"
3025 },
3026 "key" : [
3027 {
3028 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003029 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003030 "target" : ["standard_metadata", "ingress_port"],
3031 "mask" : null
3032 },
3033 {
3034 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003035 "name" : "fabric_metadata.ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003036 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3037 "mask" : null
3038 },
3039 {
3040 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003041 "name" : "fabric_metadata.l4_src_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003042 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3043 "mask" : null
3044 },
3045 {
3046 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003047 "name" : "fabric_metadata.l4_dst_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003048 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3049 "mask" : null
3050 },
3051 {
3052 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003053 "name" : "fabric_metadata.original_ether_type",
Yi Tsengc6844f52017-12-19 11:58:25 -08003054 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
3055 "mask" : null
3056 },
3057 {
3058 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003059 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003060 "target" : ["ethernet", "dst_addr"],
3061 "mask" : null
3062 },
3063 {
3064 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003065 "name" : "hdr.ethernet.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003066 "target" : ["ethernet", "src_addr"],
3067 "mask" : null
3068 },
3069 {
3070 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003071 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003072 "target" : ["vlan_tag", "vlan_id"],
3073 "mask" : null
3074 },
3075 {
3076 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003077 "name" : "hdr.ipv4.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003078 "target" : ["ipv4", "src_addr"],
3079 "mask" : null
3080 },
3081 {
3082 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003083 "name" : "hdr.ipv4.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003084 "target" : ["ipv4", "dst_addr"],
3085 "mask" : null
3086 },
3087 {
3088 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003089 "name" : "hdr.icmp.icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003090 "target" : ["icmp", "icmp_type"],
3091 "mask" : null
3092 },
3093 {
3094 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003095 "name" : "hdr.icmp.icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003096 "target" : ["icmp", "icmp_code"],
3097 "mask" : null
3098 }
3099 ],
3100 "match_type" : "ternary",
3101 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003102 "max_size" : 256,
Yi Tsengbd46d052018-01-22 17:18:16 -08003103 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003104 "support_timeout" : false,
3105 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003106 "action_ids" : [15, 17, 12, 1],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003107 "actions" : ["FabricIngress.forwarding.set_next_id", "FabricIngress.forwarding.duplicate_to_controller", "FabricIngress.forwarding.drop", "nop"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003108 "base_default_next" : "FabricIngress.next.vlan_meta",
Yi Tsengbe342052017-11-03 10:21:23 -07003109 "next_tables" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003110 "FabricIngress.forwarding.set_next_id" : "FabricIngress.next.vlan_meta",
3111 "FabricIngress.forwarding.duplicate_to_controller" : "FabricIngress.next.vlan_meta",
3112 "FabricIngress.forwarding.drop" : "FabricIngress.next.vlan_meta",
3113 "nop" : "FabricIngress.next.vlan_meta"
Yi Tsengbe342052017-11-03 10:21:23 -07003114 },
3115 "default_entry" : {
3116 "action_id" : 1,
3117 "action_const" : true,
3118 "action_data" : [],
3119 "action_entry_const" : true
3120 }
3121 },
3122 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003123 "name" : "FabricIngress.next.vlan_meta",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003124 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003125 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003126 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003127 "line" : 96,
3128 "column" : 10,
3129 "source_fragment" : "vlan_meta"
3130 },
3131 "key" : [
3132 {
3133 "match_type" : "exact",
3134 "name" : "fabric_metadata.next_id",
3135 "target" : ["scalars", "fabric_metadata_t.next_id"],
3136 "mask" : null
3137 }
3138 ],
3139 "match_type" : "exact",
3140 "type" : "simple",
3141 "max_size" : 1024,
3142 "with_counters" : true,
3143 "support_timeout" : false,
3144 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003145 "action_ids" : [19, 2],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003146 "actions" : ["FabricIngress.next.set_vlan", "nop"],
3147 "base_default_next" : "FabricIngress.next.simple",
3148 "next_tables" : {
3149 "FabricIngress.next.set_vlan" : "FabricIngress.next.simple",
3150 "nop" : "FabricIngress.next.simple"
3151 },
3152 "default_entry" : {
3153 "action_id" : 2,
3154 "action_const" : false,
3155 "action_data" : [],
3156 "action_entry_const" : false
3157 }
3158 },
3159 {
3160 "name" : "FabricIngress.next.simple",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003161 "id" : 9,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003162 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003163 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003164 "line" : 109,
Yi Tsengbe342052017-11-03 10:21:23 -07003165 "column" : 10,
3166 "source_fragment" : "simple"
3167 },
3168 "key" : [
3169 {
3170 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003171 "name" : "fabric_metadata.next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003172 "target" : ["scalars", "fabric_metadata_t.next_id"],
3173 "mask" : null
3174 }
3175 ],
3176 "match_type" : "exact",
3177 "type" : "simple",
3178 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003179 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003180 "support_timeout" : false,
3181 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003182 "action_ids" : [18, 20, 21, 24, 23, 6],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003183 "actions" : ["FabricIngress.next.output", "FabricIngress.next.set_vlan_output", "FabricIngress.next.l3_routing", "FabricIngress.next.mpls_routing_v4", "FabricIngress.next.l3_routing_vlan", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003184 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003185 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003186 "__HIT__" : "tbl_act_1",
3187 "__MISS__" : "tbl_act_2"
Yi Tsengbe342052017-11-03 10:21:23 -07003188 },
3189 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003190 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003191 "action_const" : false,
3192 "action_data" : [],
3193 "action_entry_const" : false
3194 }
3195 },
3196 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003197 "name" : "tbl_act_1",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003198 "id" : 10,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003199 "key" : [],
3200 "match_type" : "exact",
3201 "type" : "simple",
3202 "max_size" : 1024,
3203 "with_counters" : false,
3204 "support_timeout" : false,
3205 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003206 "action_ids" : [29],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003207 "actions" : ["act_1"],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003208 "base_default_next" : "node_18",
Yi Tsengbe342052017-11-03 10:21:23 -07003209 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003210 "act_1" : "node_18"
Yi Tsengbe342052017-11-03 10:21:23 -07003211 },
3212 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003213 "action_id" : 29,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003214 "action_const" : true,
3215 "action_data" : [],
3216 "action_entry_const" : true
3217 }
3218 },
3219 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003220 "name" : "tbl_act_2",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003221 "id" : 11,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003222 "key" : [],
3223 "match_type" : "exact",
3224 "type" : "simple",
3225 "max_size" : 1024,
3226 "with_counters" : false,
3227 "support_timeout" : false,
3228 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003229 "action_ids" : [30],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003230 "actions" : ["act_2"],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003231 "base_default_next" : "node_18",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003232 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003233 "act_2" : "node_18"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003234 },
3235 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003236 "action_id" : 30,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003237 "action_const" : true,
3238 "action_data" : [],
3239 "action_entry_const" : true
3240 }
3241 },
3242 {
3243 "name" : "tbl_act_3",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003244 "id" : 12,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003245 "key" : [],
3246 "match_type" : "exact",
3247 "type" : "simple",
3248 "max_size" : 1024,
3249 "with_counters" : false,
3250 "support_timeout" : false,
3251 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003252 "action_ids" : [31],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003253 "actions" : ["act_3"],
3254 "base_default_next" : "FabricIngress.next.hashed",
3255 "next_tables" : {
3256 "act_3" : "FabricIngress.next.hashed"
3257 },
3258 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003259 "action_id" : 31,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003260 "action_const" : true,
3261 "action_data" : [],
3262 "action_entry_const" : true
3263 }
3264 },
3265 {
3266 "name" : "FabricIngress.next.hashed",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003267 "id" : 13,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003268 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003269 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003270 "line" : 124,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003271 "column" : 10,
3272 "source_fragment" : "hashed"
3273 },
3274 "key" : [
3275 {
3276 "match_type" : "exact",
3277 "name" : "fabric_metadata.next_id",
3278 "target" : ["scalars", "fabric_metadata_t.next_id"],
3279 "mask" : null
3280 }
3281 ],
3282 "match_type" : "exact",
3283 "type" : "indirect_ws",
3284 "action_profile" : "FabricIngress.next.ecmp_selector",
3285 "max_size" : 1024,
3286 "with_counters" : true,
3287 "support_timeout" : false,
3288 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003289 "action_ids" : [22, 25, 26, 7],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003290 "actions" : ["FabricIngress.next.l3_routing", "FabricIngress.next.mpls_routing_v4", "FabricIngress.next.mpls_routing_v6", "NoAction"],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003291 "base_default_next" : "node_23",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003292 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003293 "FabricIngress.next.l3_routing" : "node_23",
3294 "FabricIngress.next.mpls_routing_v4" : "node_23",
3295 "FabricIngress.next.mpls_routing_v6" : "node_23",
3296 "NoAction" : "node_23"
Yi Tseng27b9bc02018-04-12 14:52:40 +08003297 }
3298 },
3299 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003300 "name" : "tbl_act_4",
3301 "id" : 14,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003302 "key" : [],
3303 "match_type" : "exact",
3304 "type" : "simple",
3305 "max_size" : 1024,
3306 "with_counters" : false,
3307 "support_timeout" : false,
3308 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003309 "action_ids" : [32],
3310 "actions" : ["act_4"],
3311 "base_default_next" : "node_25",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003312 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003313 "act_4" : "node_25"
Yi Tseng27b9bc02018-04-12 14:52:40 +08003314 },
3315 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003316 "action_id" : 32,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003317 "action_const" : true,
3318 "action_data" : [],
3319 "action_entry_const" : true
3320 }
3321 },
3322 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003323 "name" : "tbl_act_5",
3324 "id" : 15,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003325 "key" : [],
3326 "match_type" : "exact",
3327 "type" : "simple",
3328 "max_size" : 1024,
3329 "with_counters" : false,
3330 "support_timeout" : false,
3331 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003332 "action_ids" : [33],
3333 "actions" : ["act_5"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003334 "base_default_next" : null,
3335 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003336 "act_5" : null
Yi Tseng27b9bc02018-04-12 14:52:40 +08003337 },
3338 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003339 "action_id" : 33,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003340 "action_const" : true,
3341 "action_data" : [],
3342 "action_entry_const" : true
3343 }
Yi Tsengbe342052017-11-03 10:21:23 -07003344 }
3345 ],
3346 "action_profiles" : [
3347 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003348 "name" : "FabricIngress.next.ecmp_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003349 "id" : 0,
3350 "max_size" : 64,
3351 "selector" : {
3352 "algo" : "crc16",
3353 "input" : [
3354 {
3355 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003356 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003357 },
3358 {
3359 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003360 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003361 },
3362 {
3363 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003364 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003365 },
3366 {
3367 "type" : "field",
3368 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3369 },
3370 {
3371 "type" : "field",
3372 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3373 }
3374 ]
3375 }
3376 }
3377 ],
3378 "conditionals" : [
3379 {
3380 "name" : "node_2",
3381 "id" : 0,
3382 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003383 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003384 "line" : 25,
3385 "column" : 12,
3386 "source_fragment" : "hdr.packet_out.isValid()"
3387 },
3388 "expression" : {
3389 "type" : "expression",
3390 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003391 "op" : "d2b",
3392 "left" : null,
3393 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003394 "type" : "field",
3395 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003396 }
3397 }
3398 },
3399 "true_next" : "tbl_act",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003400 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Yi Tsengbe342052017-11-03 10:21:23 -07003401 },
3402 {
3403 "name" : "node_6",
3404 "id" : 1,
3405 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003406 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003407 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -07003408 "column" : 11,
3409 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3410 },
3411 "expression" : {
3412 "type" : "expression",
3413 "value" : {
3414 "op" : "==",
3415 "left" : {
3416 "type" : "field",
3417 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3418 },
3419 "right" : {
3420 "type" : "hexstr",
3421 "value" : "0x00"
3422 }
3423 }
3424 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003425 "true_next" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07003426 "false_next" : "node_8"
3427 },
3428 {
3429 "name" : "node_8",
3430 "id" : 2,
3431 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003432 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003433 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -07003434 "column" : 17,
3435 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3436 },
3437 "expression" : {
3438 "type" : "expression",
3439 "value" : {
3440 "op" : "==",
3441 "left" : {
3442 "type" : "field",
3443 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3444 },
3445 "right" : {
3446 "type" : "hexstr",
3447 "value" : "0x01"
3448 }
3449 }
3450 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003451 "true_next" : "FabricIngress.forwarding.mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -08003452 "false_next" : "node_11"
Yi Tsengbe342052017-11-03 10:21:23 -07003453 },
3454 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003455 "name" : "node_11",
Yi Tsengbe342052017-11-03 10:21:23 -07003456 "id" : 3,
3457 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003458 "filename" : "include/control/forwarding.p4",
3459 "line" : 179,
Yi Tsengbe342052017-11-03 10:21:23 -07003460 "column" : 17,
3461 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3462 },
3463 "expression" : {
3464 "type" : "expression",
3465 "value" : {
3466 "op" : "==",
3467 "left" : {
3468 "type" : "field",
3469 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3470 },
3471 "right" : {
3472 "type" : "hexstr",
3473 "value" : "0x02"
3474 }
3475 }
3476 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003477 "true_next" : "FabricIngress.forwarding.unicast_v4",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003478 "false_next" : "FabricIngress.forwarding.acl"
3479 },
3480 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003481 "name" : "node_18",
3482 "id" : 4,
Yi Tseng1d842672017-11-28 16:06:52 -08003483 "expression" : {
3484 "type" : "expression",
3485 "value" : {
3486 "op" : "d2b",
3487 "left" : null,
3488 "right" : {
3489 "type" : "field",
3490 "value" : ["scalars", "next_tmp_0"]
3491 }
3492 }
3493 },
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003494 "true_next" : "node_19",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003495 "false_next" : "FabricIngress.next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003496 },
3497 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003498 "name" : "node_19",
3499 "id" : 5,
Yi Tseng1d842672017-11-28 16:06:52 -08003500 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003501 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003502 "line" : 169,
Yi Tsengbd46d052018-01-22 17:18:16 -08003503 "column" : 16,
3504 "source_fragment" : "!hdr.mpls.isValid()"
Yi Tseng1d842672017-11-28 16:06:52 -08003505 },
3506 "expression" : {
3507 "type" : "expression",
3508 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003509 "op" : "not",
3510 "left" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003511 "right" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003512 "type" : "expression",
3513 "value" : {
3514 "op" : "d2b",
3515 "left" : null,
3516 "right" : {
3517 "type" : "field",
3518 "value" : ["mpls", "$valid$"]
3519 }
3520 }
Yi Tseng1d842672017-11-28 16:06:52 -08003521 }
3522 }
3523 },
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003524 "true_next" : "node_20",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003525 "false_next" : "FabricIngress.next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003526 },
3527 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003528 "name" : "node_20",
3529 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003530 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003531 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003532 "line" : 170,
Yi Tseng1d842672017-11-28 16:06:52 -08003533 "column" : 19,
3534 "source_fragment" : "hdr.ipv4.isValid()"
3535 },
3536 "expression" : {
3537 "type" : "expression",
3538 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003539 "op" : "d2b",
3540 "left" : null,
3541 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003542 "type" : "field",
3543 "value" : ["ipv4", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08003544 }
3545 }
3546 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003547 "true_next" : "tbl_act_3",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003548 "false_next" : "FabricIngress.next.hashed"
3549 },
3550 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003551 "name" : "node_23",
3552 "id" : 7,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003553 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003554 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003555 "line" : 27,
3556 "column" : 12,
3557 "source_fragment" : "standard_metadata.egress_spec < 511"
3558 },
3559 "expression" : {
3560 "type" : "expression",
3561 "value" : {
3562 "op" : "<",
3563 "left" : {
3564 "type" : "field",
3565 "value" : ["standard_metadata", "egress_spec"]
3566 },
3567 "right" : {
3568 "type" : "hexstr",
3569 "value" : "0x01ff"
3570 }
3571 }
3572 },
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003573 "true_next" : "tbl_act_4",
3574 "false_next" : "node_25"
Yi Tsengbe342052017-11-03 10:21:23 -07003575 },
3576 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003577 "name" : "node_25",
3578 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003579 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003580 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003581 "line" : 30,
3582 "column" : 12,
3583 "source_fragment" : "standard_metadata.ingress_port < 511"
3584 },
3585 "expression" : {
3586 "type" : "expression",
3587 "value" : {
3588 "op" : "<",
3589 "left" : {
3590 "type" : "field",
3591 "value" : ["standard_metadata", "ingress_port"]
3592 },
3593 "right" : {
3594 "type" : "hexstr",
3595 "value" : "0x01ff"
3596 }
3597 }
3598 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003599 "false_next" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003600 "true_next" : "tbl_act_5"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003601 }
3602 ]
3603 },
3604 {
3605 "name" : "egress",
3606 "id" : 1,
3607 "source_info" : {
3608 "filename" : "fabric.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003609 "line" : 61,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003610 "column" : 8,
3611 "source_fragment" : "FabricEgress"
3612 },
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003613 "init_table" : "FabricEgress.egress_next.egress_vlan",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003614 "tables" : [
3615 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003616 "name" : "FabricEgress.egress_next.egress_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003617 "id" : 16,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003618 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003619 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003620 "line" : 197,
3621 "column" : 10,
3622 "source_fragment" : "egress_vlan"
3623 },
3624 "key" : [
3625 {
3626 "match_type" : "exact",
3627 "name" : "hdr.vlan_tag.vlan_id",
3628 "target" : ["vlan_tag", "vlan_id"],
3629 "mask" : null
3630 },
3631 {
3632 "match_type" : "exact",
3633 "name" : "standard_metadata.egress_port",
3634 "target" : ["standard_metadata", "egress_port"],
3635 "mask" : null
3636 }
3637 ],
3638 "match_type" : "exact",
3639 "type" : "simple",
3640 "max_size" : 1024,
3641 "with_counters" : false,
3642 "support_timeout" : false,
3643 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003644 "action_ids" : [36, 34],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003645 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003646 "base_default_next" : "node_30",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003647 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003648 "FabricEgress.egress_next.pop_vlan" : "node_30",
3649 "nop" : "node_30"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003650 },
3651 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003652 "action_id" : 34,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003653 "action_const" : false,
3654 "action_data" : [],
3655 "action_entry_const" : false
3656 }
3657 },
3658 {
3659 "name" : "tbl_pkt_io_egress_pop_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003660 "id" : 17,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003661 "key" : [],
3662 "match_type" : "exact",
3663 "type" : "simple",
3664 "max_size" : 1024,
3665 "with_counters" : false,
3666 "support_timeout" : false,
3667 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003668 "action_ids" : [35],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003669 "actions" : ["FabricEgress.pkt_io_egress.pop_vlan"],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003670 "base_default_next" : "tbl_act_6",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003671 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003672 "FabricEgress.pkt_io_egress.pop_vlan" : "tbl_act_6"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003673 },
3674 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003675 "action_id" : 35,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003676 "action_const" : true,
3677 "action_data" : [],
3678 "action_entry_const" : true
3679 }
3680 },
3681 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003682 "name" : "tbl_act_6",
3683 "id" : 18,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003684 "key" : [],
3685 "match_type" : "exact",
3686 "type" : "simple",
3687 "max_size" : 1024,
3688 "with_counters" : false,
3689 "support_timeout" : false,
3690 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003691 "action_ids" : [37],
3692 "actions" : ["act_6"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003693 "base_default_next" : null,
3694 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003695 "act_6" : null
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003696 },
3697 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003698 "action_id" : 37,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003699 "action_const" : true,
3700 "action_data" : [],
3701 "action_entry_const" : true
3702 }
3703 }
3704 ],
3705 "action_profiles" : [],
3706 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08003707 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003708 "name" : "node_30",
3709 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003710 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003711 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003712 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07003713 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08003714 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07003715 },
3716 "expression" : {
3717 "type" : "expression",
3718 "value" : {
3719 "op" : "==",
3720 "left" : {
3721 "type" : "field",
3722 "value" : ["standard_metadata", "egress_port"]
3723 },
3724 "right" : {
3725 "type" : "hexstr",
3726 "value" : "0x00ff"
3727 }
3728 }
3729 },
3730 "false_next" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003731 "true_next" : "node_31"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003732 },
3733 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003734 "name" : "node_31",
3735 "id" : 10,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003736 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003737 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003738 "line" : 43,
3739 "column" : 16,
3740 "source_fragment" : "hdr.vlan_tag.isValid() && fabric_metadata.pop_vlan_when_packet_in"
3741 },
3742 "expression" : {
3743 "type" : "expression",
3744 "value" : {
3745 "op" : "and",
3746 "left" : {
3747 "type" : "expression",
3748 "value" : {
3749 "op" : "d2b",
3750 "left" : null,
3751 "right" : {
3752 "type" : "field",
3753 "value" : ["vlan_tag", "$valid$"]
3754 }
3755 }
3756 },
3757 "right" : {
3758 "type" : "expression",
3759 "value" : {
3760 "op" : "d2b",
3761 "left" : null,
3762 "right" : {
3763 "type" : "field",
3764 "value" : ["scalars", "fabric_metadata_t.pop_vlan_when_packet_in"]
3765 }
3766 }
3767 }
3768 }
3769 },
3770 "true_next" : "tbl_pkt_io_egress_pop_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003771 "false_next" : "tbl_act_6"
Yi Tsengbe342052017-11-03 10:21:23 -07003772 }
3773 ]
3774 }
3775 ],
3776 "checksums" : [
3777 {
3778 "name" : "cksum",
3779 "id" : 0,
3780 "target" : ["ipv4", "hdr_checksum"],
3781 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003782 "calculation" : "calc",
3783 "if_cond" : {
3784 "type" : "expression",
3785 "value" : {
3786 "op" : "d2b",
3787 "left" : null,
3788 "right" : {
3789 "type" : "field",
3790 "value" : ["ipv4", "$valid$"]
3791 }
3792 }
3793 }
Yi Tsengbe342052017-11-03 10:21:23 -07003794 },
3795 {
3796 "name" : "cksum_0",
3797 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07003798 "target" : ["ipv4", "hdr_checksum"],
3799 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003800 "calculation" : "calc_0",
3801 "if_cond" : {
3802 "type" : "expression",
3803 "value" : {
3804 "op" : "d2b",
3805 "left" : null,
3806 "right" : {
3807 "type" : "field",
3808 "value" : ["ipv4", "$valid$"]
3809 }
3810 }
3811 }
Yi Tsengbe342052017-11-03 10:21:23 -07003812 }
3813 ],
3814 "force_arith" : [],
3815 "extern_instances" : [],
3816 "field_aliases" : [
3817 [
3818 "queueing_metadata.enq_timestamp",
3819 ["standard_metadata", "enq_timestamp"]
3820 ],
3821 [
3822 "queueing_metadata.enq_qdepth",
3823 ["standard_metadata", "enq_qdepth"]
3824 ],
3825 [
3826 "queueing_metadata.deq_timedelta",
3827 ["standard_metadata", "deq_timedelta"]
3828 ],
3829 [
3830 "queueing_metadata.deq_qdepth",
3831 ["standard_metadata", "deq_qdepth"]
3832 ],
3833 [
3834 "intrinsic_metadata.ingress_global_timestamp",
3835 ["standard_metadata", "ingress_global_timestamp"]
3836 ],
3837 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08003838 "intrinsic_metadata.egress_global_timestamp",
3839 ["standard_metadata", "egress_global_timestamp"]
3840 ],
3841 [
Yi Tsengbe342052017-11-03 10:21:23 -07003842 "intrinsic_metadata.lf_field_list",
3843 ["standard_metadata", "lf_field_list"]
3844 ],
3845 [
3846 "intrinsic_metadata.mcast_grp",
3847 ["standard_metadata", "mcast_grp"]
3848 ],
3849 [
3850 "intrinsic_metadata.resubmit_flag",
3851 ["standard_metadata", "resubmit_flag"]
3852 ],
3853 [
3854 "intrinsic_metadata.egress_rid",
3855 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08003856 ],
3857 [
3858 "intrinsic_metadata.recirculate_flag",
3859 ["standard_metadata", "recirculate_flag"]
Yi Tsengbe342052017-11-03 10:21:23 -07003860 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003861 ],
3862 "program" : "fabric.p4",
3863 "__meta__" : {
3864 "version" : [2, 18],
3865 "compiler" : "https://github.com/p4lang/p4c"
3866 }
Yi Tsengbe342052017-11-03 10:21:23 -07003867}