blob: 53a7735930b2a27855631552136da3bc1ad33c0e [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 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000756 "name" : "FabricIngress.next.multicast_counter",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200757 "id" : 9,
Esin Karaman971fb7f2017-12-28 13:44:52 +0000758 "is_direct" : true,
759 "binding" : "FabricIngress.next.multicast"
760 },
761 {
762 "name" : "FabricIngress.port_counters_control.egress_port_counter",
763 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700764 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200765 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700766 "line" : 23,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800767 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700768 "source_fragment" : "egress_port_counter"
769 },
770 "size" : 511,
771 "is_direct" : false
772 },
773 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800774 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Esin Karaman971fb7f2017-12-28 13:44:52 +0000775 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700776 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200777 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700778 "line" : 24,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800779 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700780 "source_fragment" : "ingress_port_counter"
781 },
782 "size" : 511,
783 "is_direct" : false
784 }
785 ],
786 "register_arrays" : [],
787 "calculations" : [
788 {
789 "name" : "calc",
790 "id" : 0,
791 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200792 "filename" : "include/checksum.p4",
793 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700794 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200795 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700796 },
797 "algo" : "csum16",
798 "input" : [
799 {
800 "type" : "field",
801 "value" : ["ipv4", "version"]
802 },
803 {
804 "type" : "field",
805 "value" : ["ipv4", "ihl"]
806 },
807 {
808 "type" : "field",
809 "value" : ["ipv4", "diffserv"]
810 },
811 {
812 "type" : "field",
813 "value" : ["ipv4", "total_len"]
814 },
815 {
816 "type" : "field",
817 "value" : ["ipv4", "identification"]
818 },
819 {
820 "type" : "field",
821 "value" : ["ipv4", "flags"]
822 },
823 {
824 "type" : "field",
825 "value" : ["ipv4", "frag_offset"]
826 },
827 {
828 "type" : "field",
829 "value" : ["ipv4", "ttl"]
830 },
831 {
832 "type" : "field",
833 "value" : ["ipv4", "protocol"]
834 },
835 {
836 "type" : "field",
837 "value" : ["ipv4", "src_addr"]
838 },
839 {
840 "type" : "field",
841 "value" : ["ipv4", "dst_addr"]
842 }
843 ]
844 },
845 {
846 "name" : "calc_0",
847 "id" : 1,
848 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200849 "filename" : "include/checksum.p4",
850 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -0700851 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200852 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700853 },
854 "algo" : "csum16",
855 "input" : [
856 {
857 "type" : "field",
858 "value" : ["ipv4", "version"]
859 },
860 {
861 "type" : "field",
862 "value" : ["ipv4", "ihl"]
863 },
864 {
865 "type" : "field",
866 "value" : ["ipv4", "diffserv"]
867 },
868 {
869 "type" : "field",
870 "value" : ["ipv4", "total_len"]
871 },
872 {
873 "type" : "field",
874 "value" : ["ipv4", "identification"]
875 },
876 {
877 "type" : "field",
878 "value" : ["ipv4", "flags"]
879 },
880 {
881 "type" : "field",
882 "value" : ["ipv4", "frag_offset"]
883 },
884 {
885 "type" : "field",
886 "value" : ["ipv4", "ttl"]
887 },
888 {
889 "type" : "field",
890 "value" : ["ipv4", "protocol"]
891 },
892 {
893 "type" : "field",
894 "value" : ["ipv4", "src_addr"]
895 },
896 {
897 "type" : "field",
898 "value" : ["ipv4", "dst_addr"]
899 }
900 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700901 }
902 ],
903 "learn_lists" : [],
904 "actions" : [
905 {
906 "name" : "nop",
907 "id" : 0,
908 "runtime_data" : [],
909 "primitives" : []
910 },
911 {
912 "name" : "nop",
913 "id" : 1,
914 "runtime_data" : [],
915 "primitives" : []
916 },
917 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800918 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -0700919 "id" : 2,
920 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800921 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700922 },
923 {
Yi Tseng1d842672017-11-28 16:06:52 -0800924 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -0700925 "id" : 3,
926 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800927 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -0700928 },
929 {
930 "name" : "NoAction",
931 "id" : 4,
932 "runtime_data" : [],
933 "primitives" : []
934 },
935 {
936 "name" : "NoAction",
937 "id" : 5,
938 "runtime_data" : [],
939 "primitives" : []
940 },
941 {
942 "name" : "NoAction",
943 "id" : 6,
944 "runtime_data" : [],
945 "primitives" : []
946 },
947 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800948 "name" : "NoAction",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800949 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700950 "runtime_data" : [],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800951 "primitives" : []
952 },
953 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000954 "name" : "NoAction",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200955 "id" : 8,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800956 "runtime_data" : [],
Esin Karaman971fb7f2017-12-28 13:44:52 +0000957 "primitives" : []
958 },
959 {
960 "name" : "FabricIngress.filtering.drop",
961 "id" : 9,
962 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -0800963 "primitives" : [
964 {
965 "op" : "drop",
966 "parameters" : [],
967 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200968 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800969 "line" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -0800970 "column" : 8,
971 "source_fragment" : "mark_to_drop()"
972 }
973 }
974 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700975 },
976 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800977 "name" : "FabricIngress.filtering.set_vlan",
Esin Karaman971fb7f2017-12-28 13:44:52 +0000978 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700979 "runtime_data" : [
980 {
981 "name" : "new_vlan_id",
982 "bitwidth" : 12
983 }
984 ],
985 "primitives" : [
986 {
987 "op" : "assign",
988 "parameters" : [
989 {
990 "type" : "field",
991 "value" : ["vlan_tag", "vlan_id"]
992 },
993 {
994 "type" : "runtime_data",
995 "value" : 0
996 }
997 ],
998 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200999 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001000 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001001 "column" : 8,
1002 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1003 }
1004 }
1005 ]
1006 },
1007 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001008 "name" : "FabricIngress.filtering.push_internal_vlan",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001009 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07001010 "runtime_data" : [
1011 {
1012 "name" : "new_vlan_id",
1013 "bitwidth" : 12
1014 }
1015 ],
1016 "primitives" : [
1017 {
1018 "op" : "add_header",
1019 "parameters" : [
1020 {
1021 "type" : "header",
1022 "value" : "vlan_tag"
1023 }
1024 ],
1025 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001026 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001027 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001028 "column" : 8,
1029 "source_fragment" : "hdr.vlan_tag.setValid()"
1030 }
1031 },
1032 {
1033 "op" : "assign",
1034 "parameters" : [
1035 {
1036 "type" : "field",
1037 "value" : ["vlan_tag", "cfi"]
1038 },
1039 {
1040 "type" : "hexstr",
1041 "value" : "0x00"
1042 }
1043 ],
1044 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001045 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001046 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001047 "column" : 8,
1048 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1049 }
1050 },
1051 {
1052 "op" : "assign",
1053 "parameters" : [
1054 {
1055 "type" : "field",
1056 "value" : ["vlan_tag", "pri"]
1057 },
1058 {
1059 "type" : "hexstr",
1060 "value" : "0x00"
1061 }
1062 ],
1063 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001064 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001065 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001066 "column" : 8,
1067 "source_fragment" : "hdr.vlan_tag.pri = 0"
1068 }
1069 },
1070 {
1071 "op" : "assign",
1072 "parameters" : [
1073 {
1074 "type" : "field",
1075 "value" : ["vlan_tag", "ether_type"]
1076 },
1077 {
Yi Tseng1d842672017-11-28 16:06:52 -08001078 "type" : "field",
1079 "value" : ["ethernet", "ether_type"]
1080 }
1081 ],
1082 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001083 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001084 "line" : 44,
Yi Tseng1d842672017-11-28 16:06:52 -08001085 "column" : 8,
1086 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1087 }
1088 },
1089 {
1090 "op" : "assign",
1091 "parameters" : [
1092 {
1093 "type" : "field",
1094 "value" : ["ethernet", "ether_type"]
1095 },
1096 {
Yi Tsengbe342052017-11-03 10:21:23 -07001097 "type" : "hexstr",
1098 "value" : "0x8100"
1099 }
1100 ],
1101 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001102 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02001103 "line" : 66,
Yi Tsengbe342052017-11-03 10:21:23 -07001104 "column" : 31,
1105 "source_fragment" : "0x8100; ..."
1106 }
1107 },
1108 {
1109 "op" : "assign",
1110 "parameters" : [
1111 {
1112 "type" : "field",
1113 "value" : ["vlan_tag", "vlan_id"]
1114 },
1115 {
1116 "type" : "runtime_data",
1117 "value" : 0
1118 }
1119 ],
1120 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001121 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001122 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001123 "column" : 8,
1124 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1125 }
1126 },
1127 {
1128 "op" : "assign",
1129 "parameters" : [
1130 {
1131 "type" : "field",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001132 "value" : ["scalars", "fabric_metadata_t.pop_vlan_when_packet_in"]
Yi Tsengbe342052017-11-03 10:21:23 -07001133 },
1134 {
1135 "type" : "expression",
1136 "value" : {
1137 "type" : "expression",
1138 "value" : {
1139 "op" : "b2d",
1140 "left" : null,
1141 "right" : {
1142 "type" : "bool",
1143 "value" : true
1144 }
1145 }
1146 }
1147 }
1148 ],
1149 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001150 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001151 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001152 "column" : 8,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001153 "source_fragment" : "fabric_metadata.pop_vlan_when_packet_in = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001154 }
1155 }
1156 ]
1157 },
1158 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001159 "name" : "FabricIngress.filtering.set_forwarding_type",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001160 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001161 "runtime_data" : [
1162 {
1163 "name" : "fwd_type",
1164 "bitwidth" : 3
1165 }
1166 ],
1167 "primitives" : [
1168 {
1169 "op" : "assign",
1170 "parameters" : [
1171 {
1172 "type" : "field",
1173 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1174 },
1175 {
1176 "type" : "runtime_data",
1177 "value" : 0
1178 }
1179 ],
1180 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001181 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001182 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07001183 "column" : 8,
1184 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1185 }
1186 }
1187 ]
1188 },
1189 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001190 "name" : "FabricIngress.forwarding.drop",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001191 "id" : 13,
Yi Tseng1d842672017-11-28 16:06:52 -08001192 "runtime_data" : [],
1193 "primitives" : [
1194 {
1195 "op" : "drop",
1196 "parameters" : [],
1197 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001198 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001199 "line" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08001200 "column" : 8,
1201 "source_fragment" : "mark_to_drop()"
1202 }
1203 }
1204 ]
1205 },
1206 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001207 "name" : "FabricIngress.forwarding.set_next_id",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001208 "id" : 14,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001209 "runtime_data" : [
1210 {
1211 "name" : "next_id",
1212 "bitwidth" : 32
1213 }
1214 ],
1215 "primitives" : [
1216 {
1217 "op" : "assign",
1218 "parameters" : [
1219 {
1220 "type" : "field",
1221 "value" : ["scalars", "fabric_metadata_t.next_id"]
1222 },
1223 {
1224 "type" : "runtime_data",
1225 "value" : 0
1226 }
1227 ],
1228 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001229 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001230 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001231 "column" : 8,
1232 "source_fragment" : "fabric_metadata.next_id = next_id"
1233 }
1234 }
1235 ]
1236 },
1237 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001238 "name" : "FabricIngress.forwarding.set_next_id",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001239 "id" : 15,
Yi Tseng27b9bc02018-04-12 14:52:40 +08001240 "runtime_data" : [
1241 {
1242 "name" : "next_id",
1243 "bitwidth" : 32
1244 }
1245 ],
1246 "primitives" : [
1247 {
1248 "op" : "assign",
1249 "parameters" : [
1250 {
1251 "type" : "field",
1252 "value" : ["scalars", "fabric_metadata_t.next_id"]
1253 },
1254 {
1255 "type" : "runtime_data",
1256 "value" : 0
1257 }
1258 ],
1259 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001260 "filename" : "include/control/forwarding.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001261 "line" : 40,
1262 "column" : 8,
1263 "source_fragment" : "fabric_metadata.next_id = next_id"
1264 }
1265 }
1266 ]
1267 },
1268 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001269 "name" : "FabricIngress.forwarding.set_next_id",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001270 "id" : 16,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001271 "runtime_data" : [
1272 {
1273 "name" : "next_id",
1274 "bitwidth" : 32
1275 }
1276 ],
1277 "primitives" : [
1278 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001279 "op" : "assign",
1280 "parameters" : [
1281 {
1282 "type" : "field",
1283 "value" : ["scalars", "fabric_metadata_t.next_id"]
1284 },
1285 {
1286 "type" : "runtime_data",
1287 "value" : 0
1288 }
1289 ],
1290 "source_info" : {
1291 "filename" : "include/control/forwarding.p4",
1292 "line" : 40,
1293 "column" : 8,
1294 "source_fragment" : "fabric_metadata.next_id = next_id"
1295 }
1296 }
1297 ]
1298 },
1299 {
1300 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
1301 "id" : 17,
1302 "runtime_data" : [
1303 {
1304 "name" : "next_id",
1305 "bitwidth" : 32
1306 }
1307 ],
1308 "primitives" : [
1309 {
Yi Tsengbe342052017-11-03 10:21:23 -07001310 "op" : "remove_header",
1311 "parameters" : [
1312 {
1313 "type" : "header",
1314 "value" : "mpls"
1315 }
1316 ],
1317 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001318 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001319 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07001320 "column" : 8,
1321 "source_fragment" : "hdr.mpls.setInvalid()"
1322 }
1323 },
1324 {
1325 "op" : "assign",
1326 "parameters" : [
1327 {
1328 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001329 "value" : ["scalars", "fabric_metadata_t.next_id"]
1330 },
1331 {
1332 "type" : "runtime_data",
1333 "value" : 0
1334 }
1335 ],
1336 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001337 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001338 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001339 "column" : 8,
1340 "source_fragment" : "fabric_metadata.next_id = next_id"
1341 }
1342 }
1343 ]
1344 },
1345 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001346 "name" : "FabricIngress.forwarding.duplicate_to_controller",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001347 "id" : 18,
Yi Tsengbe342052017-11-03 10:21:23 -07001348 "runtime_data" : [],
1349 "primitives" : [
1350 {
1351 "op" : "assign",
1352 "parameters" : [
1353 {
1354 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001355 "value" : ["standard_metadata", "egress_spec"]
1356 },
1357 {
1358 "type" : "hexstr",
1359 "value" : "0x00ff"
1360 }
1361 ],
1362 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001363 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001364 "line" : 49,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001365 "column" : 8,
1366 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001367 }
1368 }
1369 ]
1370 },
1371 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001372 "name" : "FabricIngress.next.output",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001373 "id" : 19,
Yi Tsengbe342052017-11-03 10:21:23 -07001374 "runtime_data" : [
1375 {
1376 "name" : "port_num",
1377 "bitwidth" : 9
1378 }
1379 ],
1380 "primitives" : [
1381 {
1382 "op" : "assign",
1383 "parameters" : [
1384 {
1385 "type" : "field",
1386 "value" : ["standard_metadata", "egress_spec"]
1387 },
1388 {
1389 "type" : "runtime_data",
1390 "value" : 0
1391 }
1392 ],
1393 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001394 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001395 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001396 "column" : 8,
1397 "source_fragment" : "standard_metadata.egress_spec = port_num"
1398 }
Yi Tsengbe342052017-11-03 10:21:23 -07001399 }
1400 ]
1401 },
1402 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001403 "name" : "FabricIngress.next.set_vlan",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001404 "id" : 20,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001405 "runtime_data" : [
1406 {
1407 "name" : "new_vlan_id",
1408 "bitwidth" : 12
1409 }
1410 ],
1411 "primitives" : [
1412 {
1413 "op" : "assign",
1414 "parameters" : [
1415 {
1416 "type" : "field",
1417 "value" : ["vlan_tag", "vlan_id"]
1418 },
1419 {
1420 "type" : "runtime_data",
1421 "value" : 0
1422 }
1423 ],
1424 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001425 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001426 "line" : 37,
1427 "column" : 8,
1428 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1429 }
1430 }
1431 ]
1432 },
1433 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001434 "name" : "FabricIngress.next.set_vlan_output",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001435 "id" : 21,
Yi Tsengbe342052017-11-03 10:21:23 -07001436 "runtime_data" : [
1437 {
1438 "name" : "new_vlan_id",
1439 "bitwidth" : 12
1440 },
1441 {
1442 "name" : "port_num",
1443 "bitwidth" : 9
1444 }
1445 ],
1446 "primitives" : [
1447 {
1448 "op" : "assign",
1449 "parameters" : [
1450 {
1451 "type" : "field",
1452 "value" : ["vlan_tag", "vlan_id"]
1453 },
1454 {
1455 "type" : "runtime_data",
1456 "value" : 0
1457 }
1458 ],
1459 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001460 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001461 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07001462 "column" : 8,
1463 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1464 }
1465 },
1466 {
1467 "op" : "assign",
1468 "parameters" : [
1469 {
1470 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001471 "value" : ["standard_metadata", "egress_spec"]
1472 },
1473 {
1474 "type" : "runtime_data",
1475 "value" : 1
1476 }
1477 ],
1478 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001479 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001480 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001481 "column" : 8,
1482 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1483 }
Yi Tsengbe342052017-11-03 10:21:23 -07001484 }
1485 ]
1486 },
1487 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001488 "name" : "FabricIngress.next.l3_routing",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001489 "id" : 22,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001490 "runtime_data" : [
1491 {
1492 "name" : "port_num",
1493 "bitwidth" : 9
1494 },
1495 {
1496 "name" : "smac",
1497 "bitwidth" : 48
1498 },
1499 {
1500 "name" : "dmac",
1501 "bitwidth" : 48
1502 }
1503 ],
1504 "primitives" : [
1505 {
1506 "op" : "assign",
1507 "parameters" : [
1508 {
1509 "type" : "field",
1510 "value" : ["ethernet", "src_addr"]
1511 },
1512 {
1513 "type" : "runtime_data",
1514 "value" : 1
1515 }
1516 ],
1517 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001518 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001519 "line" : 51,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001520 "column" : 8,
1521 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1522 }
1523 },
1524 {
1525 "op" : "assign",
1526 "parameters" : [
1527 {
1528 "type" : "field",
1529 "value" : ["ethernet", "dst_addr"]
1530 },
1531 {
1532 "type" : "runtime_data",
1533 "value" : 2
1534 }
1535 ],
1536 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001537 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001538 "line" : 55,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001539 "column" : 8,
1540 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1541 }
1542 },
1543 {
1544 "op" : "assign",
1545 "parameters" : [
1546 {
1547 "type" : "field",
1548 "value" : ["standard_metadata", "egress_spec"]
1549 },
1550 {
1551 "type" : "runtime_data",
1552 "value" : 0
1553 }
1554 ],
1555 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001556 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001557 "line" : 33,
1558 "column" : 8,
1559 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1560 }
1561 }
1562 ]
1563 },
1564 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001565 "name" : "FabricIngress.next.l3_routing",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001566 "id" : 23,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001567 "runtime_data" : [
1568 {
1569 "name" : "port_num",
1570 "bitwidth" : 9
1571 },
1572 {
1573 "name" : "smac",
1574 "bitwidth" : 48
1575 },
1576 {
1577 "name" : "dmac",
1578 "bitwidth" : 48
Esin Karaman971fb7f2017-12-28 13:44:52 +00001579 }
1580 ],
1581 "primitives" : [
1582 {
1583 "op" : "assign",
1584 "parameters" : [
1585 {
1586 "type" : "field",
1587 "value" : ["ethernet", "src_addr"]
1588 },
1589 {
1590 "type" : "runtime_data",
1591 "value" : 1
1592 }
1593 ],
1594 "source_info" : {
1595 "filename" : "include/control/next.p4",
1596 "line" : 51,
1597 "column" : 8,
1598 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1599 }
1600 },
1601 {
1602 "op" : "assign",
1603 "parameters" : [
1604 {
1605 "type" : "field",
1606 "value" : ["ethernet", "dst_addr"]
1607 },
1608 {
1609 "type" : "runtime_data",
1610 "value" : 2
1611 }
1612 ],
1613 "source_info" : {
1614 "filename" : "include/control/next.p4",
1615 "line" : 55,
1616 "column" : 8,
1617 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1618 }
1619 },
1620 {
1621 "op" : "assign",
1622 "parameters" : [
1623 {
1624 "type" : "field",
1625 "value" : ["standard_metadata", "egress_spec"]
1626 },
1627 {
1628 "type" : "runtime_data",
1629 "value" : 0
1630 }
1631 ],
1632 "source_info" : {
1633 "filename" : "include/control/next.p4",
1634 "line" : 33,
1635 "column" : 8,
1636 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1637 }
1638 }
1639 ]
1640 },
1641 {
1642 "name" : "FabricIngress.next.l3_routing_vlan",
1643 "id" : 24,
1644 "runtime_data" : [
1645 {
1646 "name" : "port_num",
1647 "bitwidth" : 9
1648 },
1649 {
1650 "name" : "smac",
1651 "bitwidth" : 48
1652 },
1653 {
1654 "name" : "dmac",
1655 "bitwidth" : 48
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001656 },
1657 {
1658 "name" : "new_vlan_id",
1659 "bitwidth" : 12
1660 }
1661 ],
1662 "primitives" : [
1663 {
1664 "op" : "assign",
1665 "parameters" : [
1666 {
1667 "type" : "field",
1668 "value" : ["ethernet", "src_addr"]
1669 },
1670 {
1671 "type" : "runtime_data",
1672 "value" : 1
1673 }
1674 ],
1675 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001676 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001677 "line" : 51,
1678 "column" : 8,
1679 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1680 }
1681 },
1682 {
1683 "op" : "assign",
1684 "parameters" : [
1685 {
1686 "type" : "field",
1687 "value" : ["ethernet", "dst_addr"]
1688 },
1689 {
1690 "type" : "runtime_data",
1691 "value" : 2
1692 }
1693 ],
1694 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001695 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001696 "line" : 55,
1697 "column" : 8,
1698 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1699 }
1700 },
1701 {
1702 "op" : "assign",
1703 "parameters" : [
1704 {
1705 "type" : "field",
1706 "value" : ["vlan_tag", "vlan_id"]
1707 },
1708 {
1709 "type" : "runtime_data",
1710 "value" : 3
1711 }
1712 ],
1713 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001714 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001715 "line" : 46,
1716 "column" : 8,
1717 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1718 }
1719 },
1720 {
1721 "op" : "assign",
1722 "parameters" : [
1723 {
1724 "type" : "field",
1725 "value" : ["standard_metadata", "egress_spec"]
1726 },
1727 {
1728 "type" : "runtime_data",
1729 "value" : 0
1730 }
1731 ],
1732 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001733 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001734 "line" : 33,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001735 "column" : 8,
1736 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1737 }
1738 }
1739 ]
1740 },
1741 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001742 "name" : "FabricIngress.next.mpls_routing_v4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001743 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001744 "runtime_data" : [
1745 {
1746 "name" : "port_num",
1747 "bitwidth" : 9
1748 },
1749 {
1750 "name" : "smac",
1751 "bitwidth" : 48
1752 },
1753 {
1754 "name" : "dmac",
1755 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001756 },
1757 {
1758 "name" : "label",
1759 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001760 }
1761 ],
1762 "primitives" : [
1763 {
1764 "op" : "assign",
1765 "parameters" : [
1766 {
1767 "type" : "field",
1768 "value" : ["ethernet", "src_addr"]
1769 },
1770 {
1771 "type" : "runtime_data",
1772 "value" : 1
1773 }
1774 ],
1775 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001776 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001777 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07001778 "column" : 8,
1779 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1780 }
1781 },
1782 {
1783 "op" : "assign",
1784 "parameters" : [
1785 {
1786 "type" : "field",
1787 "value" : ["ethernet", "dst_addr"]
1788 },
1789 {
1790 "type" : "runtime_data",
1791 "value" : 2
1792 }
1793 ],
1794 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001795 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001796 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07001797 "column" : 8,
1798 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1799 }
1800 },
1801 {
1802 "op" : "assign",
1803 "parameters" : [
1804 {
1805 "type" : "field",
1806 "value" : ["standard_metadata", "egress_spec"]
1807 },
1808 {
1809 "type" : "runtime_data",
1810 "value" : 0
1811 }
1812 ],
1813 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001814 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001815 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07001816 "column" : 8,
1817 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1818 }
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001819 },
1820 {
1821 "op" : "add_header",
1822 "parameters" : [
1823 {
1824 "type" : "header",
1825 "value" : "mpls"
1826 }
1827 ],
1828 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001829 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001830 "line" : 72,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001831 "column" : 8,
1832 "source_fragment" : "hdr.mpls.setValid()"
1833 }
1834 },
1835 {
1836 "op" : "assign",
1837 "parameters" : [
1838 {
1839 "type" : "field",
1840 "value" : ["vlan_tag", "ether_type"]
1841 },
1842 {
1843 "type" : "hexstr",
1844 "value" : "0x8847"
1845 }
1846 ],
1847 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001848 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02001849 "line" : 67,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001850 "column" : 31,
1851 "source_fragment" : "0x8847; ..."
1852 }
1853 },
1854 {
1855 "op" : "assign",
1856 "parameters" : [
1857 {
1858 "type" : "field",
1859 "value" : ["mpls", "label"]
1860 },
1861 {
1862 "type" : "runtime_data",
1863 "value" : 3
1864 }
1865 ],
1866 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001867 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001868 "line" : 74,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001869 "column" : 8,
1870 "source_fragment" : "hdr.mpls.label = label; ..."
1871 }
1872 },
1873 {
1874 "op" : "assign",
1875 "parameters" : [
1876 {
1877 "type" : "field",
1878 "value" : ["mpls", "tc"]
1879 },
1880 {
1881 "type" : "hexstr",
1882 "value" : "0x00"
1883 }
1884 ],
1885 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001886 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001887 "line" : 75,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001888 "column" : 8,
1889 "source_fragment" : "hdr.mpls.tc = tc; ..."
1890 }
1891 },
1892 {
1893 "op" : "assign",
1894 "parameters" : [
1895 {
1896 "type" : "field",
1897 "value" : ["mpls", "bos"]
1898 },
1899 {
1900 "type" : "hexstr",
1901 "value" : "0x01"
1902 }
1903 ],
1904 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001905 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001906 "line" : 76,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001907 "column" : 8,
1908 "source_fragment" : "hdr.mpls.bos = 1w1"
1909 }
1910 },
1911 {
1912 "op" : "assign",
1913 "parameters" : [
1914 {
1915 "type" : "field",
1916 "value" : ["mpls", "ttl"]
1917 },
1918 {
1919 "type" : "hexstr",
1920 "value" : "0x40"
1921 }
1922 ],
1923 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001924 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02001925 "line" : 87,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001926 "column" : 32,
1927 "source_fragment" : "64; ..."
1928 }
Yi Tsengbe342052017-11-03 10:21:23 -07001929 }
1930 ]
1931 },
1932 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001933 "name" : "FabricIngress.next.mpls_routing_v4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001934 "id" : 26,
Yi Tsengbe342052017-11-03 10:21:23 -07001935 "runtime_data" : [
1936 {
1937 "name" : "port_num",
1938 "bitwidth" : 9
1939 },
1940 {
1941 "name" : "smac",
1942 "bitwidth" : 48
1943 },
1944 {
1945 "name" : "dmac",
1946 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001947 },
1948 {
1949 "name" : "label",
1950 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001951 }
1952 ],
1953 "primitives" : [
1954 {
1955 "op" : "assign",
1956 "parameters" : [
1957 {
1958 "type" : "field",
1959 "value" : ["ethernet", "src_addr"]
1960 },
1961 {
1962 "type" : "runtime_data",
1963 "value" : 1
1964 }
1965 ],
1966 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001967 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001968 "line" : 51,
Yi Tsengbe342052017-11-03 10:21:23 -07001969 "column" : 8,
1970 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1971 }
1972 },
1973 {
1974 "op" : "assign",
1975 "parameters" : [
1976 {
1977 "type" : "field",
1978 "value" : ["ethernet", "dst_addr"]
1979 },
1980 {
1981 "type" : "runtime_data",
1982 "value" : 2
1983 }
1984 ],
1985 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001986 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001987 "line" : 55,
Yi Tsengbe342052017-11-03 10:21:23 -07001988 "column" : 8,
1989 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1990 }
1991 },
1992 {
1993 "op" : "assign",
1994 "parameters" : [
1995 {
1996 "type" : "field",
1997 "value" : ["standard_metadata", "egress_spec"]
1998 },
1999 {
2000 "type" : "runtime_data",
2001 "value" : 0
2002 }
2003 ],
2004 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002005 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002006 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002007 "column" : 8,
2008 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2009 }
Yi Tsengbe342052017-11-03 10:21:23 -07002010 },
2011 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002012 "op" : "add_header",
Yi Tsengbe342052017-11-03 10:21:23 -07002013 "parameters" : [
2014 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002015 "type" : "header",
2016 "value" : "mpls"
Yi Tsengbe342052017-11-03 10:21:23 -07002017 }
2018 ],
2019 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002020 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002021 "line" : 72,
Yi Tsengbe342052017-11-03 10:21:23 -07002022 "column" : 8,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002023 "source_fragment" : "hdr.mpls.setValid()"
2024 }
2025 },
2026 {
2027 "op" : "assign",
2028 "parameters" : [
2029 {
2030 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002031 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08002032 },
2033 {
2034 "type" : "hexstr",
2035 "value" : "0x8847"
2036 }
2037 ],
2038 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002039 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02002040 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002041 "column" : 31,
2042 "source_fragment" : "0x8847; ..."
2043 }
2044 },
2045 {
2046 "op" : "assign",
2047 "parameters" : [
2048 {
2049 "type" : "field",
2050 "value" : ["mpls", "label"]
2051 },
2052 {
2053 "type" : "runtime_data",
2054 "value" : 3
2055 }
2056 ],
2057 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002058 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002059 "line" : 74,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002060 "column" : 8,
2061 "source_fragment" : "hdr.mpls.label = label; ..."
2062 }
2063 },
2064 {
2065 "op" : "assign",
2066 "parameters" : [
2067 {
2068 "type" : "field",
2069 "value" : ["mpls", "tc"]
2070 },
2071 {
Yi Tseng1d842672017-11-28 16:06:52 -08002072 "type" : "hexstr",
2073 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002074 }
2075 ],
2076 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002077 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002078 "line" : 75,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002079 "column" : 8,
2080 "source_fragment" : "hdr.mpls.tc = tc; ..."
2081 }
2082 },
2083 {
2084 "op" : "assign",
2085 "parameters" : [
2086 {
2087 "type" : "field",
2088 "value" : ["mpls", "bos"]
2089 },
2090 {
2091 "type" : "hexstr",
2092 "value" : "0x01"
2093 }
2094 ],
2095 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002096 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002097 "line" : 76,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002098 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002099 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002100 }
2101 },
2102 {
2103 "op" : "assign",
2104 "parameters" : [
2105 {
2106 "type" : "field",
2107 "value" : ["mpls", "ttl"]
2108 },
2109 {
2110 "type" : "hexstr",
2111 "value" : "0x40"
2112 }
2113 ],
2114 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002115 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02002116 "line" : 87,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002117 "column" : 32,
2118 "source_fragment" : "64; ..."
2119 }
2120 }
2121 ]
2122 },
2123 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00002124 "name" : "FabricIngress.next.mpls_routing_v6",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002125 "id" : 27,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002126 "runtime_data" : [
2127 {
2128 "name" : "port_num",
2129 "bitwidth" : 9
2130 },
2131 {
2132 "name" : "smac",
2133 "bitwidth" : 48
2134 },
2135 {
2136 "name" : "dmac",
2137 "bitwidth" : 48
2138 },
2139 {
2140 "name" : "label",
2141 "bitwidth" : 20
2142 }
2143 ],
2144 "primitives" : [
2145 {
2146 "op" : "assign",
2147 "parameters" : [
2148 {
2149 "type" : "field",
2150 "value" : ["ethernet", "src_addr"]
2151 },
2152 {
2153 "type" : "runtime_data",
2154 "value" : 1
2155 }
2156 ],
2157 "source_info" : {
2158 "filename" : "include/control/next.p4",
2159 "line" : 51,
2160 "column" : 8,
2161 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2162 }
2163 },
2164 {
2165 "op" : "assign",
2166 "parameters" : [
2167 {
2168 "type" : "field",
2169 "value" : ["ethernet", "dst_addr"]
2170 },
2171 {
2172 "type" : "runtime_data",
2173 "value" : 2
2174 }
2175 ],
2176 "source_info" : {
2177 "filename" : "include/control/next.p4",
2178 "line" : 55,
2179 "column" : 8,
2180 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2181 }
2182 },
2183 {
2184 "op" : "assign",
2185 "parameters" : [
2186 {
2187 "type" : "field",
2188 "value" : ["standard_metadata", "egress_spec"]
2189 },
2190 {
2191 "type" : "runtime_data",
2192 "value" : 0
2193 }
2194 ],
2195 "source_info" : {
2196 "filename" : "include/control/next.p4",
2197 "line" : 33,
2198 "column" : 8,
2199 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2200 }
2201 },
2202 {
2203 "op" : "add_header",
2204 "parameters" : [
2205 {
2206 "type" : "header",
2207 "value" : "mpls"
2208 }
2209 ],
2210 "source_info" : {
2211 "filename" : "include/control/next.p4",
2212 "line" : 72,
2213 "column" : 8,
2214 "source_fragment" : "hdr.mpls.setValid()"
2215 }
2216 },
2217 {
2218 "op" : "assign",
2219 "parameters" : [
2220 {
2221 "type" : "field",
2222 "value" : ["vlan_tag", "ether_type"]
2223 },
2224 {
2225 "type" : "hexstr",
2226 "value" : "0x8847"
2227 }
2228 ],
2229 "source_info" : {
2230 "filename" : "include/control/../define.p4",
2231 "line" : 67,
2232 "column" : 31,
2233 "source_fragment" : "0x8847; ..."
2234 }
2235 },
2236 {
2237 "op" : "assign",
2238 "parameters" : [
2239 {
2240 "type" : "field",
2241 "value" : ["mpls", "label"]
2242 },
2243 {
2244 "type" : "runtime_data",
2245 "value" : 3
2246 }
2247 ],
2248 "source_info" : {
2249 "filename" : "include/control/next.p4",
2250 "line" : 74,
2251 "column" : 8,
2252 "source_fragment" : "hdr.mpls.label = label; ..."
2253 }
2254 },
2255 {
2256 "op" : "assign",
2257 "parameters" : [
2258 {
2259 "type" : "field",
2260 "value" : ["mpls", "tc"]
2261 },
2262 {
2263 "type" : "hexstr",
2264 "value" : "0x00"
2265 }
2266 ],
2267 "source_info" : {
2268 "filename" : "include/control/next.p4",
2269 "line" : 75,
2270 "column" : 8,
2271 "source_fragment" : "hdr.mpls.tc = tc; ..."
2272 }
2273 },
2274 {
2275 "op" : "assign",
2276 "parameters" : [
2277 {
2278 "type" : "field",
2279 "value" : ["mpls", "bos"]
2280 },
2281 {
2282 "type" : "hexstr",
2283 "value" : "0x01"
2284 }
2285 ],
2286 "source_info" : {
2287 "filename" : "include/control/next.p4",
2288 "line" : 76,
2289 "column" : 8,
2290 "source_fragment" : "hdr.mpls.bos = 1w1"
2291 }
2292 },
2293 {
2294 "op" : "assign",
2295 "parameters" : [
2296 {
2297 "type" : "field",
2298 "value" : ["mpls", "ttl"]
2299 },
2300 {
2301 "type" : "hexstr",
2302 "value" : "0x40"
2303 }
2304 ],
2305 "source_info" : {
2306 "filename" : "include/control/../define.p4",
2307 "line" : 87,
2308 "column" : 32,
2309 "source_fragment" : "64; ..."
2310 }
2311 }
2312 ]
2313 },
2314 {
2315 "name" : "FabricIngress.next.set_mcast_group",
2316 "id" : 28,
2317 "runtime_data" : [
2318 {
2319 "name" : "gid",
2320 "bitwidth" : 16
2321 }
2322 ],
2323 "primitives" : [
2324 {
2325 "op" : "assign",
2326 "parameters" : [
2327 {
2328 "type" : "field",
2329 "value" : ["standard_metadata", "mcast_grp"]
2330 },
2331 {
2332 "type" : "runtime_data",
2333 "value" : 0
2334 }
2335 ],
2336 "source_info" : {
2337 "filename" : "include/control/next.p4",
2338 "line" : 148,
2339 "column" : 8,
2340 "source_fragment" : "standard_metadata.mcast_grp = gid"
2341 }
2342 }
2343 ]
2344 },
2345 {
2346 "name" : "act",
2347 "id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002348 "runtime_data" : [],
2349 "primitives" : [
2350 {
2351 "op" : "assign",
2352 "parameters" : [
2353 {
2354 "type" : "field",
2355 "value" : ["standard_metadata", "egress_spec"]
2356 },
2357 {
2358 "type" : "field",
2359 "value" : ["packet_out", "egress_port"]
2360 }
2361 ],
2362 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002363 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002364 "line" : 26,
2365 "column" : 12,
2366 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2367 }
Yi Tseng1d842672017-11-28 16:06:52 -08002368 },
2369 {
2370 "op" : "remove_header",
2371 "parameters" : [
2372 {
2373 "type" : "header",
2374 "value" : "packet_out"
2375 }
2376 ],
2377 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002378 "filename" : "include/control/packetio.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002379 "line" : 27,
2380 "column" : 12,
2381 "source_fragment" : "hdr.packet_out.setInvalid()"
2382 }
Yi Tsengbe342052017-11-03 10:21:23 -07002383 }
2384 ]
2385 },
2386 {
2387 "name" : "act_0",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002388 "id" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07002389 "runtime_data" : [],
2390 "primitives" : [
2391 {
2392 "op" : "assign",
2393 "parameters" : [
2394 {
2395 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002396 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002397 },
2398 {
2399 "type" : "hexstr",
2400 "value" : "0x0800"
2401 }
2402 ],
2403 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002404 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02002405 "line" : 69,
Yi Tseng1d842672017-11-28 16:06:52 -08002406 "column" : 31,
2407 "source_fragment" : "0x0800; ..."
2408 }
2409 },
2410 {
2411 "op" : "assign",
2412 "parameters" : [
2413 {
2414 "type" : "field",
2415 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2416 },
2417 {
2418 "type" : "hexstr",
2419 "value" : "0x0800"
2420 }
2421 ],
2422 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002423 "filename" : "include/control/../define.p4",
Carmelo Cascone228092b2018-06-15 20:41:10 +02002424 "line" : 69,
Yi Tseng1d842672017-11-28 16:06:52 -08002425 "column" : 31,
2426 "source_fragment" : "0x0800; ..."
2427 }
2428 }
2429 ]
2430 },
2431 {
2432 "name" : "act_1",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002433 "id" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -08002434 "runtime_data" : [],
2435 "primitives" : [
2436 {
2437 "op" : "assign",
2438 "parameters" : [
2439 {
2440 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002441 "value" : ["scalars", "next_tmp_0"]
2442 },
2443 {
2444 "type" : "expression",
2445 "value" : {
2446 "type" : "expression",
2447 "value" : {
2448 "op" : "b2d",
2449 "left" : null,
2450 "right" : {
2451 "type" : "bool",
2452 "value" : true
2453 }
2454 }
2455 }
2456 }
2457 ]
2458 }
2459 ]
2460 },
2461 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002462 "name" : "act_2",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002463 "id" : 32,
Yi Tseng1d842672017-11-28 16:06:52 -08002464 "runtime_data" : [],
2465 "primitives" : [
2466 {
2467 "op" : "assign",
2468 "parameters" : [
2469 {
2470 "type" : "field",
2471 "value" : ["scalars", "next_tmp_0"]
2472 },
2473 {
2474 "type" : "expression",
2475 "value" : {
2476 "type" : "expression",
2477 "value" : {
2478 "op" : "b2d",
2479 "left" : null,
2480 "right" : {
2481 "type" : "bool",
2482 "value" : false
2483 }
2484 }
2485 }
2486 }
2487 ]
2488 }
2489 ]
2490 },
2491 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002492 "name" : "act_3",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002493 "id" : 33,
Yi Tseng1d842672017-11-28 16:06:52 -08002494 "runtime_data" : [],
2495 "primitives" : [
2496 {
2497 "op" : "assign",
2498 "parameters" : [
2499 {
2500 "type" : "field",
2501 "value" : ["ipv4", "ttl"]
2502 },
2503 {
2504 "type" : "expression",
2505 "value" : {
2506 "type" : "expression",
2507 "value" : {
2508 "op" : "&",
2509 "left" : {
2510 "type" : "expression",
2511 "value" : {
2512 "op" : "+",
2513 "left" : {
2514 "type" : "field",
2515 "value" : ["ipv4", "ttl"]
2516 },
2517 "right" : {
2518 "type" : "hexstr",
2519 "value" : "0xff"
2520 }
2521 }
2522 },
2523 "right" : {
2524 "type" : "hexstr",
2525 "value" : "0xff"
2526 }
2527 }
2528 }
2529 }
2530 ],
2531 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002532 "filename" : "include/control/next.p4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002533 "line" : 168,
Yi Tseng1d842672017-11-28 16:06:52 -08002534 "column" : 20,
2535 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2536 }
2537 }
2538 ]
2539 },
2540 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002541 "name" : "act_4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002542 "id" : 34,
Yi Tseng1d842672017-11-28 16:06:52 -08002543 "runtime_data" : [],
2544 "primitives" : [
2545 {
2546 "op" : "assign",
2547 "parameters" : [
2548 {
2549 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002550 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002551 },
2552 {
2553 "type" : "expression",
2554 "value" : {
2555 "type" : "expression",
2556 "value" : {
2557 "op" : "&",
2558 "left" : {
2559 "type" : "field",
2560 "value" : ["standard_metadata", "egress_spec"]
2561 },
2562 "right" : {
2563 "type" : "hexstr",
2564 "value" : "0xffffffff"
2565 }
2566 }
2567 }
2568 }
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002569 ],
2570 "source_info" : {
2571 "filename" : "include/control/port_counter.p4",
2572 "line" : 28,
2573 "column" : 38,
2574 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2575 }
Yi Tsengbe342052017-11-03 10:21:23 -07002576 },
2577 {
2578 "op" : "count",
2579 "parameters" : [
2580 {
2581 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002582 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07002583 },
2584 {
2585 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002586 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002587 }
2588 ],
2589 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002590 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002591 "line" : 28,
2592 "column" : 12,
2593 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2594 }
2595 }
2596 ]
2597 },
2598 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002599 "name" : "act_5",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002600 "id" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07002601 "runtime_data" : [],
2602 "primitives" : [
2603 {
2604 "op" : "assign",
2605 "parameters" : [
2606 {
2607 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002608 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002609 },
2610 {
2611 "type" : "expression",
2612 "value" : {
2613 "type" : "expression",
2614 "value" : {
2615 "op" : "&",
2616 "left" : {
2617 "type" : "field",
2618 "value" : ["standard_metadata", "ingress_port"]
2619 },
2620 "right" : {
2621 "type" : "hexstr",
2622 "value" : "0xffffffff"
2623 }
2624 }
2625 }
2626 }
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002627 ],
2628 "source_info" : {
2629 "filename" : "include/control/port_counter.p4",
2630 "line" : 31,
2631 "column" : 39,
2632 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
2633 }
Yi Tsengbe342052017-11-03 10:21:23 -07002634 },
2635 {
2636 "op" : "count",
2637 "parameters" : [
2638 {
2639 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002640 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07002641 },
2642 {
2643 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002644 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002645 }
2646 ],
2647 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002648 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002649 "line" : 31,
2650 "column" : 12,
2651 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2652 }
2653 }
2654 ]
2655 },
2656 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002657 "name" : "nop",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002658 "id" : 36,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002659 "runtime_data" : [],
2660 "primitives" : []
2661 },
2662 {
2663 "name" : "FabricEgress.pkt_io_egress.pop_vlan",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002664 "id" : 37,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002665 "runtime_data" : [],
2666 "primitives" : [
2667 {
2668 "op" : "assign",
2669 "parameters" : [
2670 {
2671 "type" : "field",
2672 "value" : ["ethernet", "ether_type"]
2673 },
2674 {
2675 "type" : "field",
2676 "value" : ["vlan_tag", "ether_type"]
2677 }
2678 ],
2679 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002680 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002681 "line" : 38,
2682 "column" : 8,
2683 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
2684 }
2685 },
2686 {
2687 "op" : "remove_header",
2688 "parameters" : [
2689 {
2690 "type" : "header",
2691 "value" : "vlan_tag"
2692 }
2693 ],
2694 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002695 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002696 "line" : 39,
2697 "column" : 8,
2698 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2699 }
2700 }
2701 ]
2702 },
2703 {
2704 "name" : "FabricEgress.egress_next.pop_vlan",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002705 "id" : 38,
Yi Tseng1d842672017-11-28 16:06:52 -08002706 "runtime_data" : [],
2707 "primitives" : [
2708 {
2709 "op" : "assign",
2710 "parameters" : [
2711 {
2712 "type" : "field",
2713 "value" : ["ethernet", "ether_type"]
2714 },
2715 {
2716 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002717 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002718 }
2719 ],
2720 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002721 "filename" : "include/control/next.p4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002722 "line" : 188,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002723 "column" : 8,
Yi Tsengbd46d052018-01-22 17:18:16 -08002724 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
Yi Tseng1d842672017-11-28 16:06:52 -08002725 }
Yi Tsengbd46d052018-01-22 17:18:16 -08002726 },
Yi Tsengbe342052017-11-03 10:21:23 -07002727 {
2728 "op" : "remove_header",
2729 "parameters" : [
2730 {
2731 "type" : "header",
2732 "value" : "vlan_tag"
2733 }
2734 ],
2735 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002736 "filename" : "include/control/next.p4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002737 "line" : 189,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002738 "column" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07002739 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2740 }
2741 }
2742 ]
2743 },
2744 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002745 "name" : "act_6",
Esin Karaman971fb7f2017-12-28 13:44:52 +00002746 "id" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07002747 "runtime_data" : [],
2748 "primitives" : [
2749 {
2750 "op" : "add_header",
2751 "parameters" : [
2752 {
2753 "type" : "header",
2754 "value" : "packet_in"
2755 }
2756 ],
2757 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002758 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002759 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002760 "column" : 12,
2761 "source_fragment" : "hdr.packet_in.setValid()"
2762 }
2763 },
2764 {
2765 "op" : "assign",
2766 "parameters" : [
2767 {
2768 "type" : "field",
2769 "value" : ["packet_in", "ingress_port"]
2770 },
2771 {
2772 "type" : "field",
2773 "value" : ["standard_metadata", "ingress_port"]
2774 }
2775 ],
2776 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002777 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002778 "line" : 47,
Yi Tsengbe342052017-11-03 10:21:23 -07002779 "column" : 12,
2780 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2781 }
2782 }
2783 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002784 }
2785 ],
2786 "pipelines" : [
2787 {
2788 "name" : "ingress",
2789 "id" : 0,
2790 "source_info" : {
2791 "filename" : "fabric.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002792 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002793 "column" : 8,
2794 "source_fragment" : "FabricIngress"
2795 },
2796 "init_table" : "node_2",
2797 "tables" : [
2798 {
2799 "name" : "tbl_act",
2800 "id" : 0,
2801 "key" : [],
2802 "match_type" : "exact",
2803 "type" : "simple",
2804 "max_size" : 1024,
2805 "with_counters" : false,
2806 "support_timeout" : false,
2807 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002808 "action_ids" : [29],
Yi Tsengbe342052017-11-03 10:21:23 -07002809 "actions" : ["act"],
2810 "base_default_next" : null,
2811 "next_tables" : {
2812 "act" : null
2813 },
2814 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00002815 "action_id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002816 "action_const" : true,
2817 "action_data" : [],
2818 "action_entry_const" : true
2819 }
2820 },
2821 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002822 "name" : "FabricIngress.filtering.ingress_port_vlan",
Yi Tsengbe342052017-11-03 10:21:23 -07002823 "id" : 1,
2824 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002825 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002826 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07002827 "column" : 10,
2828 "source_fragment" : "ingress_port_vlan"
2829 },
2830 "key" : [
2831 {
2832 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002833 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002834 "target" : ["standard_metadata", "ingress_port"],
2835 "mask" : null
2836 },
2837 {
2838 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002839 "name" : "hdr.vlan_tag.is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07002840 "target" : ["vlan_tag", "$valid$"],
2841 "mask" : null
2842 },
2843 {
2844 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002845 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002846 "target" : ["vlan_tag", "vlan_id"],
2847 "mask" : null
2848 }
2849 ],
2850 "match_type" : "ternary",
2851 "type" : "simple",
2852 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002853 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002854 "support_timeout" : false,
2855 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002856 "action_ids" : [11, 10, 0, 9],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002857 "actions" : ["FabricIngress.filtering.push_internal_vlan", "FabricIngress.filtering.set_vlan", "nop", "FabricIngress.filtering.drop"],
2858 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002859 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002860 "FabricIngress.filtering.push_internal_vlan" : "FabricIngress.filtering.fwd_classifier",
2861 "FabricIngress.filtering.set_vlan" : "FabricIngress.filtering.fwd_classifier",
2862 "nop" : "FabricIngress.filtering.fwd_classifier",
2863 "FabricIngress.filtering.drop" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002864 },
2865 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002866 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07002867 "action_const" : true,
2868 "action_data" : [],
2869 "action_entry_const" : true
2870 }
2871 },
2872 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002873 "name" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002874 "id" : 2,
2875 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002876 "filename" : "include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002877 "line" : 76,
Yi Tsengbe342052017-11-03 10:21:23 -07002878 "column" : 10,
2879 "source_fragment" : "fwd_classifier"
2880 },
2881 "key" : [
2882 {
2883 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002884 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002885 "target" : ["standard_metadata", "ingress_port"],
2886 "mask" : null
2887 },
2888 {
2889 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002890 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07002891 "target" : ["ethernet", "dst_addr"],
2892 "mask" : null
2893 },
2894 {
2895 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002896 "name" : "fabric_metadata.original_ether_type",
Yi Tseng1d842672017-11-28 16:06:52 -08002897 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002898 "mask" : null
2899 }
2900 ],
2901 "match_type" : "exact",
2902 "type" : "simple",
2903 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002904 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002905 "support_timeout" : false,
2906 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002907 "action_ids" : [12],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002908 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002909 "base_default_next" : "node_6",
2910 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002911 "FabricIngress.filtering.set_forwarding_type" : "node_6"
Yi Tsengbe342052017-11-03 10:21:23 -07002912 },
2913 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00002914 "action_id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07002915 "action_const" : true,
2916 "action_data" : ["0x0"],
2917 "action_entry_const" : true
2918 }
2919 },
2920 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002921 "name" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07002922 "id" : 3,
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" : 52,
Yi Tsengbe342052017-11-03 10:21:23 -07002926 "column" : 10,
2927 "source_fragment" : "bridging"
2928 },
2929 "key" : [
2930 {
2931 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002932 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002933 "target" : ["vlan_tag", "vlan_id"],
2934 "mask" : null
2935 },
2936 {
2937 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002938 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07002939 "target" : ["ethernet", "dst_addr"],
2940 "mask" : null
2941 }
2942 ],
2943 "match_type" : "ternary",
2944 "type" : "simple",
2945 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002946 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002947 "support_timeout" : false,
2948 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002949 "action_ids" : [14, 3],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002950 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
2951 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08002952 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002953 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
2954 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08002955 },
2956 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002957 "action_id" : 3,
Yi Tseng1d842672017-11-28 16:06:52 -08002958 "action_const" : false,
2959 "action_data" : [],
2960 "action_entry_const" : false
2961 }
2962 },
2963 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002964 "name" : "FabricIngress.forwarding.mpls",
Yi Tseng1d842672017-11-28 16:06:52 -08002965 "id" : 4,
2966 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02002967 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002968 "line" : 64,
Yi Tseng1d842672017-11-28 16:06:52 -08002969 "column" : 10,
2970 "source_fragment" : "mpls"
2971 },
2972 "key" : [
2973 {
2974 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002975 "name" : "hdr.mpls.label",
Yi Tseng1d842672017-11-28 16:06:52 -08002976 "target" : ["mpls", "label"],
2977 "mask" : null
2978 }
2979 ],
2980 "match_type" : "exact",
2981 "type" : "simple",
2982 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002983 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08002984 "support_timeout" : false,
2985 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00002986 "action_ids" : [17, 4],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002987 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08002988 "base_default_next" : "tbl_act_0",
Yi Tseng1d842672017-11-28 16:06:52 -08002989 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002990 "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_act_0",
Yi Tsengbd46d052018-01-22 17:18:16 -08002991 "NoAction" : "tbl_act_0"
Yi Tseng1d842672017-11-28 16:06:52 -08002992 },
2993 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08002994 "action_id" : 4,
Yi Tseng1d842672017-11-28 16:06:52 -08002995 "action_const" : false,
2996 "action_data" : [],
2997 "action_entry_const" : false
2998 }
2999 },
3000 {
3001 "name" : "tbl_act_0",
3002 "id" : 5,
3003 "key" : [],
3004 "match_type" : "exact",
3005 "type" : "simple",
3006 "max_size" : 1024,
3007 "with_counters" : false,
3008 "support_timeout" : false,
3009 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003010 "action_ids" : [30],
Yi Tseng1d842672017-11-28 16:06:52 -08003011 "actions" : ["act_0"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003012 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003013 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003014 "act_0" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003015 },
3016 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003017 "action_id" : 30,
Yi Tseng1d842672017-11-28 16:06:52 -08003018 "action_const" : true,
3019 "action_data" : [],
3020 "action_entry_const" : true
3021 }
3022 },
3023 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003024 "name" : "FabricIngress.forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003025 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003026 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003027 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003028 "line" : 75,
Yi Tseng1d842672017-11-28 16:06:52 -08003029 "column" : 10,
3030 "source_fragment" : "unicast_v4"
3031 },
3032 "key" : [
3033 {
3034 "match_type" : "lpm",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003035 "name" : "hdr.ipv4.dst_addr",
Yi Tseng1d842672017-11-28 16:06:52 -08003036 "target" : ["ipv4", "dst_addr"],
3037 "mask" : null
3038 }
3039 ],
3040 "match_type" : "lpm",
3041 "type" : "simple",
3042 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003043 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003044 "support_timeout" : false,
3045 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003046 "action_ids" : [15, 5],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003047 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
3048 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003049 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003050 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
3051 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003052 },
3053 "default_entry" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003054 "action_id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003055 "action_const" : false,
3056 "action_data" : [],
3057 "action_entry_const" : false
3058 }
3059 },
3060 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003061 "name" : "FabricIngress.forwarding.acl",
Yi Tsengbd46d052018-01-22 17:18:16 -08003062 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003063 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003064 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003065 "line" : 133,
Yi Tsengbe342052017-11-03 10:21:23 -07003066 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003067 "source_fragment" : "acl"
3068 },
3069 "key" : [
3070 {
3071 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003072 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003073 "target" : ["standard_metadata", "ingress_port"],
3074 "mask" : null
3075 },
3076 {
3077 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003078 "name" : "fabric_metadata.ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003079 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3080 "mask" : null
3081 },
3082 {
3083 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003084 "name" : "fabric_metadata.l4_src_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003085 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3086 "mask" : null
3087 },
3088 {
3089 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003090 "name" : "fabric_metadata.l4_dst_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003091 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3092 "mask" : null
3093 },
3094 {
3095 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003096 "name" : "fabric_metadata.original_ether_type",
Yi Tsengc6844f52017-12-19 11:58:25 -08003097 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
3098 "mask" : null
3099 },
3100 {
3101 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003102 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003103 "target" : ["ethernet", "dst_addr"],
3104 "mask" : null
3105 },
3106 {
3107 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003108 "name" : "hdr.ethernet.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003109 "target" : ["ethernet", "src_addr"],
3110 "mask" : null
3111 },
3112 {
3113 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003114 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003115 "target" : ["vlan_tag", "vlan_id"],
3116 "mask" : null
3117 },
3118 {
3119 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003120 "name" : "hdr.ipv4.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003121 "target" : ["ipv4", "src_addr"],
3122 "mask" : null
3123 },
3124 {
3125 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003126 "name" : "hdr.ipv4.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003127 "target" : ["ipv4", "dst_addr"],
3128 "mask" : null
3129 },
3130 {
3131 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003132 "name" : "hdr.icmp.icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003133 "target" : ["icmp", "icmp_type"],
3134 "mask" : null
3135 },
3136 {
3137 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003138 "name" : "hdr.icmp.icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003139 "target" : ["icmp", "icmp_code"],
3140 "mask" : null
3141 }
3142 ],
3143 "match_type" : "ternary",
3144 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003145 "max_size" : 256,
Yi Tsengbd46d052018-01-22 17:18:16 -08003146 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003147 "support_timeout" : false,
3148 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003149 "action_ids" : [16, 18, 13, 1],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003150 "actions" : ["FabricIngress.forwarding.set_next_id", "FabricIngress.forwarding.duplicate_to_controller", "FabricIngress.forwarding.drop", "nop"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003151 "base_default_next" : "FabricIngress.next.vlan_meta",
Yi Tsengbe342052017-11-03 10:21:23 -07003152 "next_tables" : {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003153 "FabricIngress.forwarding.set_next_id" : "FabricIngress.next.vlan_meta",
3154 "FabricIngress.forwarding.duplicate_to_controller" : "FabricIngress.next.vlan_meta",
3155 "FabricIngress.forwarding.drop" : "FabricIngress.next.vlan_meta",
3156 "nop" : "FabricIngress.next.vlan_meta"
Yi Tsengbe342052017-11-03 10:21:23 -07003157 },
3158 "default_entry" : {
3159 "action_id" : 1,
3160 "action_const" : true,
3161 "action_data" : [],
3162 "action_entry_const" : true
3163 }
3164 },
3165 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003166 "name" : "FabricIngress.next.vlan_meta",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003167 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003168 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003169 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003170 "line" : 96,
3171 "column" : 10,
3172 "source_fragment" : "vlan_meta"
3173 },
3174 "key" : [
3175 {
3176 "match_type" : "exact",
3177 "name" : "fabric_metadata.next_id",
3178 "target" : ["scalars", "fabric_metadata_t.next_id"],
3179 "mask" : null
3180 }
3181 ],
3182 "match_type" : "exact",
3183 "type" : "simple",
3184 "max_size" : 1024,
3185 "with_counters" : true,
3186 "support_timeout" : false,
3187 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003188 "action_ids" : [20, 2],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003189 "actions" : ["FabricIngress.next.set_vlan", "nop"],
3190 "base_default_next" : "FabricIngress.next.simple",
3191 "next_tables" : {
3192 "FabricIngress.next.set_vlan" : "FabricIngress.next.simple",
3193 "nop" : "FabricIngress.next.simple"
3194 },
3195 "default_entry" : {
3196 "action_id" : 2,
3197 "action_const" : false,
3198 "action_data" : [],
3199 "action_entry_const" : false
3200 }
3201 },
3202 {
3203 "name" : "FabricIngress.next.simple",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003204 "id" : 9,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003205 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003206 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003207 "line" : 109,
Yi Tsengbe342052017-11-03 10:21:23 -07003208 "column" : 10,
3209 "source_fragment" : "simple"
3210 },
3211 "key" : [
3212 {
3213 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003214 "name" : "fabric_metadata.next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003215 "target" : ["scalars", "fabric_metadata_t.next_id"],
3216 "mask" : null
3217 }
3218 ],
3219 "match_type" : "exact",
3220 "type" : "simple",
3221 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003222 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003223 "support_timeout" : false,
3224 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003225 "action_ids" : [19, 21, 22, 25, 24, 6],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003226 "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 -08003227 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003228 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003229 "__HIT__" : "tbl_act_1",
3230 "__MISS__" : "tbl_act_2"
Yi Tsengbe342052017-11-03 10:21:23 -07003231 },
3232 "default_entry" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003233 "action_id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003234 "action_const" : false,
3235 "action_data" : [],
3236 "action_entry_const" : false
3237 }
3238 },
3239 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003240 "name" : "tbl_act_1",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003241 "id" : 10,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003242 "key" : [],
3243 "match_type" : "exact",
3244 "type" : "simple",
3245 "max_size" : 1024,
3246 "with_counters" : false,
3247 "support_timeout" : false,
3248 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003249 "action_ids" : [31],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003250 "actions" : ["act_1"],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003251 "base_default_next" : "node_18",
Yi Tsengbe342052017-11-03 10:21:23 -07003252 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003253 "act_1" : "node_18"
Yi Tsengbe342052017-11-03 10:21:23 -07003254 },
3255 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003256 "action_id" : 31,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003257 "action_const" : true,
3258 "action_data" : [],
3259 "action_entry_const" : true
3260 }
3261 },
3262 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003263 "name" : "tbl_act_2",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003264 "id" : 11,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003265 "key" : [],
3266 "match_type" : "exact",
3267 "type" : "simple",
3268 "max_size" : 1024,
3269 "with_counters" : false,
3270 "support_timeout" : false,
3271 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003272 "action_ids" : [32],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003273 "actions" : ["act_2"],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003274 "base_default_next" : "node_18",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003275 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003276 "act_2" : "node_18"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003277 },
3278 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003279 "action_id" : 32,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003280 "action_const" : true,
3281 "action_data" : [],
3282 "action_entry_const" : true
3283 }
3284 },
3285 {
3286 "name" : "tbl_act_3",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003287 "id" : 12,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003288 "key" : [],
3289 "match_type" : "exact",
3290 "type" : "simple",
3291 "max_size" : 1024,
3292 "with_counters" : false,
3293 "support_timeout" : false,
3294 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003295 "action_ids" : [33],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003296 "actions" : ["act_3"],
3297 "base_default_next" : "FabricIngress.next.hashed",
3298 "next_tables" : {
3299 "act_3" : "FabricIngress.next.hashed"
3300 },
3301 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003302 "action_id" : 33,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003303 "action_const" : true,
3304 "action_data" : [],
3305 "action_entry_const" : true
3306 }
3307 },
3308 {
3309 "name" : "FabricIngress.next.hashed",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003310 "id" : 13,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003311 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003312 "filename" : "include/control/next.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003313 "line" : 124,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003314 "column" : 10,
3315 "source_fragment" : "hashed"
3316 },
3317 "key" : [
3318 {
3319 "match_type" : "exact",
3320 "name" : "fabric_metadata.next_id",
3321 "target" : ["scalars", "fabric_metadata_t.next_id"],
3322 "mask" : null
3323 }
3324 ],
3325 "match_type" : "exact",
3326 "type" : "indirect_ws",
3327 "action_profile" : "FabricIngress.next.ecmp_selector",
3328 "max_size" : 1024,
3329 "with_counters" : true,
3330 "support_timeout" : false,
3331 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003332 "action_ids" : [23, 26, 27, 7],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003333 "actions" : ["FabricIngress.next.l3_routing", "FabricIngress.next.mpls_routing_v4", "FabricIngress.next.mpls_routing_v6", "NoAction"],
Esin Karaman971fb7f2017-12-28 13:44:52 +00003334 "base_default_next" : "FabricIngress.next.multicast",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003335 "next_tables" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003336 "FabricIngress.next.l3_routing" : "FabricIngress.next.multicast",
3337 "FabricIngress.next.mpls_routing_v4" : "FabricIngress.next.multicast",
3338 "FabricIngress.next.mpls_routing_v6" : "FabricIngress.next.multicast",
3339 "NoAction" : "FabricIngress.next.multicast"
3340 }
3341 },
3342 {
3343 "name" : "FabricIngress.next.multicast",
3344 "id" : 14,
3345 "source_info" : {
3346 "filename" : "include/control/next.p4",
3347 "line" : 153,
3348 "column" : 10,
3349 "source_fragment" : "multicast"
3350 },
3351 "key" : [
3352 {
3353 "match_type" : "exact",
3354 "name" : "fabric_metadata.next_id",
3355 "target" : ["scalars", "fabric_metadata_t.next_id"],
3356 "mask" : null
3357 }
3358 ],
3359 "match_type" : "exact",
3360 "type" : "simple",
3361 "max_size" : 1024,
3362 "with_counters" : true,
3363 "support_timeout" : false,
3364 "direct_meters" : null,
3365 "action_ids" : [28, 8],
3366 "actions" : ["FabricIngress.next.set_mcast_group", "NoAction"],
3367 "base_default_next" : "node_24",
3368 "next_tables" : {
3369 "FabricIngress.next.set_mcast_group" : "node_24",
3370 "NoAction" : "node_24"
3371 },
3372 "default_entry" : {
3373 "action_id" : 8,
3374 "action_const" : false,
3375 "action_data" : [],
3376 "action_entry_const" : false
Yi Tseng27b9bc02018-04-12 14:52:40 +08003377 }
3378 },
3379 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003380 "name" : "tbl_act_4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003381 "id" : 15,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003382 "key" : [],
3383 "match_type" : "exact",
3384 "type" : "simple",
3385 "max_size" : 1024,
3386 "with_counters" : false,
3387 "support_timeout" : false,
3388 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003389 "action_ids" : [34],
3390 "actions" : ["act_4"],
3391 "base_default_next" : "node_26",
3392 "next_tables" : {
3393 "act_4" : "node_26"
3394 },
3395 "default_entry" : {
3396 "action_id" : 34,
3397 "action_const" : true,
3398 "action_data" : [],
3399 "action_entry_const" : true
3400 }
3401 },
3402 {
3403 "name" : "tbl_act_5",
3404 "id" : 16,
3405 "key" : [],
3406 "match_type" : "exact",
3407 "type" : "simple",
3408 "max_size" : 1024,
3409 "with_counters" : false,
3410 "support_timeout" : false,
3411 "direct_meters" : null,
3412 "action_ids" : [35],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003413 "actions" : ["act_5"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003414 "base_default_next" : null,
3415 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003416 "act_5" : null
Yi Tseng27b9bc02018-04-12 14:52:40 +08003417 },
3418 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003419 "action_id" : 35,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003420 "action_const" : true,
3421 "action_data" : [],
3422 "action_entry_const" : true
3423 }
Yi Tsengbe342052017-11-03 10:21:23 -07003424 }
3425 ],
3426 "action_profiles" : [
3427 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003428 "name" : "FabricIngress.next.ecmp_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003429 "id" : 0,
3430 "max_size" : 64,
3431 "selector" : {
3432 "algo" : "crc16",
3433 "input" : [
3434 {
3435 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003436 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003437 },
3438 {
3439 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003440 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003441 },
3442 {
3443 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003444 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003445 },
3446 {
3447 "type" : "field",
3448 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3449 },
3450 {
3451 "type" : "field",
3452 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3453 }
3454 ]
3455 }
3456 }
3457 ],
3458 "conditionals" : [
3459 {
3460 "name" : "node_2",
3461 "id" : 0,
3462 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003463 "filename" : "include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003464 "line" : 25,
3465 "column" : 12,
3466 "source_fragment" : "hdr.packet_out.isValid()"
3467 },
3468 "expression" : {
3469 "type" : "expression",
3470 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003471 "op" : "d2b",
3472 "left" : null,
3473 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003474 "type" : "field",
3475 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003476 }
3477 }
3478 },
3479 "true_next" : "tbl_act",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003480 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Yi Tsengbe342052017-11-03 10:21:23 -07003481 },
3482 {
3483 "name" : "node_6",
3484 "id" : 1,
3485 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003486 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003487 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -07003488 "column" : 11,
3489 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3490 },
3491 "expression" : {
3492 "type" : "expression",
3493 "value" : {
3494 "op" : "==",
3495 "left" : {
3496 "type" : "field",
3497 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3498 },
3499 "right" : {
3500 "type" : "hexstr",
3501 "value" : "0x00"
3502 }
3503 }
3504 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003505 "true_next" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07003506 "false_next" : "node_8"
3507 },
3508 {
3509 "name" : "node_8",
3510 "id" : 2,
3511 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003512 "filename" : "include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003513 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -07003514 "column" : 17,
3515 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3516 },
3517 "expression" : {
3518 "type" : "expression",
3519 "value" : {
3520 "op" : "==",
3521 "left" : {
3522 "type" : "field",
3523 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3524 },
3525 "right" : {
3526 "type" : "hexstr",
3527 "value" : "0x01"
3528 }
3529 }
3530 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003531 "true_next" : "FabricIngress.forwarding.mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -08003532 "false_next" : "node_11"
Yi Tsengbe342052017-11-03 10:21:23 -07003533 },
3534 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003535 "name" : "node_11",
Yi Tsengbe342052017-11-03 10:21:23 -07003536 "id" : 3,
3537 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003538 "filename" : "include/control/forwarding.p4",
3539 "line" : 179,
Yi Tsengbe342052017-11-03 10:21:23 -07003540 "column" : 17,
3541 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3542 },
3543 "expression" : {
3544 "type" : "expression",
3545 "value" : {
3546 "op" : "==",
3547 "left" : {
3548 "type" : "field",
3549 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3550 },
3551 "right" : {
3552 "type" : "hexstr",
3553 "value" : "0x02"
3554 }
3555 }
3556 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003557 "true_next" : "FabricIngress.forwarding.unicast_v4",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003558 "false_next" : "FabricIngress.forwarding.acl"
3559 },
3560 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003561 "name" : "node_18",
3562 "id" : 4,
Yi Tseng1d842672017-11-28 16:06:52 -08003563 "expression" : {
3564 "type" : "expression",
3565 "value" : {
3566 "op" : "d2b",
3567 "left" : null,
3568 "right" : {
3569 "type" : "field",
3570 "value" : ["scalars", "next_tmp_0"]
3571 }
3572 }
3573 },
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003574 "true_next" : "node_19",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003575 "false_next" : "FabricIngress.next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003576 },
3577 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003578 "name" : "node_19",
3579 "id" : 5,
Yi Tseng1d842672017-11-28 16:06:52 -08003580 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003581 "filename" : "include/control/next.p4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00003582 "line" : 166,
Yi Tsengbd46d052018-01-22 17:18:16 -08003583 "column" : 16,
3584 "source_fragment" : "!hdr.mpls.isValid()"
Yi Tseng1d842672017-11-28 16:06:52 -08003585 },
3586 "expression" : {
3587 "type" : "expression",
3588 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003589 "op" : "not",
3590 "left" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003591 "right" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003592 "type" : "expression",
3593 "value" : {
3594 "op" : "d2b",
3595 "left" : null,
3596 "right" : {
3597 "type" : "field",
3598 "value" : ["mpls", "$valid$"]
3599 }
3600 }
Yi Tseng1d842672017-11-28 16:06:52 -08003601 }
3602 }
3603 },
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003604 "true_next" : "node_20",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003605 "false_next" : "FabricIngress.next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003606 },
3607 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003608 "name" : "node_20",
3609 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003610 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003611 "filename" : "include/control/next.p4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00003612 "line" : 167,
Yi Tseng1d842672017-11-28 16:06:52 -08003613 "column" : 19,
3614 "source_fragment" : "hdr.ipv4.isValid()"
3615 },
3616 "expression" : {
3617 "type" : "expression",
3618 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003619 "op" : "d2b",
3620 "left" : null,
3621 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003622 "type" : "field",
3623 "value" : ["ipv4", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08003624 }
3625 }
3626 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003627 "true_next" : "tbl_act_3",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003628 "false_next" : "FabricIngress.next.hashed"
3629 },
3630 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003631 "name" : "node_24",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003632 "id" : 7,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003633 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003634 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003635 "line" : 27,
3636 "column" : 12,
3637 "source_fragment" : "standard_metadata.egress_spec < 511"
3638 },
3639 "expression" : {
3640 "type" : "expression",
3641 "value" : {
3642 "op" : "<",
3643 "left" : {
3644 "type" : "field",
3645 "value" : ["standard_metadata", "egress_spec"]
3646 },
3647 "right" : {
3648 "type" : "hexstr",
3649 "value" : "0x01ff"
3650 }
3651 }
3652 },
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003653 "true_next" : "tbl_act_4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00003654 "false_next" : "node_26"
Yi Tsengbe342052017-11-03 10:21:23 -07003655 },
3656 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003657 "name" : "node_26",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003658 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003659 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003660 "filename" : "include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003661 "line" : 30,
3662 "column" : 12,
3663 "source_fragment" : "standard_metadata.ingress_port < 511"
3664 },
3665 "expression" : {
3666 "type" : "expression",
3667 "value" : {
3668 "op" : "<",
3669 "left" : {
3670 "type" : "field",
3671 "value" : ["standard_metadata", "ingress_port"]
3672 },
3673 "right" : {
3674 "type" : "hexstr",
3675 "value" : "0x01ff"
3676 }
3677 }
3678 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003679 "false_next" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003680 "true_next" : "tbl_act_5"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003681 }
3682 ]
3683 },
3684 {
3685 "name" : "egress",
3686 "id" : 1,
3687 "source_info" : {
3688 "filename" : "fabric.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003689 "line" : 61,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003690 "column" : 8,
3691 "source_fragment" : "FabricEgress"
3692 },
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003693 "init_table" : "FabricEgress.egress_next.egress_vlan",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003694 "tables" : [
3695 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003696 "name" : "FabricEgress.egress_next.egress_vlan",
Esin Karaman971fb7f2017-12-28 13:44:52 +00003697 "id" : 17,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003698 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003699 "filename" : "include/control/next.p4",
Esin Karaman971fb7f2017-12-28 13:44:52 +00003700 "line" : 192,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003701 "column" : 10,
3702 "source_fragment" : "egress_vlan"
3703 },
3704 "key" : [
3705 {
3706 "match_type" : "exact",
3707 "name" : "hdr.vlan_tag.vlan_id",
3708 "target" : ["vlan_tag", "vlan_id"],
3709 "mask" : null
3710 },
3711 {
3712 "match_type" : "exact",
3713 "name" : "standard_metadata.egress_port",
3714 "target" : ["standard_metadata", "egress_port"],
3715 "mask" : null
3716 }
3717 ],
3718 "match_type" : "exact",
3719 "type" : "simple",
3720 "max_size" : 1024,
3721 "with_counters" : false,
3722 "support_timeout" : false,
3723 "direct_meters" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003724 "action_ids" : [38, 36],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003725 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Esin Karaman971fb7f2017-12-28 13:44:52 +00003726 "base_default_next" : "node_31",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003727 "next_tables" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003728 "FabricEgress.egress_next.pop_vlan" : "node_31",
3729 "nop" : "node_31"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003730 },
3731 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003732 "action_id" : 36,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003733 "action_const" : false,
3734 "action_data" : [],
3735 "action_entry_const" : false
3736 }
3737 },
3738 {
3739 "name" : "tbl_pkt_io_egress_pop_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003740 "id" : 18,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003741 "key" : [],
3742 "match_type" : "exact",
3743 "type" : "simple",
3744 "max_size" : 1024,
3745 "with_counters" : false,
3746 "support_timeout" : false,
3747 "direct_meters" : null,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003748 "action_ids" : [37],
Esin Karaman971fb7f2017-12-28 13:44:52 +00003749 "actions" : ["FabricEgress.pkt_io_egress.pop_vlan"],
3750 "base_default_next" : "tbl_act_6",
3751 "next_tables" : {
3752 "FabricEgress.pkt_io_egress.pop_vlan" : "tbl_act_6"
3753 },
3754 "default_entry" : {
3755 "action_id" : 37,
3756 "action_const" : true,
3757 "action_data" : [],
3758 "action_entry_const" : true
3759 }
3760 },
3761 {
3762 "name" : "tbl_act_6",
3763 "id" : 19,
3764 "key" : [],
3765 "match_type" : "exact",
3766 "type" : "simple",
3767 "max_size" : 1024,
3768 "with_counters" : false,
3769 "support_timeout" : false,
3770 "direct_meters" : null,
3771 "action_ids" : [39],
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003772 "actions" : ["act_6"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003773 "base_default_next" : null,
3774 "next_tables" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003775 "act_6" : null
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003776 },
3777 "default_entry" : {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003778 "action_id" : 39,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003779 "action_const" : true,
3780 "action_data" : [],
3781 "action_entry_const" : true
3782 }
3783 }
3784 ],
3785 "action_profiles" : [],
3786 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08003787 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003788 "name" : "node_31",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003789 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003790 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003791 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003792 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07003793 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08003794 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07003795 },
3796 "expression" : {
3797 "type" : "expression",
3798 "value" : {
3799 "op" : "==",
3800 "left" : {
3801 "type" : "field",
3802 "value" : ["standard_metadata", "egress_port"]
3803 },
3804 "right" : {
3805 "type" : "hexstr",
3806 "value" : "0x00ff"
3807 }
3808 }
3809 },
3810 "false_next" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003811 "true_next" : "node_32"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003812 },
3813 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00003814 "name" : "node_32",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003815 "id" : 10,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003816 "source_info" : {
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003817 "filename" : "include/control/packetio.p4",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003818 "line" : 43,
3819 "column" : 16,
Carmelo Cascone228092b2018-06-15 20:41:10 +02003820 "source_fragment" : "hdr.vlan_tag.isValid() && fabric_metadata.pop_vlan_when_packet_in == true"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003821 },
3822 "expression" : {
3823 "type" : "expression",
3824 "value" : {
3825 "op" : "and",
3826 "left" : {
3827 "type" : "expression",
3828 "value" : {
3829 "op" : "d2b",
3830 "left" : null,
3831 "right" : {
3832 "type" : "field",
3833 "value" : ["vlan_tag", "$valid$"]
3834 }
3835 }
3836 },
3837 "right" : {
3838 "type" : "expression",
3839 "value" : {
Carmelo Cascone228092b2018-06-15 20:41:10 +02003840 "op" : "==",
3841 "left" : {
3842 "type" : "expression",
3843 "value" : {
3844 "op" : "d2b",
3845 "left" : null,
3846 "right" : {
3847 "type" : "field",
3848 "value" : ["scalars", "fabric_metadata_t.pop_vlan_when_packet_in"]
3849 }
3850 }
3851 },
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003852 "right" : {
Carmelo Cascone228092b2018-06-15 20:41:10 +02003853 "type" : "bool",
3854 "value" : true
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003855 }
3856 }
3857 }
3858 }
3859 },
3860 "true_next" : "tbl_pkt_io_egress_pop_vlan",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003861 "false_next" : "tbl_act_6"
Yi Tsengbe342052017-11-03 10:21:23 -07003862 }
3863 ]
3864 }
3865 ],
3866 "checksums" : [
3867 {
3868 "name" : "cksum",
3869 "id" : 0,
3870 "target" : ["ipv4", "hdr_checksum"],
3871 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003872 "calculation" : "calc",
3873 "if_cond" : {
3874 "type" : "expression",
3875 "value" : {
3876 "op" : "d2b",
3877 "left" : null,
3878 "right" : {
3879 "type" : "field",
3880 "value" : ["ipv4", "$valid$"]
3881 }
3882 }
3883 }
Yi Tsengbe342052017-11-03 10:21:23 -07003884 },
3885 {
3886 "name" : "cksum_0",
3887 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07003888 "target" : ["ipv4", "hdr_checksum"],
3889 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08003890 "calculation" : "calc_0",
3891 "if_cond" : {
3892 "type" : "expression",
3893 "value" : {
3894 "op" : "d2b",
3895 "left" : null,
3896 "right" : {
3897 "type" : "field",
3898 "value" : ["ipv4", "$valid$"]
3899 }
3900 }
3901 }
Yi Tsengbe342052017-11-03 10:21:23 -07003902 }
3903 ],
3904 "force_arith" : [],
3905 "extern_instances" : [],
3906 "field_aliases" : [
3907 [
3908 "queueing_metadata.enq_timestamp",
3909 ["standard_metadata", "enq_timestamp"]
3910 ],
3911 [
3912 "queueing_metadata.enq_qdepth",
3913 ["standard_metadata", "enq_qdepth"]
3914 ],
3915 [
3916 "queueing_metadata.deq_timedelta",
3917 ["standard_metadata", "deq_timedelta"]
3918 ],
3919 [
3920 "queueing_metadata.deq_qdepth",
3921 ["standard_metadata", "deq_qdepth"]
3922 ],
3923 [
3924 "intrinsic_metadata.ingress_global_timestamp",
3925 ["standard_metadata", "ingress_global_timestamp"]
3926 ],
3927 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08003928 "intrinsic_metadata.egress_global_timestamp",
3929 ["standard_metadata", "egress_global_timestamp"]
3930 ],
3931 [
Yi Tsengbe342052017-11-03 10:21:23 -07003932 "intrinsic_metadata.lf_field_list",
3933 ["standard_metadata", "lf_field_list"]
3934 ],
3935 [
3936 "intrinsic_metadata.mcast_grp",
3937 ["standard_metadata", "mcast_grp"]
3938 ],
3939 [
3940 "intrinsic_metadata.resubmit_flag",
3941 ["standard_metadata", "resubmit_flag"]
3942 ],
3943 [
3944 "intrinsic_metadata.egress_rid",
3945 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08003946 ],
3947 [
3948 "intrinsic_metadata.recirculate_flag",
3949 ["standard_metadata", "recirculate_flag"]
Yi Tsengbe342052017-11-03 10:21:23 -07003950 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02003951 ],
3952 "program" : "fabric.p4",
3953 "__meta__" : {
3954 "version" : [2, 18],
3955 "compiler" : "https://github.com/p4lang/p4c"
3956 }
Yi Tsengbe342052017-11-03 10:21:23 -07003957}