blob: b1de92877176f6849f41bc769c9f9bae3ceed6c8 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tseng1d842672017-11-28 16:06:52 -08002 "program" : "p4c-out/bmv2/fabric.p4i",
Yi Tsengbe342052017-11-03 10:21:23 -07003 "__meta__" : {
4 "version" : [2, 7],
5 "compiler" : "https://github.com/p4lang/p4c"
6 },
7 "header_types" : [
8 {
9 "name" : "scalars_0",
10 "id" : 0,
11 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080012 ["tmp", 4, false],
13 ["tmp_0", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -070014 ["tmp_1", 32, false],
Yi Tseng1d842672017-11-28 16:06:52 -080015 ["next_tmp_0", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070016 ["fabric_metadata_t.fwd_type", 3, false],
17 ["fabric_metadata_t.next_id", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -070018 ["fabric_metadata_t.pop_vlan_at_egress", 1, false],
19 ["fabric_metadata_t.ip_proto", 8, false],
20 ["fabric_metadata_t.l4_src_port", 16, false],
Yi Tsengf55eaa82017-11-29 15:51:28 -080021 ["fabric_metadata_t.l4_dst_port", 16, false],
Yi Tseng1d842672017-11-28 16:06:52 -080022 ["fabric_metadata_t.original_ether_type", 16, false],
Yi Tsengc6844f52017-12-19 11:58:25 -080023 ["_padding_0", 7, false]
24 ]
25 },
26 {
27 "name" : "ethernet_t",
28 "id" : 1,
29 "fields" : [
30 ["dst_addr", 48, false],
31 ["src_addr", 48, false],
32 ["ether_type", 16, false]
33 ]
34 },
35 {
36 "name" : "vlan_tag_t",
37 "id" : 2,
38 "fields" : [
39 ["pri", 3, false],
40 ["cfi", 1, false],
41 ["vlan_id", 12, false],
42 ["ether_type", 16, false]
43 ]
44 },
45 {
46 "name" : "mpls_t",
47 "id" : 3,
48 "fields" : [
49 ["label", 20, false],
50 ["tc", 3, false],
51 ["bos", 1, false],
52 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070053 ]
54 },
55 {
56 "name" : "ipv4_t",
Yi Tsengc6844f52017-12-19 11:58:25 -080057 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -070058 "fields" : [
59 ["version", 4, false],
60 ["ihl", 4, false],
61 ["diffserv", 8, false],
62 ["total_len", 16, false],
63 ["identification", 16, false],
64 ["flags", 3, false],
65 ["frag_offset", 13, false],
66 ["ttl", 8, false],
67 ["protocol", 8, false],
68 ["hdr_checksum", 16, false],
69 ["src_addr", 32, false],
70 ["dst_addr", 32, false]
71 ]
72 },
73 {
Yi Tseng27b9bc02018-04-12 14:52:40 +080074 "name" : "ipv6_t",
Carmelo Casconeb531b682018-01-30 17:55:56 -080075 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -070076 "fields" : [
Yi Tseng27b9bc02018-04-12 14:52:40 +080077 ["version", 4, false],
78 ["traffic_class", 8, false],
79 ["flow_label", 20, false],
80 ["payload_len", 16, false],
81 ["next_hdr", 8, false],
82 ["hop_limit", 8, false],
83 ["src_addr", 128, false],
84 ["dst_addr", 128, false]
85 ]
86 },
87 {
88 "name" : "arp_t",
89 "id" : 6,
90 "fields" : [
Yi Tsengbe342052017-11-03 10:21:23 -070091 ["hw_type", 16, false],
92 ["proto_type", 16, false],
93 ["hw_addr_len", 8, false],
94 ["proto_addr_len", 8, false],
95 ["opcode", 16, false]
96 ]
97 },
98 {
99 "name" : "tcp_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800100 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700101 "fields" : [
102 ["src_port", 16, false],
103 ["dst_port", 16, false],
104 ["seq_no", 32, false],
105 ["ack_no", 32, false],
106 ["data_offset", 4, false],
107 ["res", 3, false],
108 ["ecn", 3, false],
109 ["ctrl", 6, false],
110 ["window", 16, false],
111 ["checksum", 16, false],
112 ["urgent_ptr", 16, false]
113 ]
114 },
115 {
116 "name" : "udp_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800117 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700118 "fields" : [
119 ["src_port", 16, false],
120 ["dst_port", 16, false],
121 ["len", 16, false],
122 ["checksum", 16, false]
123 ]
124 },
125 {
126 "name" : "icmp_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800127 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700128 "fields" : [
129 ["icmp_type", 8, false],
130 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800131 ["checksum", 16, false],
132 ["identifier", 16, false],
133 ["sequence_number", 16, false],
134 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700135 ]
136 },
137 {
138 "name" : "packet_out_header_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800139 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700140 "fields" : [
141 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800142 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700143 ]
144 },
145 {
146 "name" : "packet_in_header_t",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800147 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700148 "fields" : [
149 ["ingress_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" : "standard_metadata",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800155 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700156 "fields" : [
157 ["ingress_port", 9, false],
158 ["egress_spec", 9, false],
159 ["egress_port", 9, false],
160 ["clone_spec", 32, false],
161 ["instance_type", 32, false],
162 ["drop", 1, false],
163 ["recirculate_port", 16, false],
164 ["packet_length", 32, false],
165 ["enq_timestamp", 32, false],
166 ["enq_qdepth", 19, false],
167 ["deq_timedelta", 32, false],
168 ["deq_qdepth", 19, false],
169 ["ingress_global_timestamp", 48, false],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800170 ["egress_global_timestamp", 48, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700171 ["lf_field_list", 32, false],
172 ["mcast_grp", 16, false],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800173 ["resubmit_flag", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700174 ["egress_rid", 16, false],
175 ["checksum_error", 1, false],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800176 ["recirculate_flag", 32, false],
177 ["_padding", 5, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700178 ]
179 }
180 ],
181 "headers" : [
182 {
Yi Tsengbe342052017-11-03 10:21:23 -0700183 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800184 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700185 "header_type" : "scalars_0",
186 "metadata" : true,
187 "pi_omit" : true
188 },
189 {
190 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800191 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700192 "header_type" : "standard_metadata",
193 "metadata" : true,
194 "pi_omit" : true
195 },
196 {
197 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800198 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700199 "header_type" : "ethernet_t",
200 "metadata" : false,
201 "pi_omit" : true
202 },
203 {
204 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800205 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700206 "header_type" : "vlan_tag_t",
207 "metadata" : false,
208 "pi_omit" : true
209 },
210 {
Yi Tsengbe342052017-11-03 10:21:23 -0700211 "name" : "mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800212 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700213 "header_type" : "mpls_t",
214 "metadata" : false,
215 "pi_omit" : true
216 },
217 {
218 "name" : "ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800219 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700220 "header_type" : "ipv4_t",
221 "metadata" : false,
222 "pi_omit" : true
223 },
224 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800225 "name" : "ipv6",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800226 "id" : 6,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800227 "header_type" : "ipv6_t",
228 "metadata" : false,
229 "pi_omit" : true
230 },
231 {
232 "name" : "arp",
233 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700234 "header_type" : "arp_t",
235 "metadata" : false,
236 "pi_omit" : true
237 },
238 {
239 "name" : "tcp",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800240 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700241 "header_type" : "tcp_t",
242 "metadata" : false,
243 "pi_omit" : true
244 },
245 {
246 "name" : "udp",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800247 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700248 "header_type" : "udp_t",
249 "metadata" : false,
250 "pi_omit" : true
251 },
252 {
253 "name" : "icmp",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800254 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700255 "header_type" : "icmp_t",
256 "metadata" : false,
257 "pi_omit" : true
258 },
259 {
260 "name" : "packet_out",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800261 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700262 "header_type" : "packet_out_header_t",
263 "metadata" : false,
264 "pi_omit" : true
265 },
266 {
267 "name" : "packet_in",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800268 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700269 "header_type" : "packet_in_header_t",
270 "metadata" : false,
271 "pi_omit" : true
272 }
273 ],
274 "header_stacks" : [],
275 "header_union_types" : [],
276 "header_unions" : [],
277 "header_union_stacks" : [],
278 "field_lists" : [],
279 "errors" : [
Yi Tseng27b9bc02018-04-12 14:52:40 +0800280 ["NoError", 0],
281 ["PacketTooShort", 1],
282 ["NoMatch", 2],
283 ["StackOutOfBounds", 3],
284 ["HeaderTooShort", 4],
285 ["ParserTimeout", 5]
Yi Tsengbe342052017-11-03 10:21:23 -0700286 ],
287 "enums" : [],
288 "parsers" : [
289 {
290 "name" : "parser",
291 "id" : 0,
292 "init_state" : "start",
293 "parse_states" : [
294 {
295 "name" : "start",
296 "id" : 0,
297 "parser_ops" : [],
298 "transitions" : [
299 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800300 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700301 "value" : "0x00ff",
302 "mask" : null,
303 "next_state" : "parse_packet_out"
304 },
305 {
306 "value" : "default",
307 "mask" : null,
308 "next_state" : "parse_ethernet"
309 }
310 ],
311 "transition_key" : [
312 {
313 "type" : "field",
314 "value" : ["standard_metadata", "ingress_port"]
315 }
316 ]
317 },
318 {
319 "name" : "parse_packet_out",
320 "id" : 1,
321 "parser_ops" : [
322 {
323 "parameters" : [
324 {
325 "type" : "regular",
326 "value" : "packet_out"
327 }
328 ],
329 "op" : "extract"
330 }
331 ],
332 "transitions" : [
333 {
334 "value" : "default",
335 "mask" : null,
336 "next_state" : "parse_ethernet"
337 }
338 ],
339 "transition_key" : []
340 },
341 {
342 "name" : "parse_ethernet",
343 "id" : 2,
344 "parser_ops" : [
345 {
346 "parameters" : [
347 {
348 "type" : "regular",
349 "value" : "ethernet"
350 }
351 ],
352 "op" : "extract"
Yi Tseng1d842672017-11-28 16:06:52 -0800353 },
354 {
355 "parameters" : [
356 {
357 "type" : "field",
358 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
359 },
360 {
361 "type" : "field",
362 "value" : ["ethernet", "ether_type"]
363 }
364 ],
365 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700366 }
367 ],
368 "transitions" : [
369 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800370 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700371 "value" : "0x8100",
372 "mask" : null,
373 "next_state" : "parse_vlan_tag"
374 },
375 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800376 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700377 "value" : "0x8847",
378 "mask" : null,
379 "next_state" : "parse_mpls"
380 },
381 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800382 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700383 "value" : "0x0806",
384 "mask" : null,
385 "next_state" : "parse_arp"
386 },
387 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800388 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700389 "value" : "0x0800",
390 "mask" : null,
391 "next_state" : "parse_ipv4"
392 },
393 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800394 "type" : "hexstr",
395 "value" : "0x86dd",
396 "mask" : null,
397 "next_state" : "parse_ipv6"
398 },
399 {
Yi Tsengbe342052017-11-03 10:21:23 -0700400 "value" : "default",
401 "mask" : null,
402 "next_state" : null
403 }
404 ],
405 "transition_key" : [
406 {
407 "type" : "field",
408 "value" : ["ethernet", "ether_type"]
409 }
410 ]
411 },
412 {
413 "name" : "parse_vlan_tag",
414 "id" : 3,
415 "parser_ops" : [
416 {
417 "parameters" : [
418 {
419 "type" : "regular",
420 "value" : "vlan_tag"
421 }
422 ],
423 "op" : "extract"
424 }
425 ],
426 "transitions" : [
427 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800428 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700429 "value" : "0x0806",
430 "mask" : null,
431 "next_state" : "parse_arp"
432 },
433 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800434 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700435 "value" : "0x0800",
436 "mask" : null,
437 "next_state" : "parse_ipv4"
438 },
439 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800440 "type" : "hexstr",
441 "value" : "0x86dd",
442 "mask" : null,
443 "next_state" : "parse_ipv6"
444 },
445 {
446 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800447 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700448 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800449 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700450 },
451 {
452 "value" : "default",
453 "mask" : null,
454 "next_state" : null
455 }
456 ],
457 "transition_key" : [
458 {
459 "type" : "field",
460 "value" : ["vlan_tag", "ether_type"]
461 }
462 ]
463 },
464 {
465 "name" : "parse_mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -0800466 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -0700467 "parser_ops" : [
468 {
469 "parameters" : [
470 {
471 "type" : "regular",
472 "value" : "mpls"
473 }
474 ],
475 "op" : "extract"
476 },
477 {
478 "parameters" : [
479 {
480 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800481 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700482 },
483 {
484 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800485 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700486 }
487 ],
488 "op" : "set"
489 }
490 ],
491 "transitions" : [
492 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800493 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700494 "value" : "0x04",
495 "mask" : null,
496 "next_state" : "parse_ipv4"
497 },
498 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800499 "type" : "hexstr",
500 "value" : "0x06",
501 "mask" : null,
502 "next_state" : "parse_ipv6"
503 },
504 {
Yi Tsengbe342052017-11-03 10:21:23 -0700505 "value" : "default",
506 "mask" : null,
507 "next_state" : "parse_ethernet"
508 }
509 ],
510 "transition_key" : [
511 {
512 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -0800513 "value" : ["scalars", "tmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700514 }
515 ]
516 },
517 {
518 "name" : "parse_ipv4",
Yi Tsengbd46d052018-01-22 17:18:16 -0800519 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700520 "parser_ops" : [
521 {
522 "parameters" : [
523 {
524 "type" : "regular",
525 "value" : "ipv4"
526 }
527 ],
528 "op" : "extract"
529 },
530 {
531 "parameters" : [
532 {
533 "type" : "field",
534 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
535 },
536 {
537 "type" : "field",
538 "value" : ["ipv4", "protocol"]
539 }
540 ],
541 "op" : "set"
542 }
543 ],
544 "transitions" : [
545 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800546 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700547 "value" : "0x06",
548 "mask" : null,
549 "next_state" : "parse_tcp"
550 },
551 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800552 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700553 "value" : "0x11",
554 "mask" : null,
555 "next_state" : "parse_udp"
556 },
557 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800558 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700559 "value" : "0x01",
560 "mask" : null,
561 "next_state" : "parse_icmp"
562 },
563 {
564 "value" : "default",
565 "mask" : null,
566 "next_state" : null
567 }
568 ],
569 "transition_key" : [
570 {
571 "type" : "field",
572 "value" : ["ipv4", "protocol"]
573 }
574 ]
575 },
576 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800577 "name" : "parse_ipv6",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800578 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700579 "parser_ops" : [
580 {
581 "parameters" : [
582 {
583 "type" : "regular",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800584 "value" : "ipv6"
585 }
586 ],
587 "op" : "extract"
588 },
589 {
590 "parameters" : [
591 {
592 "type" : "field",
593 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
594 },
595 {
596 "type" : "field",
597 "value" : ["ipv6", "next_hdr"]
598 }
599 ],
600 "op" : "set"
601 }
602 ],
603 "transitions" : [
604 {
605 "type" : "hexstr",
606 "value" : "0x06",
607 "mask" : null,
608 "next_state" : "parse_tcp"
609 },
610 {
611 "type" : "hexstr",
612 "value" : "0x11",
613 "mask" : null,
614 "next_state" : "parse_udp"
615 },
616 {
617 "type" : "hexstr",
618 "value" : "0x3a",
619 "mask" : null,
620 "next_state" : "parse_icmp"
621 },
622 {
623 "value" : "default",
624 "mask" : null,
625 "next_state" : null
626 }
627 ],
628 "transition_key" : [
629 {
630 "type" : "field",
631 "value" : ["ipv6", "next_hdr"]
632 }
633 ]
634 },
635 {
636 "name" : "parse_arp",
637 "id" : 7,
638 "parser_ops" : [
639 {
640 "parameters" : [
641 {
642 "type" : "regular",
Yi Tsengbe342052017-11-03 10:21:23 -0700643 "value" : "arp"
644 }
645 ],
646 "op" : "extract"
647 }
648 ],
649 "transitions" : [
650 {
651 "value" : "default",
652 "mask" : null,
653 "next_state" : null
654 }
655 ],
656 "transition_key" : []
657 },
658 {
659 "name" : "parse_tcp",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800660 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700661 "parser_ops" : [
662 {
663 "parameters" : [
664 {
665 "type" : "regular",
666 "value" : "tcp"
667 }
668 ],
669 "op" : "extract"
670 },
671 {
672 "parameters" : [
673 {
674 "type" : "field",
675 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
676 },
677 {
678 "type" : "field",
679 "value" : ["tcp", "src_port"]
680 }
681 ],
682 "op" : "set"
683 },
684 {
685 "parameters" : [
686 {
687 "type" : "field",
688 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
689 },
690 {
691 "type" : "field",
692 "value" : ["tcp", "dst_port"]
693 }
694 ],
695 "op" : "set"
696 }
697 ],
698 "transitions" : [
699 {
700 "value" : "default",
701 "mask" : null,
702 "next_state" : null
703 }
704 ],
705 "transition_key" : []
706 },
707 {
708 "name" : "parse_udp",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800709 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700710 "parser_ops" : [
711 {
712 "parameters" : [
713 {
714 "type" : "regular",
715 "value" : "udp"
716 }
717 ],
718 "op" : "extract"
719 },
720 {
721 "parameters" : [
722 {
723 "type" : "field",
724 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
725 },
726 {
727 "type" : "field",
728 "value" : ["udp", "src_port"]
729 }
730 ],
731 "op" : "set"
732 },
733 {
734 "parameters" : [
735 {
736 "type" : "field",
737 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
738 },
739 {
740 "type" : "field",
741 "value" : ["udp", "dst_port"]
742 }
743 ],
744 "op" : "set"
745 }
746 ],
747 "transitions" : [
748 {
749 "value" : "default",
750 "mask" : null,
751 "next_state" : null
752 }
753 ],
754 "transition_key" : []
755 },
756 {
757 "name" : "parse_icmp",
Yi Tseng27b9bc02018-04-12 14:52:40 +0800758 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700759 "parser_ops" : [
760 {
761 "parameters" : [
762 {
763 "type" : "regular",
764 "value" : "icmp"
765 }
766 ],
767 "op" : "extract"
768 }
769 ],
770 "transitions" : [
771 {
772 "value" : "default",
773 "mask" : null,
774 "next_state" : null
775 }
776 ],
777 "transition_key" : []
778 }
779 ]
780 }
781 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800782 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700783 "deparsers" : [
784 {
785 "name" : "deparser",
786 "id" : 0,
787 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800788 "filename" : "./include/parser.p4",
Carmelo Casconeb531b682018-01-30 17:55:56 -0800789 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -0700790 "column" : 8,
791 "source_fragment" : "FabricDeparser"
792 },
Yi Tseng27b9bc02018-04-12 14:52:40 +0800793 "order" : ["packet_in", "ethernet", "vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700794 }
795 ],
796 "meter_arrays" : [],
797 "counter_arrays" : [
798 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800799 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800800 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800801 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800802 "binding" : "FabricIngress.filtering.ingress_port_vlan"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800803 },
804 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800805 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800806 "id" : 1,
807 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800808 "binding" : "FabricIngress.filtering.fwd_classifier"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800809 },
810 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800811 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800812 "id" : 2,
813 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800814 "binding" : "FabricIngress.forwarding.bridging"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800815 },
816 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800817 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800818 "id" : 3,
819 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800820 "binding" : "FabricIngress.forwarding.mpls"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800821 },
822 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800823 "name" : "FabricIngress.forwarding.unicast_v4_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800824 "id" : 4,
825 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800826 "binding" : "FabricIngress.forwarding.unicast_v4"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800827 },
828 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800829 "name" : "FabricIngress.forwarding.acl_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800830 "id" : 5,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800831 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800832 "binding" : "FabricIngress.forwarding.acl"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800833 },
834 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800835 "name" : "FabricIngress.forwarding.multicast_v4_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800836 "id" : 6,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800837 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800838 "binding" : "FabricIngress.forwarding.multicast_v4"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800839 },
840 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800841 "name" : "FabricIngress.forwarding.unicast_v6_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800842 "id" : 7,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800843 "is_direct" : true,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800844 "binding" : "FabricIngress.forwarding.unicast_v6"
Yi Tseng3a5731e2018-01-22 11:38:58 -0800845 },
846 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800847 "name" : "FabricIngress.forwarding.multicast_v6_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800848 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800849 "is_direct" : true,
850 "binding" : "FabricIngress.forwarding.multicast_v6"
851 },
852 {
853 "name" : "FabricIngress.next.simple_counter",
854 "id" : 9,
855 "is_direct" : true,
856 "binding" : "FabricIngress.next.simple"
857 },
858 {
859 "name" : "FabricIngress.next.hashed_counter",
860 "id" : 10,
861 "is_direct" : true,
862 "binding" : "FabricIngress.next.hashed"
863 },
864 {
865 "name" : "FabricIngress.next.multicast_counter",
866 "id" : 11,
867 "is_direct" : true,
868 "binding" : "FabricIngress.next.multicast"
869 },
870 {
871 "name" : "FabricIngress.port_counters_control.egress_port_counter",
872 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700873 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800874 "filename" : "./include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700875 "line" : 23,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800876 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700877 "source_fragment" : "egress_port_counter"
878 },
879 "size" : 511,
880 "is_direct" : false
881 },
882 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800883 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
884 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -0700885 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800886 "filename" : "./include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -0700887 "line" : 24,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800888 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700889 "source_fragment" : "ingress_port_counter"
890 },
891 "size" : 511,
892 "is_direct" : false
893 }
894 ],
895 "register_arrays" : [],
896 "calculations" : [
897 {
898 "name" : "calc",
899 "id" : 0,
900 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800901 "filename" : "./include/checksum.p4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -0800902 "line" : 56,
Yi Tsengbe342052017-11-03 10:21:23 -0700903 "column" : 8,
904 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
905 },
906 "algo" : "csum16",
907 "input" : [
908 {
909 "type" : "field",
910 "value" : ["ipv4", "version"]
911 },
912 {
913 "type" : "field",
914 "value" : ["ipv4", "ihl"]
915 },
916 {
917 "type" : "field",
918 "value" : ["ipv4", "diffserv"]
919 },
920 {
921 "type" : "field",
922 "value" : ["ipv4", "total_len"]
923 },
924 {
925 "type" : "field",
926 "value" : ["ipv4", "identification"]
927 },
928 {
929 "type" : "field",
930 "value" : ["ipv4", "flags"]
931 },
932 {
933 "type" : "field",
934 "value" : ["ipv4", "frag_offset"]
935 },
936 {
937 "type" : "field",
938 "value" : ["ipv4", "ttl"]
939 },
940 {
941 "type" : "field",
942 "value" : ["ipv4", "protocol"]
943 },
944 {
945 "type" : "field",
946 "value" : ["ipv4", "src_addr"]
947 },
948 {
949 "type" : "field",
950 "value" : ["ipv4", "dst_addr"]
951 }
952 ]
953 },
954 {
955 "name" : "calc_0",
956 "id" : 1,
957 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800958 "filename" : "./include/checksum.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -0800959 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700960 "column" : 8,
961 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
962 },
963 "algo" : "csum16",
964 "input" : [
965 {
966 "type" : "field",
967 "value" : ["ipv4", "version"]
968 },
969 {
970 "type" : "field",
971 "value" : ["ipv4", "ihl"]
972 },
973 {
974 "type" : "field",
975 "value" : ["ipv4", "diffserv"]
976 },
977 {
978 "type" : "field",
979 "value" : ["ipv4", "total_len"]
980 },
981 {
982 "type" : "field",
983 "value" : ["ipv4", "identification"]
984 },
985 {
986 "type" : "field",
987 "value" : ["ipv4", "flags"]
988 },
989 {
990 "type" : "field",
991 "value" : ["ipv4", "frag_offset"]
992 },
993 {
994 "type" : "field",
995 "value" : ["ipv4", "ttl"]
996 },
997 {
998 "type" : "field",
999 "value" : ["ipv4", "protocol"]
1000 },
1001 {
1002 "type" : "field",
1003 "value" : ["ipv4", "src_addr"]
1004 },
1005 {
1006 "type" : "field",
1007 "value" : ["ipv4", "dst_addr"]
1008 }
1009 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001010 }
1011 ],
1012 "learn_lists" : [],
1013 "actions" : [
1014 {
1015 "name" : "nop",
1016 "id" : 0,
1017 "runtime_data" : [],
1018 "primitives" : []
1019 },
1020 {
1021 "name" : "nop",
1022 "id" : 1,
1023 "runtime_data" : [],
1024 "primitives" : []
1025 },
1026 {
Yi Tseng1d842672017-11-28 16:06:52 -08001027 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001028 "id" : 2,
1029 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001030 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001031 },
1032 {
Yi Tseng1d842672017-11-28 16:06:52 -08001033 "name" : "NoAction",
Yi Tsengbe342052017-11-03 10:21:23 -07001034 "id" : 3,
1035 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001036 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001037 },
1038 {
1039 "name" : "NoAction",
1040 "id" : 4,
1041 "runtime_data" : [],
1042 "primitives" : []
1043 },
1044 {
1045 "name" : "NoAction",
1046 "id" : 5,
1047 "runtime_data" : [],
1048 "primitives" : []
1049 },
1050 {
1051 "name" : "NoAction",
1052 "id" : 6,
1053 "runtime_data" : [],
1054 "primitives" : []
1055 },
1056 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001057 "name" : "NoAction",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001058 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07001059 "runtime_data" : [],
Yi Tseng27b9bc02018-04-12 14:52:40 +08001060 "primitives" : []
1061 },
1062 {
1063 "name" : "NoAction",
1064 "id" : 8,
1065 "runtime_data" : [],
1066 "primitives" : []
1067 },
1068 {
1069 "name" : "NoAction",
1070 "id" : 9,
1071 "runtime_data" : [],
1072 "primitives" : []
1073 },
1074 {
1075 "name" : "NoAction",
1076 "id" : 10,
1077 "runtime_data" : [],
1078 "primitives" : []
1079 },
1080 {
1081 "name" : "FabricIngress.filtering.drop",
1082 "id" : 11,
1083 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001084 "primitives" : [
1085 {
1086 "op" : "drop",
1087 "parameters" : [],
1088 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001089 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001090 "line" : 31,
Yi Tseng1d842672017-11-28 16:06:52 -08001091 "column" : 8,
1092 "source_fragment" : "mark_to_drop()"
1093 }
1094 }
1095 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001096 },
1097 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001098 "name" : "FabricIngress.filtering.set_vlan",
1099 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07001100 "runtime_data" : [
1101 {
1102 "name" : "new_vlan_id",
1103 "bitwidth" : 12
1104 }
1105 ],
1106 "primitives" : [
1107 {
1108 "op" : "assign",
1109 "parameters" : [
1110 {
1111 "type" : "field",
1112 "value" : ["vlan_tag", "vlan_id"]
1113 },
1114 {
1115 "type" : "runtime_data",
1116 "value" : 0
1117 }
1118 ],
1119 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001120 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001121 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001122 "column" : 8,
1123 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1124 }
1125 }
1126 ]
1127 },
1128 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001129 "name" : "FabricIngress.filtering.push_internal_vlan",
1130 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07001131 "runtime_data" : [
1132 {
1133 "name" : "new_vlan_id",
1134 "bitwidth" : 12
1135 }
1136 ],
1137 "primitives" : [
1138 {
1139 "op" : "add_header",
1140 "parameters" : [
1141 {
1142 "type" : "header",
1143 "value" : "vlan_tag"
1144 }
1145 ],
1146 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001147 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001148 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001149 "column" : 8,
1150 "source_fragment" : "hdr.vlan_tag.setValid()"
1151 }
1152 },
1153 {
1154 "op" : "assign",
1155 "parameters" : [
1156 {
1157 "type" : "field",
1158 "value" : ["vlan_tag", "cfi"]
1159 },
1160 {
1161 "type" : "hexstr",
1162 "value" : "0x00"
1163 }
1164 ],
1165 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001166 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001167 "line" : 42,
Yi Tsengbe342052017-11-03 10:21:23 -07001168 "column" : 8,
1169 "source_fragment" : "hdr.vlan_tag.cfi = 0"
1170 }
1171 },
1172 {
1173 "op" : "assign",
1174 "parameters" : [
1175 {
1176 "type" : "field",
1177 "value" : ["vlan_tag", "pri"]
1178 },
1179 {
1180 "type" : "hexstr",
1181 "value" : "0x00"
1182 }
1183 ],
1184 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001185 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001186 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07001187 "column" : 8,
1188 "source_fragment" : "hdr.vlan_tag.pri = 0"
1189 }
1190 },
1191 {
1192 "op" : "assign",
1193 "parameters" : [
1194 {
1195 "type" : "field",
1196 "value" : ["vlan_tag", "ether_type"]
1197 },
1198 {
Yi Tseng1d842672017-11-28 16:06:52 -08001199 "type" : "field",
1200 "value" : ["ethernet", "ether_type"]
1201 }
1202 ],
1203 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001204 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001205 "line" : 44,
Yi Tseng1d842672017-11-28 16:06:52 -08001206 "column" : 8,
1207 "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
1208 }
1209 },
1210 {
1211 "op" : "assign",
1212 "parameters" : [
1213 {
1214 "type" : "field",
1215 "value" : ["ethernet", "ether_type"]
1216 },
1217 {
Yi Tsengbe342052017-11-03 10:21:23 -07001218 "type" : "hexstr",
1219 "value" : "0x8100"
1220 }
1221 ],
1222 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001223 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08001224 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001225 "column" : 31,
1226 "source_fragment" : "0x8100; ..."
1227 }
1228 },
1229 {
1230 "op" : "assign",
1231 "parameters" : [
1232 {
1233 "type" : "field",
1234 "value" : ["vlan_tag", "vlan_id"]
1235 },
1236 {
1237 "type" : "runtime_data",
1238 "value" : 0
1239 }
1240 ],
1241 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001242 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001243 "line" : 35,
Yi Tsengbe342052017-11-03 10:21:23 -07001244 "column" : 8,
1245 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
1246 }
1247 },
1248 {
1249 "op" : "assign",
1250 "parameters" : [
1251 {
1252 "type" : "field",
1253 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1254 },
1255 {
1256 "type" : "expression",
1257 "value" : {
1258 "type" : "expression",
1259 "value" : {
1260 "op" : "b2d",
1261 "left" : null,
1262 "right" : {
1263 "type" : "bool",
1264 "value" : true
1265 }
1266 }
1267 }
1268 }
1269 ],
1270 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001271 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001272 "line" : 49,
Yi Tsengbe342052017-11-03 10:21:23 -07001273 "column" : 8,
1274 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
1275 }
1276 }
1277 ]
1278 },
1279 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001280 "name" : "FabricIngress.filtering.set_forwarding_type",
1281 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07001282 "runtime_data" : [
1283 {
1284 "name" : "fwd_type",
1285 "bitwidth" : 3
1286 }
1287 ],
1288 "primitives" : [
1289 {
1290 "op" : "assign",
1291 "parameters" : [
1292 {
1293 "type" : "field",
1294 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1295 },
1296 {
1297 "type" : "runtime_data",
1298 "value" : 0
1299 }
1300 ],
1301 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001302 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08001303 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07001304 "column" : 8,
1305 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1306 }
1307 }
1308 ]
1309 },
1310 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001311 "name" : "FabricIngress.forwarding.drop",
1312 "id" : 15,
Yi Tseng1d842672017-11-28 16:06:52 -08001313 "runtime_data" : [],
1314 "primitives" : [
1315 {
1316 "op" : "drop",
1317 "parameters" : [],
1318 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001319 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001320 "line" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08001321 "column" : 8,
1322 "source_fragment" : "mark_to_drop()"
1323 }
1324 }
1325 ]
1326 },
1327 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001328 "name" : "FabricIngress.forwarding.set_next_id",
1329 "id" : 16,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001330 "runtime_data" : [
1331 {
1332 "name" : "next_id",
1333 "bitwidth" : 32
1334 }
1335 ],
1336 "primitives" : [
1337 {
1338 "op" : "assign",
1339 "parameters" : [
1340 {
1341 "type" : "field",
1342 "value" : ["scalars", "fabric_metadata_t.next_id"]
1343 },
1344 {
1345 "type" : "runtime_data",
1346 "value" : 0
1347 }
1348 ],
1349 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001350 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001351 "line" : 40,
1352 "column" : 8,
1353 "source_fragment" : "fabric_metadata.next_id = next_id"
1354 }
1355 }
1356 ]
1357 },
1358 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001359 "name" : "FabricIngress.forwarding.set_next_id",
1360 "id" : 17,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001361 "runtime_data" : [
1362 {
1363 "name" : "next_id",
1364 "bitwidth" : 32
1365 }
1366 ],
1367 "primitives" : [
1368 {
1369 "op" : "assign",
1370 "parameters" : [
1371 {
1372 "type" : "field",
1373 "value" : ["scalars", "fabric_metadata_t.next_id"]
1374 },
1375 {
1376 "type" : "runtime_data",
1377 "value" : 0
1378 }
1379 ],
1380 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001381 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001382 "line" : 40,
1383 "column" : 8,
1384 "source_fragment" : "fabric_metadata.next_id = next_id"
1385 }
1386 }
1387 ]
1388 },
1389 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001390 "name" : "FabricIngress.forwarding.set_next_id",
1391 "id" : 18,
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08001392 "runtime_data" : [
1393 {
1394 "name" : "next_id",
1395 "bitwidth" : 32
1396 }
1397 ],
1398 "primitives" : [
1399 {
1400 "op" : "assign",
1401 "parameters" : [
1402 {
1403 "type" : "field",
1404 "value" : ["scalars", "fabric_metadata_t.next_id"]
1405 },
1406 {
1407 "type" : "runtime_data",
1408 "value" : 0
1409 }
1410 ],
1411 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001412 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001413 "line" : 40,
Yi Tsengbe342052017-11-03 10:21:23 -07001414 "column" : 8,
1415 "source_fragment" : "fabric_metadata.next_id = next_id"
1416 }
1417 }
1418 ]
1419 },
1420 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001421 "name" : "FabricIngress.forwarding.set_next_id",
1422 "id" : 19,
1423 "runtime_data" : [
1424 {
1425 "name" : "next_id",
1426 "bitwidth" : 32
1427 }
1428 ],
1429 "primitives" : [
1430 {
1431 "op" : "assign",
1432 "parameters" : [
1433 {
1434 "type" : "field",
1435 "value" : ["scalars", "fabric_metadata_t.next_id"]
1436 },
1437 {
1438 "type" : "runtime_data",
1439 "value" : 0
1440 }
1441 ],
1442 "source_info" : {
1443 "filename" : "./include/control/forwarding.p4",
1444 "line" : 40,
1445 "column" : 8,
1446 "source_fragment" : "fabric_metadata.next_id = next_id"
1447 }
1448 }
1449 ]
1450 },
1451 {
1452 "name" : "FabricIngress.forwarding.set_next_id",
1453 "id" : 20,
1454 "runtime_data" : [
1455 {
1456 "name" : "next_id",
1457 "bitwidth" : 32
1458 }
1459 ],
1460 "primitives" : [
1461 {
1462 "op" : "assign",
1463 "parameters" : [
1464 {
1465 "type" : "field",
1466 "value" : ["scalars", "fabric_metadata_t.next_id"]
1467 },
1468 {
1469 "type" : "runtime_data",
1470 "value" : 0
1471 }
1472 ],
1473 "source_info" : {
1474 "filename" : "./include/control/forwarding.p4",
1475 "line" : 40,
1476 "column" : 8,
1477 "source_fragment" : "fabric_metadata.next_id = next_id"
1478 }
1479 }
1480 ]
1481 },
1482 {
1483 "name" : "FabricIngress.forwarding.set_next_id",
1484 "id" : 21,
1485 "runtime_data" : [
1486 {
1487 "name" : "next_id",
1488 "bitwidth" : 32
1489 }
1490 ],
1491 "primitives" : [
1492 {
1493 "op" : "assign",
1494 "parameters" : [
1495 {
1496 "type" : "field",
1497 "value" : ["scalars", "fabric_metadata_t.next_id"]
1498 },
1499 {
1500 "type" : "runtime_data",
1501 "value" : 0
1502 }
1503 ],
1504 "source_info" : {
1505 "filename" : "./include/control/forwarding.p4",
1506 "line" : 40,
1507 "column" : 8,
1508 "source_fragment" : "fabric_metadata.next_id = next_id"
1509 }
1510 }
1511 ]
1512 },
1513 {
1514 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
1515 "id" : 22,
Yi Tsengbe342052017-11-03 10:21:23 -07001516 "runtime_data" : [
1517 {
1518 "name" : "next_id",
1519 "bitwidth" : 32
1520 }
1521 ],
1522 "primitives" : [
1523 {
1524 "op" : "remove_header",
1525 "parameters" : [
1526 {
1527 "type" : "header",
1528 "value" : "mpls"
1529 }
1530 ],
1531 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001532 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001533 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07001534 "column" : 8,
1535 "source_fragment" : "hdr.mpls.setInvalid()"
1536 }
1537 },
1538 {
1539 "op" : "assign",
1540 "parameters" : [
1541 {
1542 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001543 "value" : ["scalars", "fabric_metadata_t.next_id"]
1544 },
1545 {
1546 "type" : "runtime_data",
1547 "value" : 0
1548 }
1549 ],
1550 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001551 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001552 "line" : 45,
Yi Tsengbe342052017-11-03 10:21:23 -07001553 "column" : 8,
1554 "source_fragment" : "fabric_metadata.next_id = next_id"
1555 }
1556 }
1557 ]
1558 },
1559 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001560 "name" : "FabricIngress.forwarding.duplicate_to_controller",
1561 "id" : 23,
Yi Tsengbe342052017-11-03 10:21:23 -07001562 "runtime_data" : [],
1563 "primitives" : [
1564 {
1565 "op" : "assign",
1566 "parameters" : [
1567 {
1568 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001569 "value" : ["standard_metadata", "egress_spec"]
1570 },
1571 {
1572 "type" : "hexstr",
1573 "value" : "0x00ff"
1574 }
1575 ],
1576 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001577 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001578 "line" : 49,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001579 "column" : 8,
1580 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001581 }
1582 }
1583 ]
1584 },
1585 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001586 "name" : "FabricIngress.next.output",
1587 "id" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07001588 "runtime_data" : [
1589 {
1590 "name" : "port_num",
1591 "bitwidth" : 9
1592 }
1593 ],
1594 "primitives" : [
1595 {
1596 "op" : "assign",
1597 "parameters" : [
1598 {
1599 "type" : "field",
1600 "value" : ["standard_metadata", "egress_spec"]
1601 },
1602 {
1603 "type" : "runtime_data",
1604 "value" : 0
1605 }
1606 ],
1607 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001608 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001609 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001610 "column" : 8,
1611 "source_fragment" : "standard_metadata.egress_spec = port_num"
1612 }
Yi Tsengbe342052017-11-03 10:21:23 -07001613 }
1614 ]
1615 },
1616 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001617 "name" : "FabricIngress.next.set_vlan_output",
1618 "id" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001619 "runtime_data" : [
1620 {
1621 "name" : "new_vlan_id",
1622 "bitwidth" : 12
1623 },
1624 {
1625 "name" : "port_num",
1626 "bitwidth" : 9
1627 }
1628 ],
1629 "primitives" : [
1630 {
1631 "op" : "assign",
1632 "parameters" : [
1633 {
1634 "type" : "field",
1635 "value" : ["vlan_tag", "vlan_id"]
1636 },
1637 {
1638 "type" : "runtime_data",
1639 "value" : 0
1640 }
1641 ],
1642 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001643 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001644 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001645 "column" : 8,
1646 "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
1647 }
1648 },
1649 {
1650 "op" : "assign",
1651 "parameters" : [
1652 {
1653 "type" : "field",
1654 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
1655 },
1656 {
1657 "type" : "expression",
1658 "value" : {
1659 "type" : "expression",
1660 "value" : {
1661 "op" : "b2d",
1662 "left" : null,
1663 "right" : {
1664 "type" : "bool",
1665 "value" : false
1666 }
1667 }
1668 }
1669 }
1670 ],
1671 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001672 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001673 "line" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07001674 "column" : 8,
1675 "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
1676 }
1677 },
1678 {
1679 "op" : "assign",
1680 "parameters" : [
1681 {
1682 "type" : "field",
1683 "value" : ["standard_metadata", "egress_spec"]
1684 },
1685 {
1686 "type" : "runtime_data",
1687 "value" : 1
1688 }
1689 ],
1690 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001691 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001692 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07001693 "column" : 8,
1694 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1695 }
Yi Tsengbe342052017-11-03 10:21:23 -07001696 }
1697 ]
1698 },
1699 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001700 "name" : "FabricIngress.next.l3_routing",
1701 "id" : 26,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001702 "runtime_data" : [
1703 {
1704 "name" : "port_num",
1705 "bitwidth" : 9
1706 },
1707 {
1708 "name" : "smac",
1709 "bitwidth" : 48
1710 },
1711 {
1712 "name" : "dmac",
1713 "bitwidth" : 48
1714 }
1715 ],
1716 "primitives" : [
1717 {
1718 "op" : "assign",
1719 "parameters" : [
1720 {
1721 "type" : "field",
1722 "value" : ["ethernet", "src_addr"]
1723 },
1724 {
1725 "type" : "runtime_data",
1726 "value" : 1
1727 }
1728 ],
1729 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001730 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001731 "line" : 44,
1732 "column" : 8,
1733 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1734 }
1735 },
1736 {
1737 "op" : "assign",
1738 "parameters" : [
1739 {
1740 "type" : "field",
1741 "value" : ["ethernet", "dst_addr"]
1742 },
1743 {
1744 "type" : "runtime_data",
1745 "value" : 2
1746 }
1747 ],
1748 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001749 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001750 "line" : 48,
1751 "column" : 8,
1752 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1753 }
1754 },
1755 {
1756 "op" : "assign",
1757 "parameters" : [
1758 {
1759 "type" : "field",
1760 "value" : ["standard_metadata", "egress_spec"]
1761 },
1762 {
1763 "type" : "runtime_data",
1764 "value" : 0
1765 }
1766 ],
1767 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001768 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001769 "line" : 32,
1770 "column" : 8,
1771 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1772 }
1773 }
1774 ]
1775 },
1776 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001777 "name" : "FabricIngress.next.l3_routing",
1778 "id" : 27,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001779 "runtime_data" : [
1780 {
1781 "name" : "port_num",
1782 "bitwidth" : 9
1783 },
1784 {
1785 "name" : "smac",
1786 "bitwidth" : 48
1787 },
1788 {
1789 "name" : "dmac",
1790 "bitwidth" : 48
1791 }
1792 ],
1793 "primitives" : [
1794 {
1795 "op" : "assign",
1796 "parameters" : [
1797 {
1798 "type" : "field",
1799 "value" : ["ethernet", "src_addr"]
1800 },
1801 {
1802 "type" : "runtime_data",
1803 "value" : 1
1804 }
1805 ],
1806 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001807 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001808 "line" : 44,
1809 "column" : 8,
1810 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1811 }
1812 },
1813 {
1814 "op" : "assign",
1815 "parameters" : [
1816 {
1817 "type" : "field",
1818 "value" : ["ethernet", "dst_addr"]
1819 },
1820 {
1821 "type" : "runtime_data",
1822 "value" : 2
1823 }
1824 ],
1825 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001826 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001827 "line" : 48,
1828 "column" : 8,
1829 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1830 }
1831 },
1832 {
1833 "op" : "assign",
1834 "parameters" : [
1835 {
1836 "type" : "field",
1837 "value" : ["standard_metadata", "egress_spec"]
1838 },
1839 {
1840 "type" : "runtime_data",
1841 "value" : 0
1842 }
1843 ],
1844 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001845 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001846 "line" : 32,
1847 "column" : 8,
1848 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1849 }
1850 }
1851 ]
1852 },
1853 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001854 "name" : "FabricIngress.next.mpls_routing_v4",
1855 "id" : 28,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001856 "runtime_data" : [
1857 {
1858 "name" : "port_num",
1859 "bitwidth" : 9
1860 },
1861 {
1862 "name" : "smac",
1863 "bitwidth" : 48
1864 },
1865 {
1866 "name" : "dmac",
1867 "bitwidth" : 48
1868 },
1869 {
1870 "name" : "label",
1871 "bitwidth" : 20
1872 }
1873 ],
1874 "primitives" : [
1875 {
1876 "op" : "assign",
1877 "parameters" : [
1878 {
1879 "type" : "field",
1880 "value" : ["ethernet", "src_addr"]
1881 },
1882 {
1883 "type" : "runtime_data",
1884 "value" : 1
1885 }
1886 ],
1887 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001888 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001889 "line" : 44,
1890 "column" : 8,
1891 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1892 }
1893 },
1894 {
1895 "op" : "assign",
1896 "parameters" : [
1897 {
1898 "type" : "field",
1899 "value" : ["ethernet", "dst_addr"]
1900 },
1901 {
1902 "type" : "runtime_data",
1903 "value" : 2
1904 }
1905 ],
1906 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001907 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001908 "line" : 48,
1909 "column" : 8,
1910 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1911 }
1912 },
1913 {
1914 "op" : "assign",
1915 "parameters" : [
1916 {
1917 "type" : "field",
1918 "value" : ["standard_metadata", "egress_spec"]
1919 },
1920 {
1921 "type" : "runtime_data",
1922 "value" : 0
1923 }
1924 ],
1925 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001926 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001927 "line" : 32,
1928 "column" : 8,
1929 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1930 }
1931 },
1932 {
1933 "op" : "add_header",
1934 "parameters" : [
1935 {
1936 "type" : "header",
1937 "value" : "mpls"
1938 }
1939 ],
1940 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001941 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001942 "line" : 59,
1943 "column" : 8,
1944 "source_fragment" : "hdr.mpls.setValid()"
1945 }
1946 },
1947 {
1948 "op" : "assign",
1949 "parameters" : [
1950 {
1951 "type" : "field",
1952 "value" : ["vlan_tag", "ether_type"]
1953 },
1954 {
1955 "type" : "hexstr",
1956 "value" : "0x8847"
1957 }
1958 ],
1959 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001960 "filename" : "./include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001961 "line" : 33,
1962 "column" : 31,
1963 "source_fragment" : "0x8847; ..."
1964 }
1965 },
1966 {
1967 "op" : "assign",
1968 "parameters" : [
1969 {
1970 "type" : "field",
1971 "value" : ["mpls", "label"]
1972 },
1973 {
1974 "type" : "runtime_data",
1975 "value" : 3
1976 }
1977 ],
1978 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001979 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001980 "line" : 61,
1981 "column" : 8,
1982 "source_fragment" : "hdr.mpls.label = label; ..."
1983 }
1984 },
1985 {
1986 "op" : "assign",
1987 "parameters" : [
1988 {
1989 "type" : "field",
1990 "value" : ["mpls", "tc"]
1991 },
1992 {
1993 "type" : "hexstr",
1994 "value" : "0x00"
1995 }
1996 ],
1997 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001998 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001999 "line" : 62,
2000 "column" : 8,
2001 "source_fragment" : "hdr.mpls.tc = tc; ..."
2002 }
2003 },
2004 {
2005 "op" : "assign",
2006 "parameters" : [
2007 {
2008 "type" : "field",
2009 "value" : ["mpls", "bos"]
2010 },
2011 {
2012 "type" : "hexstr",
2013 "value" : "0x01"
2014 }
2015 ],
2016 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002017 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002018 "line" : 63,
2019 "column" : 8,
2020 "source_fragment" : "hdr.mpls.bos = 1w1"
2021 }
2022 },
2023 {
2024 "op" : "assign",
2025 "parameters" : [
2026 {
2027 "type" : "field",
2028 "value" : ["mpls", "ttl"]
2029 },
2030 {
2031 "type" : "hexstr",
2032 "value" : "0x40"
2033 }
2034 ],
2035 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002036 "filename" : "./include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002037 "line" : 67,
2038 "column" : 32,
2039 "source_fragment" : "64; ..."
2040 }
2041 }
2042 ]
2043 },
2044 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002045 "name" : "FabricIngress.next.mpls_routing_v4",
2046 "id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002047 "runtime_data" : [
2048 {
2049 "name" : "port_num",
2050 "bitwidth" : 9
2051 },
2052 {
2053 "name" : "smac",
2054 "bitwidth" : 48
2055 },
2056 {
2057 "name" : "dmac",
2058 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002059 },
2060 {
2061 "name" : "label",
2062 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07002063 }
2064 ],
2065 "primitives" : [
2066 {
2067 "op" : "assign",
2068 "parameters" : [
2069 {
2070 "type" : "field",
2071 "value" : ["ethernet", "src_addr"]
2072 },
2073 {
2074 "type" : "runtime_data",
2075 "value" : 1
2076 }
2077 ],
2078 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002079 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002080 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07002081 "column" : 8,
2082 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2083 }
2084 },
2085 {
2086 "op" : "assign",
2087 "parameters" : [
2088 {
2089 "type" : "field",
2090 "value" : ["ethernet", "dst_addr"]
2091 },
2092 {
2093 "type" : "runtime_data",
2094 "value" : 2
2095 }
2096 ],
2097 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002098 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002099 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07002100 "column" : 8,
2101 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2102 }
2103 },
2104 {
2105 "op" : "assign",
2106 "parameters" : [
2107 {
2108 "type" : "field",
2109 "value" : ["standard_metadata", "egress_spec"]
2110 },
2111 {
2112 "type" : "runtime_data",
2113 "value" : 0
2114 }
2115 ],
2116 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002117 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002118 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002119 "column" : 8,
2120 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2121 }
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002122 },
2123 {
2124 "op" : "add_header",
2125 "parameters" : [
2126 {
2127 "type" : "header",
2128 "value" : "mpls"
2129 }
2130 ],
2131 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002132 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002133 "line" : 59,
2134 "column" : 8,
2135 "source_fragment" : "hdr.mpls.setValid()"
2136 }
2137 },
2138 {
2139 "op" : "assign",
2140 "parameters" : [
2141 {
2142 "type" : "field",
2143 "value" : ["vlan_tag", "ether_type"]
2144 },
2145 {
2146 "type" : "hexstr",
2147 "value" : "0x8847"
2148 }
2149 ],
2150 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002151 "filename" : "./include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002152 "line" : 33,
2153 "column" : 31,
2154 "source_fragment" : "0x8847; ..."
2155 }
2156 },
2157 {
2158 "op" : "assign",
2159 "parameters" : [
2160 {
2161 "type" : "field",
2162 "value" : ["mpls", "label"]
2163 },
2164 {
2165 "type" : "runtime_data",
2166 "value" : 3
2167 }
2168 ],
2169 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002170 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002171 "line" : 61,
2172 "column" : 8,
2173 "source_fragment" : "hdr.mpls.label = label; ..."
2174 }
2175 },
2176 {
2177 "op" : "assign",
2178 "parameters" : [
2179 {
2180 "type" : "field",
2181 "value" : ["mpls", "tc"]
2182 },
2183 {
2184 "type" : "hexstr",
2185 "value" : "0x00"
2186 }
2187 ],
2188 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002189 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002190 "line" : 62,
2191 "column" : 8,
2192 "source_fragment" : "hdr.mpls.tc = tc; ..."
2193 }
2194 },
2195 {
2196 "op" : "assign",
2197 "parameters" : [
2198 {
2199 "type" : "field",
2200 "value" : ["mpls", "bos"]
2201 },
2202 {
2203 "type" : "hexstr",
2204 "value" : "0x01"
2205 }
2206 ],
2207 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002208 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002209 "line" : 63,
2210 "column" : 8,
2211 "source_fragment" : "hdr.mpls.bos = 1w1"
2212 }
2213 },
2214 {
2215 "op" : "assign",
2216 "parameters" : [
2217 {
2218 "type" : "field",
2219 "value" : ["mpls", "ttl"]
2220 },
2221 {
2222 "type" : "hexstr",
2223 "value" : "0x40"
2224 }
2225 ],
2226 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002227 "filename" : "./include/control/../define.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002228 "line" : 67,
2229 "column" : 32,
2230 "source_fragment" : "64; ..."
2231 }
Yi Tsengbe342052017-11-03 10:21:23 -07002232 }
2233 ]
2234 },
2235 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002236 "name" : "FabricIngress.next.mpls_routing_v6",
2237 "id" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07002238 "runtime_data" : [
2239 {
2240 "name" : "port_num",
2241 "bitwidth" : 9
2242 },
2243 {
2244 "name" : "smac",
2245 "bitwidth" : 48
2246 },
2247 {
2248 "name" : "dmac",
2249 "bitwidth" : 48
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002250 },
2251 {
2252 "name" : "label",
2253 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07002254 }
2255 ],
2256 "primitives" : [
2257 {
2258 "op" : "assign",
2259 "parameters" : [
2260 {
2261 "type" : "field",
2262 "value" : ["ethernet", "src_addr"]
2263 },
2264 {
2265 "type" : "runtime_data",
2266 "value" : 1
2267 }
2268 ],
2269 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002270 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002271 "line" : 44,
Yi Tsengbe342052017-11-03 10:21:23 -07002272 "column" : 8,
2273 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2274 }
2275 },
2276 {
2277 "op" : "assign",
2278 "parameters" : [
2279 {
2280 "type" : "field",
2281 "value" : ["ethernet", "dst_addr"]
2282 },
2283 {
2284 "type" : "runtime_data",
2285 "value" : 2
2286 }
2287 ],
2288 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002289 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002290 "line" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -07002291 "column" : 8,
2292 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
2293 }
2294 },
2295 {
2296 "op" : "assign",
2297 "parameters" : [
2298 {
2299 "type" : "field",
2300 "value" : ["standard_metadata", "egress_spec"]
2301 },
2302 {
2303 "type" : "runtime_data",
2304 "value" : 0
2305 }
2306 ],
2307 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002308 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002309 "line" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002310 "column" : 8,
2311 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
2312 }
Yi Tsengbe342052017-11-03 10:21:23 -07002313 },
2314 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002315 "op" : "add_header",
Yi Tsengbe342052017-11-03 10:21:23 -07002316 "parameters" : [
2317 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002318 "type" : "header",
2319 "value" : "mpls"
Yi Tsengbe342052017-11-03 10:21:23 -07002320 }
2321 ],
2322 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002323 "filename" : "./include/control/next.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002324 "line" : 59,
Yi Tsengbe342052017-11-03 10:21:23 -07002325 "column" : 8,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002326 "source_fragment" : "hdr.mpls.setValid()"
2327 }
2328 },
2329 {
2330 "op" : "assign",
2331 "parameters" : [
2332 {
2333 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002334 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1b154bd2017-11-20 17:48:19 -08002335 },
2336 {
2337 "type" : "hexstr",
2338 "value" : "0x8847"
2339 }
2340 ],
2341 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002342 "filename" : "./include/control/../define.p4",
Yi Tsengf55eaa82017-11-29 15:51:28 -08002343 "line" : 33,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002344 "column" : 31,
2345 "source_fragment" : "0x8847; ..."
2346 }
2347 },
2348 {
2349 "op" : "assign",
2350 "parameters" : [
2351 {
2352 "type" : "field",
2353 "value" : ["mpls", "label"]
2354 },
2355 {
2356 "type" : "runtime_data",
2357 "value" : 3
2358 }
2359 ],
2360 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002361 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002362 "line" : 61,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002363 "column" : 8,
2364 "source_fragment" : "hdr.mpls.label = label; ..."
2365 }
2366 },
2367 {
2368 "op" : "assign",
2369 "parameters" : [
2370 {
2371 "type" : "field",
2372 "value" : ["mpls", "tc"]
2373 },
2374 {
Yi Tseng1d842672017-11-28 16:06:52 -08002375 "type" : "hexstr",
2376 "value" : "0x00"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002377 }
2378 ],
2379 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002380 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002381 "line" : 62,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002382 "column" : 8,
2383 "source_fragment" : "hdr.mpls.tc = tc; ..."
2384 }
2385 },
2386 {
2387 "op" : "assign",
2388 "parameters" : [
2389 {
2390 "type" : "field",
2391 "value" : ["mpls", "bos"]
2392 },
2393 {
2394 "type" : "hexstr",
2395 "value" : "0x01"
2396 }
2397 ],
2398 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002399 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002400 "line" : 63,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002401 "column" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08002402 "source_fragment" : "hdr.mpls.bos = 1w1"
Yi Tseng1b154bd2017-11-20 17:48:19 -08002403 }
2404 },
2405 {
2406 "op" : "assign",
2407 "parameters" : [
2408 {
2409 "type" : "field",
2410 "value" : ["mpls", "ttl"]
2411 },
2412 {
2413 "type" : "hexstr",
2414 "value" : "0x40"
2415 }
2416 ],
2417 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002418 "filename" : "./include/control/../define.p4",
Yi Tseng3d3956d2018-01-31 17:28:05 -08002419 "line" : 67,
Yi Tseng1b154bd2017-11-20 17:48:19 -08002420 "column" : 32,
2421 "source_fragment" : "64; ..."
2422 }
2423 }
2424 ]
2425 },
2426 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002427 "name" : "FabricIngress.next.set_mcast_group",
2428 "id" : 31,
2429 "runtime_data" : [
2430 {
2431 "name" : "gid",
2432 "bitwidth" : 16
2433 },
2434 {
2435 "name" : "smac",
2436 "bitwidth" : 48
2437 }
2438 ],
2439 "primitives" : [
2440 {
2441 "op" : "assign",
2442 "parameters" : [
2443 {
2444 "type" : "field",
2445 "value" : ["standard_metadata", "mcast_grp"]
2446 },
2447 {
2448 "type" : "runtime_data",
2449 "value" : 0
2450 }
2451 ],
2452 "source_info" : {
2453 "filename" : "./include/control/next.p4",
2454 "line" : 122,
2455 "column" : 8,
2456 "source_fragment" : "standard_metadata.mcast_grp = gid"
2457 }
2458 },
2459 {
2460 "op" : "assign",
2461 "parameters" : [
2462 {
2463 "type" : "field",
2464 "value" : ["ethernet", "src_addr"]
2465 },
2466 {
2467 "type" : "runtime_data",
2468 "value" : 1
2469 }
2470 ],
2471 "source_info" : {
2472 "filename" : "./include/control/next.p4",
2473 "line" : 44,
2474 "column" : 8,
2475 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
2476 }
2477 }
2478 ]
2479 },
2480 {
Yi Tsengbe342052017-11-03 10:21:23 -07002481 "name" : "act",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002482 "id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002483 "runtime_data" : [],
2484 "primitives" : [
2485 {
2486 "op" : "assign",
2487 "parameters" : [
2488 {
2489 "type" : "field",
2490 "value" : ["standard_metadata", "egress_spec"]
2491 },
2492 {
2493 "type" : "field",
2494 "value" : ["packet_out", "egress_port"]
2495 }
2496 ],
2497 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002498 "filename" : "./include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002499 "line" : 26,
2500 "column" : 12,
2501 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2502 }
Yi Tseng1d842672017-11-28 16:06:52 -08002503 },
2504 {
2505 "op" : "remove_header",
2506 "parameters" : [
2507 {
2508 "type" : "header",
2509 "value" : "packet_out"
2510 }
2511 ],
2512 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002513 "filename" : "./include/control/packetio.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002514 "line" : 27,
2515 "column" : 12,
2516 "source_fragment" : "hdr.packet_out.setInvalid()"
2517 }
Yi Tsengbe342052017-11-03 10:21:23 -07002518 }
2519 ]
2520 },
2521 {
2522 "name" : "act_0",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002523 "id" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002524 "runtime_data" : [],
2525 "primitives" : [
2526 {
2527 "op" : "assign",
2528 "parameters" : [
2529 {
2530 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002531 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002532 },
2533 {
2534 "type" : "hexstr",
2535 "value" : "0x0800"
2536 }
2537 ],
2538 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002539 "filename" : "./include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002540 "line" : 35,
2541 "column" : 31,
2542 "source_fragment" : "0x0800; ..."
2543 }
2544 },
2545 {
2546 "op" : "assign",
2547 "parameters" : [
2548 {
2549 "type" : "field",
2550 "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
2551 },
2552 {
2553 "type" : "hexstr",
2554 "value" : "0x0800"
2555 }
2556 ],
2557 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002558 "filename" : "./include/control/../define.p4",
Yi Tseng1d842672017-11-28 16:06:52 -08002559 "line" : 35,
2560 "column" : 31,
2561 "source_fragment" : "0x0800; ..."
2562 }
2563 }
2564 ]
2565 },
2566 {
2567 "name" : "act_1",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002568 "id" : 34,
Yi Tseng1d842672017-11-28 16:06:52 -08002569 "runtime_data" : [],
2570 "primitives" : [
2571 {
2572 "op" : "assign",
2573 "parameters" : [
2574 {
2575 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002576 "value" : ["scalars", "next_tmp_0"]
2577 },
2578 {
2579 "type" : "expression",
2580 "value" : {
2581 "type" : "expression",
2582 "value" : {
2583 "op" : "b2d",
2584 "left" : null,
2585 "right" : {
2586 "type" : "bool",
2587 "value" : true
2588 }
2589 }
2590 }
2591 }
2592 ]
2593 }
2594 ]
2595 },
2596 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002597 "name" : "act_2",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002598 "id" : 35,
Yi Tseng1d842672017-11-28 16:06:52 -08002599 "runtime_data" : [],
2600 "primitives" : [
2601 {
2602 "op" : "assign",
2603 "parameters" : [
2604 {
2605 "type" : "field",
2606 "value" : ["scalars", "next_tmp_0"]
2607 },
2608 {
2609 "type" : "expression",
2610 "value" : {
2611 "type" : "expression",
2612 "value" : {
2613 "op" : "b2d",
2614 "left" : null,
2615 "right" : {
2616 "type" : "bool",
2617 "value" : false
2618 }
2619 }
2620 }
2621 }
2622 ]
2623 }
2624 ]
2625 },
2626 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002627 "name" : "act_3",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002628 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002629 "runtime_data" : [],
2630 "primitives" : [
2631 {
2632 "op" : "assign",
2633 "parameters" : [
2634 {
2635 "type" : "field",
2636 "value" : ["ipv4", "ttl"]
2637 },
2638 {
2639 "type" : "expression",
2640 "value" : {
2641 "type" : "expression",
2642 "value" : {
2643 "op" : "&",
2644 "left" : {
2645 "type" : "expression",
2646 "value" : {
2647 "op" : "+",
2648 "left" : {
2649 "type" : "field",
2650 "value" : ["ipv4", "ttl"]
2651 },
2652 "right" : {
2653 "type" : "hexstr",
2654 "value" : "0xff"
2655 }
2656 }
2657 },
2658 "right" : {
2659 "type" : "hexstr",
2660 "value" : "0xff"
2661 }
2662 }
2663 }
2664 }
2665 ],
2666 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002667 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002668 "line" : 143,
Yi Tseng1d842672017-11-28 16:06:52 -08002669 "column" : 20,
2670 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2671 }
2672 }
2673 ]
2674 },
2675 {
Yi Tsengbd46d052018-01-22 17:18:16 -08002676 "name" : "act_4",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002677 "id" : 37,
2678 "runtime_data" : [],
2679 "primitives" : [
2680 {
2681 "op" : "assign",
2682 "parameters" : [
2683 {
2684 "type" : "field",
2685 "value" : ["ipv6", "hop_limit"]
2686 },
2687 {
2688 "type" : "expression",
2689 "value" : {
2690 "type" : "expression",
2691 "value" : {
2692 "op" : "&",
2693 "left" : {
2694 "type" : "expression",
2695 "value" : {
2696 "op" : "+",
2697 "left" : {
2698 "type" : "field",
2699 "value" : ["ipv6", "hop_limit"]
2700 },
2701 "right" : {
2702 "type" : "hexstr",
2703 "value" : "0xff"
2704 }
2705 }
2706 },
2707 "right" : {
2708 "type" : "hexstr",
2709 "value" : "0xff"
2710 }
2711 }
2712 }
2713 }
2714 ],
2715 "source_info" : {
2716 "filename" : "./include/control/next.p4",
2717 "line" : 147,
2718 "column" : 20,
2719 "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
2720 }
2721 }
2722 ]
2723 },
2724 {
2725 "name" : "act_5",
2726 "id" : 38,
Yi Tseng1d842672017-11-28 16:06:52 -08002727 "runtime_data" : [],
2728 "primitives" : [
2729 {
2730 "op" : "assign",
2731 "parameters" : [
2732 {
2733 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002734 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002735 },
2736 {
2737 "type" : "expression",
2738 "value" : {
2739 "type" : "expression",
2740 "value" : {
2741 "op" : "&",
2742 "left" : {
2743 "type" : "field",
2744 "value" : ["standard_metadata", "egress_spec"]
2745 },
2746 "right" : {
2747 "type" : "hexstr",
2748 "value" : "0xffffffff"
2749 }
2750 }
2751 }
2752 }
2753 ]
2754 },
2755 {
2756 "op" : "count",
2757 "parameters" : [
2758 {
2759 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002760 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07002761 },
2762 {
2763 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002764 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -07002765 }
2766 ],
2767 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002768 "filename" : "./include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002769 "line" : 28,
2770 "column" : 12,
2771 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
2772 }
2773 }
2774 ]
2775 },
2776 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002777 "name" : "act_6",
2778 "id" : 39,
Yi Tsengbe342052017-11-03 10:21:23 -07002779 "runtime_data" : [],
2780 "primitives" : [
2781 {
2782 "op" : "assign",
2783 "parameters" : [
2784 {
2785 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002786 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002787 },
2788 {
2789 "type" : "expression",
2790 "value" : {
2791 "type" : "expression",
2792 "value" : {
2793 "op" : "&",
2794 "left" : {
2795 "type" : "field",
2796 "value" : ["standard_metadata", "ingress_port"]
2797 },
2798 "right" : {
2799 "type" : "hexstr",
2800 "value" : "0xffffffff"
2801 }
2802 }
2803 }
2804 }
2805 ]
2806 },
2807 {
2808 "op" : "count",
2809 "parameters" : [
2810 {
2811 "type" : "counter_array",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002812 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
Yi Tsengbe342052017-11-03 10:21:23 -07002813 },
2814 {
2815 "type" : "field",
Yi Tsengc6844f52017-12-19 11:58:25 -08002816 "value" : ["scalars", "tmp_1"]
Yi Tsengbe342052017-11-03 10:21:23 -07002817 }
2818 ],
2819 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002820 "filename" : "./include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002821 "line" : 31,
2822 "column" : 12,
2823 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2824 }
2825 }
2826 ]
2827 },
2828 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002829 "name" : "act_7",
2830 "id" : 40,
Yi Tseng1d842672017-11-28 16:06:52 -08002831 "runtime_data" : [],
2832 "primitives" : [
2833 {
2834 "op" : "assign",
2835 "parameters" : [
2836 {
2837 "type" : "field",
2838 "value" : ["ethernet", "ether_type"]
2839 },
2840 {
2841 "type" : "field",
Yi Tsengbd46d052018-01-22 17:18:16 -08002842 "value" : ["vlan_tag", "ether_type"]
Yi Tseng1d842672017-11-28 16:06:52 -08002843 }
2844 ],
2845 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002846 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002847 "line" : 167,
Yi Tsengbd46d052018-01-22 17:18:16 -08002848 "column" : 12,
2849 "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
Yi Tseng1d842672017-11-28 16:06:52 -08002850 }
Yi Tsengbd46d052018-01-22 17:18:16 -08002851 },
Yi Tsengbe342052017-11-03 10:21:23 -07002852 {
2853 "op" : "remove_header",
2854 "parameters" : [
2855 {
2856 "type" : "header",
2857 "value" : "vlan_tag"
2858 }
2859 ],
2860 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002861 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08002862 "line" : 168,
Yi Tsengbe342052017-11-03 10:21:23 -07002863 "column" : 12,
2864 "source_fragment" : "hdr.vlan_tag.setInvalid()"
2865 }
2866 }
2867 ]
2868 },
2869 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002870 "name" : "act_8",
2871 "id" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07002872 "runtime_data" : [],
2873 "primitives" : [
2874 {
2875 "op" : "add_header",
2876 "parameters" : [
2877 {
2878 "type" : "header",
2879 "value" : "packet_in"
2880 }
2881 ],
2882 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002883 "filename" : "./include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002884 "line" : 39,
2885 "column" : 12,
2886 "source_fragment" : "hdr.packet_in.setValid()"
2887 }
2888 },
2889 {
2890 "op" : "assign",
2891 "parameters" : [
2892 {
2893 "type" : "field",
2894 "value" : ["packet_in", "ingress_port"]
2895 },
2896 {
2897 "type" : "field",
2898 "value" : ["standard_metadata", "ingress_port"]
2899 }
2900 ],
2901 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002902 "filename" : "./include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07002903 "line" : 40,
2904 "column" : 12,
2905 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2906 }
2907 }
2908 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002909 }
2910 ],
2911 "pipelines" : [
2912 {
2913 "name" : "ingress",
2914 "id" : 0,
2915 "source_info" : {
2916 "filename" : "fabric.p4",
Carmelo Casconeb81f4be2018-01-16 23:24:01 -08002917 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07002918 "column" : 8,
2919 "source_fragment" : "FabricIngress"
2920 },
2921 "init_table" : "node_2",
2922 "tables" : [
2923 {
2924 "name" : "tbl_act",
2925 "id" : 0,
2926 "key" : [],
2927 "match_type" : "exact",
2928 "type" : "simple",
2929 "max_size" : 1024,
2930 "with_counters" : false,
2931 "support_timeout" : false,
2932 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08002933 "action_ids" : [32],
Yi Tsengbe342052017-11-03 10:21:23 -07002934 "actions" : ["act"],
2935 "base_default_next" : null,
2936 "next_tables" : {
2937 "act" : null
2938 },
2939 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002940 "action_id" : 32,
Yi Tsengbe342052017-11-03 10:21:23 -07002941 "action_const" : true,
2942 "action_data" : [],
2943 "action_entry_const" : true
2944 }
2945 },
2946 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002947 "name" : "FabricIngress.filtering.ingress_port_vlan",
Yi Tsengbe342052017-11-03 10:21:23 -07002948 "id" : 1,
2949 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002950 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08002951 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07002952 "column" : 10,
2953 "source_fragment" : "ingress_port_vlan"
2954 },
2955 "key" : [
2956 {
2957 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002958 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002959 "target" : ["standard_metadata", "ingress_port"],
2960 "mask" : null
2961 },
2962 {
2963 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002964 "name" : "hdr.vlan_tag.is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07002965 "target" : ["vlan_tag", "$valid$"],
2966 "mask" : null
2967 },
2968 {
2969 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08002970 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002971 "target" : ["vlan_tag", "vlan_id"],
2972 "mask" : null
2973 }
2974 ],
2975 "match_type" : "ternary",
2976 "type" : "simple",
2977 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002978 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002979 "support_timeout" : false,
2980 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08002981 "action_ids" : [13, 12, 0, 11],
2982 "actions" : ["FabricIngress.filtering.push_internal_vlan", "FabricIngress.filtering.set_vlan", "nop", "FabricIngress.filtering.drop"],
2983 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002984 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002985 "FabricIngress.filtering.push_internal_vlan" : "FabricIngress.filtering.fwd_classifier",
2986 "FabricIngress.filtering.set_vlan" : "FabricIngress.filtering.fwd_classifier",
2987 "nop" : "FabricIngress.filtering.fwd_classifier",
2988 "FabricIngress.filtering.drop" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002989 },
2990 "default_entry" : {
Yi Tseng3a5731e2018-01-22 11:38:58 -08002991 "action_id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -07002992 "action_const" : true,
2993 "action_data" : [],
2994 "action_entry_const" : true
2995 }
2996 },
2997 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002998 "name" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002999 "id" : 2,
3000 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003001 "filename" : "./include/control/filtering.p4",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003002 "line" : 76,
Yi Tsengbe342052017-11-03 10:21:23 -07003003 "column" : 10,
3004 "source_fragment" : "fwd_classifier"
3005 },
3006 "key" : [
3007 {
3008 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003009 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003010 "target" : ["standard_metadata", "ingress_port"],
3011 "mask" : null
3012 },
3013 {
3014 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003015 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003016 "target" : ["ethernet", "dst_addr"],
3017 "mask" : null
3018 },
3019 {
3020 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003021 "name" : "fabric_metadata.original_ether_type",
Yi Tseng1d842672017-11-28 16:06:52 -08003022 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07003023 "mask" : null
3024 }
3025 ],
3026 "match_type" : "exact",
3027 "type" : "simple",
3028 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003029 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003030 "support_timeout" : false,
3031 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003032 "action_ids" : [14],
3033 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07003034 "base_default_next" : "node_6",
3035 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003036 "FabricIngress.filtering.set_forwarding_type" : "node_6"
Yi Tsengbe342052017-11-03 10:21:23 -07003037 },
3038 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003039 "action_id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07003040 "action_const" : true,
3041 "action_data" : ["0x0"],
3042 "action_entry_const" : true
3043 }
3044 },
3045 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003046 "name" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07003047 "id" : 3,
3048 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003049 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003050 "line" : 52,
Yi Tsengbe342052017-11-03 10:21:23 -07003051 "column" : 10,
3052 "source_fragment" : "bridging"
3053 },
3054 "key" : [
3055 {
3056 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003057 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003058 "target" : ["vlan_tag", "vlan_id"],
3059 "mask" : null
3060 },
3061 {
3062 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003063 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003064 "target" : ["ethernet", "dst_addr"],
3065 "mask" : null
3066 }
3067 ],
3068 "match_type" : "ternary",
3069 "type" : "simple",
3070 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003071 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003072 "support_timeout" : false,
3073 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003074 "action_ids" : [16, 2],
3075 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
3076 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003077 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003078 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
3079 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003080 },
3081 "default_entry" : {
3082 "action_id" : 2,
3083 "action_const" : false,
3084 "action_data" : [],
3085 "action_entry_const" : false
3086 }
3087 },
3088 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003089 "name" : "FabricIngress.forwarding.mpls",
Yi Tseng1d842672017-11-28 16:06:52 -08003090 "id" : 4,
3091 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003092 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003093 "line" : 64,
Yi Tseng1d842672017-11-28 16:06:52 -08003094 "column" : 10,
3095 "source_fragment" : "mpls"
3096 },
3097 "key" : [
3098 {
3099 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003100 "name" : "hdr.mpls.label",
Yi Tseng1d842672017-11-28 16:06:52 -08003101 "target" : ["mpls", "label"],
3102 "mask" : null
3103 }
3104 ],
3105 "match_type" : "exact",
3106 "type" : "simple",
3107 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003108 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003109 "support_timeout" : false,
3110 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003111 "action_ids" : [22, 3],
3112 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "NoAction"],
Yi Tsengbd46d052018-01-22 17:18:16 -08003113 "base_default_next" : "tbl_act_0",
Yi Tseng1d842672017-11-28 16:06:52 -08003114 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003115 "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_act_0",
Yi Tsengbd46d052018-01-22 17:18:16 -08003116 "NoAction" : "tbl_act_0"
Yi Tseng1d842672017-11-28 16:06:52 -08003117 },
3118 "default_entry" : {
3119 "action_id" : 3,
3120 "action_const" : false,
3121 "action_data" : [],
3122 "action_entry_const" : false
3123 }
3124 },
3125 {
3126 "name" : "tbl_act_0",
3127 "id" : 5,
3128 "key" : [],
3129 "match_type" : "exact",
3130 "type" : "simple",
3131 "max_size" : 1024,
3132 "with_counters" : false,
3133 "support_timeout" : false,
3134 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003135 "action_ids" : [33],
Yi Tseng1d842672017-11-28 16:06:52 -08003136 "actions" : ["act_0"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003137 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003138 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003139 "act_0" : "FabricIngress.forwarding.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003140 },
3141 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003142 "action_id" : 33,
Yi Tseng1d842672017-11-28 16:06:52 -08003143 "action_const" : true,
3144 "action_data" : [],
3145 "action_entry_const" : true
3146 }
3147 },
3148 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003149 "name" : "FabricIngress.forwarding.unicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003150 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003151 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003152 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003153 "line" : 75,
Yi Tseng1d842672017-11-28 16:06:52 -08003154 "column" : 10,
3155 "source_fragment" : "unicast_v4"
3156 },
3157 "key" : [
3158 {
3159 "match_type" : "lpm",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003160 "name" : "hdr.ipv4.dst_addr",
Yi Tseng1d842672017-11-28 16:06:52 -08003161 "target" : ["ipv4", "dst_addr"],
3162 "mask" : null
3163 }
3164 ],
3165 "match_type" : "lpm",
3166 "type" : "simple",
3167 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003168 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003169 "support_timeout" : false,
3170 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003171 "action_ids" : [17, 4],
3172 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
3173 "base_default_next" : "FabricIngress.forwarding.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003174 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003175 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
3176 "NoAction" : "FabricIngress.forwarding.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003177 },
3178 "default_entry" : {
3179 "action_id" : 4,
3180 "action_const" : false,
3181 "action_data" : [],
3182 "action_entry_const" : false
3183 }
3184 },
3185 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003186 "name" : "FabricIngress.forwarding.multicast_v4",
Yi Tsengbd46d052018-01-22 17:18:16 -08003187 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003188 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003189 "filename" : "./include/control/forwarding.p4",
3190 "line" : 89,
3191 "column" : 10,
3192 "source_fragment" : "multicast_v4"
3193 },
3194 "key" : [
3195 {
3196 "match_type" : "exact",
3197 "name" : "hdr.vlan_tag.vlan_id",
3198 "target" : ["vlan_tag", "vlan_id"],
3199 "mask" : null
3200 },
3201 {
3202 "match_type" : "lpm",
3203 "name" : "hdr.ipv4.dst_addr",
3204 "target" : ["ipv4", "dst_addr"],
3205 "mask" : null
3206 }
3207 ],
3208 "match_type" : "lpm",
3209 "type" : "simple",
3210 "max_size" : 1024,
3211 "with_counters" : true,
3212 "support_timeout" : false,
3213 "direct_meters" : null,
3214 "action_ids" : [18, 5],
3215 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
3216 "base_default_next" : "FabricIngress.forwarding.acl",
3217 "next_tables" : {
3218 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
3219 "NoAction" : "FabricIngress.forwarding.acl"
3220 },
3221 "default_entry" : {
3222 "action_id" : 5,
3223 "action_const" : false,
3224 "action_data" : [],
3225 "action_entry_const" : false
3226 }
3227 },
3228 {
3229 "name" : "FabricIngress.forwarding.unicast_v6",
3230 "id" : 8,
3231 "source_info" : {
3232 "filename" : "./include/control/forwarding.p4",
3233 "line" : 105,
3234 "column" : 10,
3235 "source_fragment" : "unicast_v6"
3236 },
3237 "key" : [
3238 {
3239 "match_type" : "lpm",
3240 "name" : "hdr.ipv6.dst_addr",
3241 "target" : ["ipv6", "dst_addr"],
3242 "mask" : null
3243 }
3244 ],
3245 "match_type" : "lpm",
3246 "type" : "simple",
3247 "max_size" : 1024,
3248 "with_counters" : true,
3249 "support_timeout" : false,
3250 "direct_meters" : null,
3251 "action_ids" : [19, 6],
3252 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
3253 "base_default_next" : "FabricIngress.forwarding.acl",
3254 "next_tables" : {
3255 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
3256 "NoAction" : "FabricIngress.forwarding.acl"
3257 },
3258 "default_entry" : {
3259 "action_id" : 6,
3260 "action_const" : false,
3261 "action_data" : [],
3262 "action_entry_const" : false
3263 }
3264 },
3265 {
3266 "name" : "FabricIngress.forwarding.multicast_v6",
3267 "id" : 9,
3268 "source_info" : {
3269 "filename" : "./include/control/forwarding.p4",
3270 "line" : 119,
3271 "column" : 10,
3272 "source_fragment" : "multicast_v6"
3273 },
3274 "key" : [
3275 {
3276 "match_type" : "exact",
3277 "name" : "hdr.vlan_tag.vlan_id",
3278 "target" : ["vlan_tag", "vlan_id"],
3279 "mask" : null
3280 },
3281 {
3282 "match_type" : "lpm",
3283 "name" : "hdr.ipv6.dst_addr",
3284 "target" : ["ipv6", "dst_addr"],
3285 "mask" : null
3286 }
3287 ],
3288 "match_type" : "lpm",
3289 "type" : "simple",
3290 "max_size" : 1024,
3291 "with_counters" : true,
3292 "support_timeout" : false,
3293 "direct_meters" : null,
3294 "action_ids" : [20, 7],
3295 "actions" : ["FabricIngress.forwarding.set_next_id", "NoAction"],
3296 "base_default_next" : "FabricIngress.forwarding.acl",
3297 "next_tables" : {
3298 "FabricIngress.forwarding.set_next_id" : "FabricIngress.forwarding.acl",
3299 "NoAction" : "FabricIngress.forwarding.acl"
3300 },
3301 "default_entry" : {
3302 "action_id" : 7,
3303 "action_const" : false,
3304 "action_data" : [],
3305 "action_entry_const" : false
3306 }
3307 },
3308 {
3309 "name" : "FabricIngress.forwarding.acl",
3310 "id" : 10,
3311 "source_info" : {
3312 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003313 "line" : 133,
Yi Tsengbe342052017-11-03 10:21:23 -07003314 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003315 "source_fragment" : "acl"
3316 },
3317 "key" : [
3318 {
3319 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003320 "name" : "standard_metadata.ingress_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003321 "target" : ["standard_metadata", "ingress_port"],
3322 "mask" : null
3323 },
3324 {
3325 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003326 "name" : "fabric_metadata.ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003327 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3328 "mask" : null
3329 },
3330 {
3331 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003332 "name" : "fabric_metadata.l4_src_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003333 "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
3334 "mask" : null
3335 },
3336 {
3337 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003338 "name" : "fabric_metadata.l4_dst_port",
Yi Tseng1d842672017-11-28 16:06:52 -08003339 "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
3340 "mask" : null
3341 },
3342 {
3343 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003344 "name" : "fabric_metadata.original_ether_type",
Yi Tsengc6844f52017-12-19 11:58:25 -08003345 "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
3346 "mask" : null
3347 },
3348 {
3349 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003350 "name" : "hdr.ethernet.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003351 "target" : ["ethernet", "dst_addr"],
3352 "mask" : null
3353 },
3354 {
3355 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003356 "name" : "hdr.ethernet.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003357 "target" : ["ethernet", "src_addr"],
3358 "mask" : null
3359 },
3360 {
3361 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003362 "name" : "hdr.vlan_tag.vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003363 "target" : ["vlan_tag", "vlan_id"],
3364 "mask" : null
3365 },
3366 {
3367 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003368 "name" : "hdr.ipv4.src_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003369 "target" : ["ipv4", "src_addr"],
3370 "mask" : null
3371 },
3372 {
3373 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003374 "name" : "hdr.ipv4.dst_addr",
Yi Tsengbe342052017-11-03 10:21:23 -07003375 "target" : ["ipv4", "dst_addr"],
3376 "mask" : null
3377 },
3378 {
3379 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003380 "name" : "hdr.icmp.icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003381 "target" : ["icmp", "icmp_type"],
3382 "mask" : null
3383 },
3384 {
3385 "match_type" : "ternary",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003386 "name" : "hdr.icmp.icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003387 "target" : ["icmp", "icmp_code"],
3388 "mask" : null
3389 }
3390 ],
3391 "match_type" : "ternary",
3392 "type" : "simple",
Yi Tseng1d842672017-11-28 16:06:52 -08003393 "max_size" : 256,
Yi Tsengbd46d052018-01-22 17:18:16 -08003394 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003395 "support_timeout" : false,
3396 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003397 "action_ids" : [21, 23, 15, 1],
3398 "actions" : ["FabricIngress.forwarding.set_next_id", "FabricIngress.forwarding.duplicate_to_controller", "FabricIngress.forwarding.drop", "nop"],
3399 "base_default_next" : "FabricIngress.next.simple",
Yi Tsengbe342052017-11-03 10:21:23 -07003400 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003401 "FabricIngress.forwarding.set_next_id" : "FabricIngress.next.simple",
3402 "FabricIngress.forwarding.duplicate_to_controller" : "FabricIngress.next.simple",
3403 "FabricIngress.forwarding.drop" : "FabricIngress.next.simple",
3404 "nop" : "FabricIngress.next.simple"
Yi Tsengbe342052017-11-03 10:21:23 -07003405 },
3406 "default_entry" : {
3407 "action_id" : 1,
3408 "action_const" : true,
3409 "action_data" : [],
3410 "action_entry_const" : true
3411 }
3412 },
3413 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003414 "name" : "FabricIngress.next.simple",
3415 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07003416 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003417 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003418 "line" : 83,
Yi Tsengbe342052017-11-03 10:21:23 -07003419 "column" : 10,
3420 "source_fragment" : "simple"
3421 },
3422 "key" : [
3423 {
3424 "match_type" : "exact",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003425 "name" : "fabric_metadata.next_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003426 "target" : ["scalars", "fabric_metadata_t.next_id"],
3427 "mask" : null
3428 }
3429 ],
3430 "match_type" : "exact",
3431 "type" : "simple",
3432 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003433 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003434 "support_timeout" : false,
3435 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003436 "action_ids" : [24, 25, 26, 28, 8],
3437 "actions" : ["FabricIngress.next.output", "FabricIngress.next.set_vlan_output", "FabricIngress.next.l3_routing", "FabricIngress.next.mpls_routing_v4", "NoAction"],
Yi Tseng1d842672017-11-28 16:06:52 -08003438 "base_default_next" : null,
Yi Tsengbe342052017-11-03 10:21:23 -07003439 "next_tables" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003440 "__HIT__" : "tbl_act_1",
3441 "__MISS__" : "tbl_act_2"
Yi Tsengbe342052017-11-03 10:21:23 -07003442 },
3443 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003444 "action_id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003445 "action_const" : false,
3446 "action_data" : [],
3447 "action_entry_const" : false
3448 }
3449 },
3450 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003451 "name" : "tbl_act_1",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003452 "id" : 12,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003453 "key" : [],
3454 "match_type" : "exact",
3455 "type" : "simple",
3456 "max_size" : 1024,
3457 "with_counters" : false,
3458 "support_timeout" : false,
3459 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003460 "action_ids" : [34],
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003461 "actions" : ["act_1"],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003462 "base_default_next" : "node_23",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003463 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003464 "act_1" : "node_23"
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003465 },
3466 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003467 "action_id" : 34,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003468 "action_const" : true,
3469 "action_data" : [],
3470 "action_entry_const" : true
3471 }
3472 },
3473 {
3474 "name" : "tbl_act_2",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003475 "id" : 13,
3476 "key" : [],
3477 "match_type" : "exact",
3478 "type" : "simple",
3479 "max_size" : 1024,
3480 "with_counters" : false,
3481 "support_timeout" : false,
3482 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003483 "action_ids" : [35],
3484 "actions" : ["act_2"],
3485 "base_default_next" : "node_23",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003486 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003487 "act_2" : "node_23"
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003488 },
3489 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003490 "action_id" : 35,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003491 "action_const" : true,
3492 "action_data" : [],
3493 "action_entry_const" : true
3494 }
3495 },
3496 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003497 "name" : "tbl_act_3",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003498 "id" : 14,
3499 "key" : [],
3500 "match_type" : "exact",
3501 "type" : "simple",
3502 "max_size" : 1024,
3503 "with_counters" : false,
3504 "support_timeout" : false,
3505 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003506 "action_ids" : [36],
3507 "actions" : ["act_3"],
3508 "base_default_next" : "FabricIngress.next.hashed",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003509 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003510 "act_3" : "FabricIngress.next.hashed"
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003511 },
3512 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003513 "action_id" : 36,
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003514 "action_const" : true,
3515 "action_data" : [],
3516 "action_entry_const" : true
3517 }
3518 },
3519 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003520 "name" : "tbl_act_4",
Carmelo Casconeed88f2b2018-01-26 17:36:34 -08003521 "id" : 15,
Yi Tsengbd46d052018-01-22 17:18:16 -08003522 "key" : [],
3523 "match_type" : "exact",
3524 "type" : "simple",
3525 "max_size" : 1024,
3526 "with_counters" : false,
3527 "support_timeout" : false,
3528 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003529 "action_ids" : [37],
3530 "actions" : ["act_4"],
3531 "base_default_next" : "FabricIngress.next.hashed",
Yi Tsengbe342052017-11-03 10:21:23 -07003532 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003533 "act_4" : "FabricIngress.next.hashed"
Yi Tsengbe342052017-11-03 10:21:23 -07003534 },
3535 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003536 "action_id" : 37,
3537 "action_const" : true,
3538 "action_data" : [],
3539 "action_entry_const" : true
3540 }
3541 },
3542 {
3543 "name" : "FabricIngress.next.hashed",
3544 "id" : 16,
3545 "source_info" : {
3546 "filename" : "./include/control/next.p4",
3547 "line" : 97,
3548 "column" : 10,
3549 "source_fragment" : "hashed"
3550 },
3551 "key" : [
3552 {
3553 "match_type" : "exact",
3554 "name" : "fabric_metadata.next_id",
3555 "target" : ["scalars", "fabric_metadata_t.next_id"],
3556 "mask" : null
3557 }
3558 ],
3559 "match_type" : "exact",
3560 "type" : "indirect_ws",
3561 "action_profile" : "FabricIngress.next.ecmp_selector",
3562 "max_size" : 1024,
3563 "with_counters" : true,
3564 "support_timeout" : false,
3565 "direct_meters" : null,
3566 "action_ids" : [27, 29, 30, 9],
3567 "actions" : ["FabricIngress.next.l3_routing", "FabricIngress.next.mpls_routing_v4", "FabricIngress.next.mpls_routing_v6", "NoAction"],
3568 "base_default_next" : "FabricIngress.next.multicast",
3569 "next_tables" : {
3570 "FabricIngress.next.l3_routing" : "FabricIngress.next.multicast",
3571 "FabricIngress.next.mpls_routing_v4" : "FabricIngress.next.multicast",
3572 "FabricIngress.next.mpls_routing_v6" : "FabricIngress.next.multicast",
3573 "NoAction" : "FabricIngress.next.multicast"
3574 }
3575 },
3576 {
3577 "name" : "FabricIngress.next.multicast",
3578 "id" : 17,
3579 "source_info" : {
3580 "filename" : "./include/control/next.p4",
3581 "line" : 128,
3582 "column" : 10,
3583 "source_fragment" : "multicast"
3584 },
3585 "key" : [
3586 {
3587 "match_type" : "exact",
3588 "name" : "fabric_metadata.next_id",
3589 "target" : ["scalars", "fabric_metadata_t.next_id"],
3590 "mask" : null
3591 }
3592 ],
3593 "match_type" : "exact",
3594 "type" : "simple",
3595 "max_size" : 1024,
3596 "with_counters" : true,
3597 "support_timeout" : false,
3598 "direct_meters" : null,
3599 "action_ids" : [31, 10],
3600 "actions" : ["FabricIngress.next.set_mcast_group", "NoAction"],
3601 "base_default_next" : "node_31",
3602 "next_tables" : {
3603 "FabricIngress.next.set_mcast_group" : "node_31",
3604 "NoAction" : "node_31"
3605 },
3606 "default_entry" : {
3607 "action_id" : 10,
3608 "action_const" : false,
3609 "action_data" : [],
3610 "action_entry_const" : false
3611 }
3612 },
3613 {
3614 "name" : "tbl_act_5",
3615 "id" : 18,
3616 "key" : [],
3617 "match_type" : "exact",
3618 "type" : "simple",
3619 "max_size" : 1024,
3620 "with_counters" : false,
3621 "support_timeout" : false,
3622 "direct_meters" : null,
3623 "action_ids" : [38],
3624 "actions" : ["act_5"],
3625 "base_default_next" : "node_33",
3626 "next_tables" : {
3627 "act_5" : "node_33"
3628 },
3629 "default_entry" : {
3630 "action_id" : 38,
3631 "action_const" : true,
3632 "action_data" : [],
3633 "action_entry_const" : true
3634 }
3635 },
3636 {
3637 "name" : "tbl_act_6",
3638 "id" : 19,
3639 "key" : [],
3640 "match_type" : "exact",
3641 "type" : "simple",
3642 "max_size" : 1024,
3643 "with_counters" : false,
3644 "support_timeout" : false,
3645 "direct_meters" : null,
3646 "action_ids" : [39],
3647 "actions" : ["act_6"],
3648 "base_default_next" : "node_35",
3649 "next_tables" : {
3650 "act_6" : "node_35"
3651 },
3652 "default_entry" : {
3653 "action_id" : 39,
3654 "action_const" : true,
3655 "action_data" : [],
3656 "action_entry_const" : true
3657 }
3658 },
3659 {
3660 "name" : "tbl_act_7",
3661 "id" : 20,
3662 "key" : [],
3663 "match_type" : "exact",
3664 "type" : "simple",
3665 "max_size" : 1024,
3666 "with_counters" : false,
3667 "support_timeout" : false,
3668 "direct_meters" : null,
3669 "action_ids" : [40],
3670 "actions" : ["act_7"],
3671 "base_default_next" : null,
3672 "next_tables" : {
3673 "act_7" : null
3674 },
3675 "default_entry" : {
3676 "action_id" : 40,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003677 "action_const" : true,
3678 "action_data" : [],
3679 "action_entry_const" : true
3680 }
Yi Tsengbe342052017-11-03 10:21:23 -07003681 }
3682 ],
3683 "action_profiles" : [
3684 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003685 "name" : "FabricIngress.next.ecmp_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003686 "id" : 0,
3687 "max_size" : 64,
3688 "selector" : {
3689 "algo" : "crc16",
3690 "input" : [
3691 {
3692 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003693 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003694 },
3695 {
3696 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003697 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003698 },
3699 {
3700 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003701 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003702 },
3703 {
3704 "type" : "field",
3705 "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
3706 },
3707 {
3708 "type" : "field",
3709 "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
3710 }
3711 ]
3712 }
3713 }
3714 ],
3715 "conditionals" : [
3716 {
3717 "name" : "node_2",
3718 "id" : 0,
3719 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003720 "filename" : "./include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003721 "line" : 25,
3722 "column" : 12,
3723 "source_fragment" : "hdr.packet_out.isValid()"
3724 },
3725 "expression" : {
3726 "type" : "expression",
3727 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003728 "op" : "d2b",
3729 "left" : null,
3730 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003731 "type" : "field",
3732 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003733 }
3734 }
3735 },
3736 "true_next" : "tbl_act",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003737 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Yi Tsengbe342052017-11-03 10:21:23 -07003738 },
3739 {
3740 "name" : "node_6",
3741 "id" : 1,
3742 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003743 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003744 "line" : 163,
Yi Tsengbe342052017-11-03 10:21:23 -07003745 "column" : 11,
3746 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3747 },
3748 "expression" : {
3749 "type" : "expression",
3750 "value" : {
3751 "op" : "==",
3752 "left" : {
3753 "type" : "field",
3754 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3755 },
3756 "right" : {
3757 "type" : "hexstr",
3758 "value" : "0x00"
3759 }
3760 }
3761 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003762 "true_next" : "FabricIngress.forwarding.bridging",
Yi Tsengbe342052017-11-03 10:21:23 -07003763 "false_next" : "node_8"
3764 },
3765 {
3766 "name" : "node_8",
3767 "id" : 2,
3768 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003769 "filename" : "./include/control/forwarding.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003770 "line" : 164,
Yi Tsengbe342052017-11-03 10:21:23 -07003771 "column" : 17,
3772 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3773 },
3774 "expression" : {
3775 "type" : "expression",
3776 "value" : {
3777 "op" : "==",
3778 "left" : {
3779 "type" : "field",
3780 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3781 },
3782 "right" : {
3783 "type" : "hexstr",
3784 "value" : "0x01"
3785 }
3786 }
3787 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003788 "true_next" : "FabricIngress.forwarding.mpls",
Yi Tsengbd46d052018-01-22 17:18:16 -08003789 "false_next" : "node_11"
Yi Tsengbe342052017-11-03 10:21:23 -07003790 },
3791 {
Yi Tsengbd46d052018-01-22 17:18:16 -08003792 "name" : "node_11",
Yi Tsengbe342052017-11-03 10:21:23 -07003793 "id" : 3,
3794 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003795 "filename" : "./include/control/forwarding.p4",
3796 "line" : 171,
Yi Tsengbe342052017-11-03 10:21:23 -07003797 "column" : 17,
3798 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3799 },
3800 "expression" : {
3801 "type" : "expression",
3802 "value" : {
3803 "op" : "==",
3804 "left" : {
3805 "type" : "field",
3806 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3807 },
3808 "right" : {
3809 "type" : "hexstr",
3810 "value" : "0x02"
3811 }
3812 }
3813 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003814 "true_next" : "FabricIngress.forwarding.unicast_v4",
3815 "false_next" : "node_13"
3816 },
3817 {
3818 "name" : "node_13",
3819 "id" : 4,
3820 "source_info" : {
3821 "filename" : "./include/control/forwarding.p4",
3822 "line" : 173,
3823 "column" : 17,
3824 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
3825 },
3826 "expression" : {
3827 "type" : "expression",
3828 "value" : {
3829 "op" : "==",
3830 "left" : {
3831 "type" : "field",
3832 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3833 },
3834 "right" : {
3835 "type" : "hexstr",
3836 "value" : "0x03"
3837 }
3838 }
3839 },
3840 "true_next" : "FabricIngress.forwarding.multicast_v4",
3841 "false_next" : "node_15"
3842 },
3843 {
3844 "name" : "node_15",
3845 "id" : 5,
3846 "source_info" : {
3847 "filename" : "./include/control/forwarding.p4",
3848 "line" : 176,
3849 "column" : 17,
3850 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
3851 },
3852 "expression" : {
3853 "type" : "expression",
3854 "value" : {
3855 "op" : "==",
3856 "left" : {
3857 "type" : "field",
3858 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3859 },
3860 "right" : {
3861 "type" : "hexstr",
3862 "value" : "0x04"
3863 }
3864 }
3865 },
3866 "true_next" : "FabricIngress.forwarding.unicast_v6",
3867 "false_next" : "node_17"
Yi Tsengbe342052017-11-03 10:21:23 -07003868 },
3869 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003870 "name" : "node_17",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003871 "id" : 6,
3872 "source_info" : {
3873 "filename" : "./include/control/forwarding.p4",
3874 "line" : 178,
3875 "column" : 17,
3876 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
3877 },
3878 "expression" : {
3879 "type" : "expression",
3880 "value" : {
3881 "op" : "==",
3882 "left" : {
3883 "type" : "field",
3884 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3885 },
3886 "right" : {
3887 "type" : "hexstr",
3888 "value" : "0x05"
3889 }
3890 }
3891 },
3892 "true_next" : "FabricIngress.forwarding.multicast_v6",
3893 "false_next" : "FabricIngress.forwarding.acl"
3894 },
3895 {
3896 "name" : "node_23",
3897 "id" : 7,
Yi Tseng1d842672017-11-28 16:06:52 -08003898 "expression" : {
3899 "type" : "expression",
3900 "value" : {
3901 "op" : "d2b",
3902 "left" : null,
3903 "right" : {
3904 "type" : "field",
3905 "value" : ["scalars", "next_tmp_0"]
3906 }
3907 }
3908 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003909 "true_next" : "node_24",
3910 "false_next" : "FabricIngress.next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003911 },
3912 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003913 "name" : "node_24",
3914 "id" : 8,
Yi Tseng1d842672017-11-28 16:06:52 -08003915 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003916 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003917 "line" : 141,
Yi Tsengbd46d052018-01-22 17:18:16 -08003918 "column" : 16,
3919 "source_fragment" : "!hdr.mpls.isValid()"
Yi Tseng1d842672017-11-28 16:06:52 -08003920 },
3921 "expression" : {
3922 "type" : "expression",
3923 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003924 "op" : "not",
3925 "left" : null,
Yi Tseng1d842672017-11-28 16:06:52 -08003926 "right" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003927 "type" : "expression",
3928 "value" : {
3929 "op" : "d2b",
3930 "left" : null,
3931 "right" : {
3932 "type" : "field",
3933 "value" : ["mpls", "$valid$"]
3934 }
3935 }
Yi Tseng1d842672017-11-28 16:06:52 -08003936 }
3937 }
3938 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003939 "true_next" : "node_25",
3940 "false_next" : "FabricIngress.next.hashed"
Yi Tseng1d842672017-11-28 16:06:52 -08003941 },
3942 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003943 "name" : "node_25",
3944 "id" : 9,
Yi Tseng1d842672017-11-28 16:06:52 -08003945 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003946 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08003947 "line" : 142,
Yi Tseng1d842672017-11-28 16:06:52 -08003948 "column" : 19,
3949 "source_fragment" : "hdr.ipv4.isValid()"
3950 },
3951 "expression" : {
3952 "type" : "expression",
3953 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003954 "op" : "d2b",
3955 "left" : null,
3956 "right" : {
Yi Tseng1d842672017-11-28 16:06:52 -08003957 "type" : "field",
3958 "value" : ["ipv4", "$valid$"]
Yi Tseng1d842672017-11-28 16:06:52 -08003959 }
3960 }
3961 },
Yi Tsengbd46d052018-01-22 17:18:16 -08003962 "true_next" : "tbl_act_3",
Yi Tseng27b9bc02018-04-12 14:52:40 +08003963 "false_next" : "node_27"
Yi Tseng1d842672017-11-28 16:06:52 -08003964 },
3965 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003966 "name" : "node_27",
3967 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003968 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003969 "filename" : "./include/control/next.p4",
3970 "line" : 146,
3971 "column" : 25,
3972 "source_fragment" : "hdr.ipv6.isValid()"
3973 },
3974 "expression" : {
3975 "type" : "expression",
3976 "value" : {
3977 "op" : "d2b",
3978 "left" : null,
3979 "right" : {
3980 "type" : "field",
3981 "value" : ["ipv6", "$valid$"]
3982 }
3983 }
3984 },
3985 "true_next" : "tbl_act_4",
3986 "false_next" : "FabricIngress.next.hashed"
3987 },
3988 {
3989 "name" : "node_31",
3990 "id" : 11,
3991 "source_info" : {
3992 "filename" : "./include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07003993 "line" : 27,
3994 "column" : 12,
3995 "source_fragment" : "standard_metadata.egress_spec < 511"
3996 },
3997 "expression" : {
3998 "type" : "expression",
3999 "value" : {
4000 "op" : "<",
4001 "left" : {
4002 "type" : "field",
4003 "value" : ["standard_metadata", "egress_spec"]
4004 },
4005 "right" : {
4006 "type" : "hexstr",
4007 "value" : "0x01ff"
4008 }
4009 }
4010 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08004011 "true_next" : "tbl_act_5",
4012 "false_next" : "node_33"
Yi Tsengbe342052017-11-03 10:21:23 -07004013 },
4014 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004015 "name" : "node_33",
4016 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07004017 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004018 "filename" : "./include/control/port_counter.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07004019 "line" : 30,
4020 "column" : 12,
4021 "source_fragment" : "standard_metadata.ingress_port < 511"
4022 },
4023 "expression" : {
4024 "type" : "expression",
4025 "value" : {
4026 "op" : "<",
4027 "left" : {
4028 "type" : "field",
4029 "value" : ["standard_metadata", "ingress_port"]
4030 },
4031 "right" : {
4032 "type" : "hexstr",
4033 "value" : "0x01ff"
4034 }
4035 }
4036 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08004037 "true_next" : "tbl_act_6",
4038 "false_next" : "node_35"
Yi Tsengf55eaa82017-11-29 15:51:28 -08004039 },
4040 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004041 "name" : "node_35",
4042 "id" : 13,
Yi Tsengbe342052017-11-03 10:21:23 -07004043 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004044 "filename" : "./include/control/next.p4",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08004045 "line" : 166,
Yi Tsengbe342052017-11-03 10:21:23 -07004046 "column" : 12,
4047 "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
4048 },
4049 "expression" : {
4050 "type" : "expression",
4051 "value" : {
4052 "op" : "d2b",
4053 "left" : null,
4054 "right" : {
4055 "type" : "field",
4056 "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
4057 }
4058 }
4059 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08004060 "false_next" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08004061 "true_next" : "tbl_act_7"
Yi Tseng3a5731e2018-01-22 11:38:58 -08004062 }
4063 ]
4064 },
4065 {
4066 "name" : "egress",
4067 "id" : 1,
4068 "source_info" : {
4069 "filename" : "fabric.p4",
Carmelo Casconeb531b682018-01-30 17:55:56 -08004070 "line" : 62,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004071 "column" : 8,
4072 "source_fragment" : "FabricEgress"
4073 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08004074 "init_table" : "node_39",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004075 "tables" : [
4076 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004077 "name" : "tbl_act_8",
4078 "id" : 21,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004079 "key" : [],
4080 "match_type" : "exact",
4081 "type" : "simple",
4082 "max_size" : 1024,
4083 "with_counters" : false,
4084 "support_timeout" : false,
4085 "direct_meters" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08004086 "action_ids" : [41],
4087 "actions" : ["act_8"],
Yi Tseng3a5731e2018-01-22 11:38:58 -08004088 "base_default_next" : null,
4089 "next_tables" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004090 "act_8" : null
Yi Tseng3a5731e2018-01-22 11:38:58 -08004091 },
4092 "default_entry" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004093 "action_id" : 41,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004094 "action_const" : true,
4095 "action_data" : [],
4096 "action_entry_const" : true
4097 }
4098 }
4099 ],
4100 "action_profiles" : [],
4101 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004102 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004103 "name" : "node_39",
4104 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07004105 "source_info" : {
Yi Tseng27b9bc02018-04-12 14:52:40 +08004106 "filename" : "./include/control/packetio.p4",
Yi Tsengbe342052017-11-03 10:21:23 -07004107 "line" : 38,
4108 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08004109 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07004110 },
4111 "expression" : {
4112 "type" : "expression",
4113 "value" : {
4114 "op" : "==",
4115 "left" : {
4116 "type" : "field",
4117 "value" : ["standard_metadata", "egress_port"]
4118 },
4119 "right" : {
4120 "type" : "hexstr",
4121 "value" : "0x00ff"
4122 }
4123 }
4124 },
4125 "false_next" : null,
Yi Tseng27b9bc02018-04-12 14:52:40 +08004126 "true_next" : "tbl_act_8"
Yi Tsengbe342052017-11-03 10:21:23 -07004127 }
4128 ]
4129 }
4130 ],
4131 "checksums" : [
4132 {
4133 "name" : "cksum",
4134 "id" : 0,
4135 "target" : ["ipv4", "hdr_checksum"],
4136 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004137 "calculation" : "calc",
4138 "if_cond" : {
4139 "type" : "expression",
4140 "value" : {
4141 "op" : "d2b",
4142 "left" : null,
4143 "right" : {
4144 "type" : "field",
4145 "value" : ["ipv4", "$valid$"]
4146 }
4147 }
4148 }
Yi Tsengbe342052017-11-03 10:21:23 -07004149 },
4150 {
4151 "name" : "cksum_0",
4152 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -07004153 "target" : ["ipv4", "hdr_checksum"],
4154 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004155 "calculation" : "calc_0",
4156 "if_cond" : {
4157 "type" : "expression",
4158 "value" : {
4159 "op" : "d2b",
4160 "left" : null,
4161 "right" : {
4162 "type" : "field",
4163 "value" : ["ipv4", "$valid$"]
4164 }
4165 }
4166 }
Yi Tsengbe342052017-11-03 10:21:23 -07004167 }
4168 ],
4169 "force_arith" : [],
4170 "extern_instances" : [],
4171 "field_aliases" : [
4172 [
4173 "queueing_metadata.enq_timestamp",
4174 ["standard_metadata", "enq_timestamp"]
4175 ],
4176 [
4177 "queueing_metadata.enq_qdepth",
4178 ["standard_metadata", "enq_qdepth"]
4179 ],
4180 [
4181 "queueing_metadata.deq_timedelta",
4182 ["standard_metadata", "deq_timedelta"]
4183 ],
4184 [
4185 "queueing_metadata.deq_qdepth",
4186 ["standard_metadata", "deq_qdepth"]
4187 ],
4188 [
4189 "intrinsic_metadata.ingress_global_timestamp",
4190 ["standard_metadata", "ingress_global_timestamp"]
4191 ],
4192 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08004193 "intrinsic_metadata.egress_global_timestamp",
4194 ["standard_metadata", "egress_global_timestamp"]
4195 ],
4196 [
Yi Tsengbe342052017-11-03 10:21:23 -07004197 "intrinsic_metadata.lf_field_list",
4198 ["standard_metadata", "lf_field_list"]
4199 ],
4200 [
4201 "intrinsic_metadata.mcast_grp",
4202 ["standard_metadata", "mcast_grp"]
4203 ],
4204 [
4205 "intrinsic_metadata.resubmit_flag",
4206 ["standard_metadata", "resubmit_flag"]
4207 ],
4208 [
4209 "intrinsic_metadata.egress_rid",
4210 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08004211 ],
4212 [
4213 "intrinsic_metadata.recirculate_flag",
4214 ["standard_metadata", "recirculate_flag"]
Yi Tsengbe342052017-11-03 10:21:23 -07004215 ]
4216 ]
4217}