blob: aeae27bc4e8c9ecbe30fd0d6ca9f6ef3b894f703 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tsengbe342052017-11-03 10:21:23 -07002 "header_types" : [
3 {
4 "name" : "scalars_0",
5 "id" : 0,
6 "fields" : [
Daniele Moro5a2de712019-09-24 14:34:07 -07007 ["tmp_0", 16, false],
8 ["tmp_1", 16, false],
9 ["tmp_2", 4, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080010 ["tmp", 32, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070011 ["tmp_3", 32, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080012 ["egress_next_tmp", 1, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080013 ["fabric_metadata_t.ip_eth_type", 16, false],
14 ["fabric_metadata_t.vlan_id", 12, false],
15 ["fabric_metadata_t.vlan_pri", 3, false],
16 ["fabric_metadata_t.vlan_cfi", 1, false],
17 ["fabric_metadata_t.mpls_label", 20, false],
18 ["fabric_metadata_t.mpls_ttl", 8, false],
19 ["fabric_metadata_t.skip_forwarding", 1, false],
20 ["fabric_metadata_t.skip_next", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070021 ["fabric_metadata_t.fwd_type", 3, false],
22 ["fabric_metadata_t.next_id", 32, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020023 ["fabric_metadata_t.is_multicast", 1, false],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -070024 ["fabric_metadata_t.is_controller_packet_out", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070025 ["fabric_metadata_t.ip_proto", 8, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080026 ["fabric_metadata_t.l4_sport", 16, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070027 ["fabric_metadata_t.l4_dport", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080028 ]
29 },
30 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +020031 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -080032 "id" : 1,
33 "fields" : [
Carmelo Cascone6af4e172018-06-15 16:01:30 +020034 ["ingress_port", 9, false],
35 ["egress_spec", 9, false],
36 ["egress_port", 9, false],
37 ["clone_spec", 32, false],
38 ["instance_type", 32, false],
39 ["drop", 1, false],
40 ["recirculate_port", 16, false],
41 ["packet_length", 32, false],
42 ["enq_timestamp", 32, false],
43 ["enq_qdepth", 19, false],
44 ["deq_timedelta", 32, false],
45 ["deq_qdepth", 19, false],
46 ["ingress_global_timestamp", 48, false],
47 ["egress_global_timestamp", 48, false],
48 ["lf_field_list", 32, false],
49 ["mcast_grp", 16, false],
50 ["resubmit_flag", 32, false],
51 ["egress_rid", 16, false],
Carmelo Cascone6af4e172018-06-15 16:01:30 +020052 ["recirculate_flag", 32, false],
Carmelo Cascone9b607da2019-05-08 14:03:01 -070053 ["checksum_error", 1, false],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -070054 ["parser_error", 32, false],
Carmelo Cascone9b607da2019-05-08 14:03:01 -070055 ["priority", 3, false],
56 ["_padding", 2, false]
Carmelo Cascone6af4e172018-06-15 16:01:30 +020057 ]
58 },
59 {
60 "name" : "ethernet_t",
61 "id" : 2,
62 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080063 ["dst_addr", 48, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070064 ["src_addr", 48, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080065 ]
66 },
67 {
68 "name" : "vlan_tag_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020069 "id" : 3,
Yi Tsengc6844f52017-12-19 11:58:25 -080070 "fields" : [
Daniele Moro5a2de712019-09-24 14:34:07 -070071 ["eth_type", 16, false],
Yi Tsengc6844f52017-12-19 11:58:25 -080072 ["pri", 3, false],
73 ["cfi", 1, false],
Daniele Moro5a2de712019-09-24 14:34:07 -070074 ["vlan_id", 12, false]
75 ]
76 },
77 {
78 "name" : "eth_type_t",
79 "id" : 4,
80 "fields" : [
81 ["value", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080082 ]
83 },
84 {
85 "name" : "mpls_t",
Daniele Moro5a2de712019-09-24 14:34:07 -070086 "id" : 5,
Yi Tsengc6844f52017-12-19 11:58:25 -080087 "fields" : [
88 ["label", 20, false],
89 ["tc", 3, false],
90 ["bos", 1, false],
91 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070092 ]
93 },
94 {
95 "name" : "ipv4_t",
Daniele Moro5a2de712019-09-24 14:34:07 -070096 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -070097 "fields" : [
98 ["version", 4, false],
99 ["ihl", 4, false],
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900100 ["dscp", 6, false],
101 ["ecn", 2, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700102 ["total_len", 16, false],
103 ["identification", 16, false],
104 ["flags", 3, false],
105 ["frag_offset", 13, false],
106 ["ttl", 8, false],
107 ["protocol", 8, false],
108 ["hdr_checksum", 16, false],
109 ["src_addr", 32, false],
110 ["dst_addr", 32, false]
111 ]
112 },
113 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800114 "name" : "tcp_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700115 "id" : 7,
Yi Tseng47eac892018-07-11 02:17:04 +0800116 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800117 ["sport", 16, false],
118 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700119 ["seq_no", 32, false],
120 ["ack_no", 32, false],
121 ["data_offset", 4, false],
122 ["res", 3, false],
123 ["ecn", 3, false],
124 ["ctrl", 6, false],
125 ["window", 16, false],
126 ["checksum", 16, false],
127 ["urgent_ptr", 16, false]
128 ]
129 },
130 {
131 "name" : "udp_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700132 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700133 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800134 ["sport", 16, false],
135 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700136 ["len", 16, false],
137 ["checksum", 16, false]
138 ]
139 },
140 {
141 "name" : "icmp_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700142 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700143 "fields" : [
144 ["icmp_type", 8, false],
145 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800146 ["checksum", 16, false],
147 ["identifier", 16, false],
148 ["sequence_number", 16, false],
149 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700150 ]
151 },
152 {
153 "name" : "packet_out_header_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700154 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700155 "fields" : [
156 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800157 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700158 ]
159 },
160 {
161 "name" : "packet_in_header_t",
Daniele Moro5a2de712019-09-24 14:34:07 -0700162 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700163 "fields" : [
164 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800165 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700166 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700167 }
168 ],
169 "headers" : [
170 {
Yi Tsengbe342052017-11-03 10:21:23 -0700171 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800172 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700173 "header_type" : "scalars_0",
174 "metadata" : true,
175 "pi_omit" : true
176 },
177 {
178 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800179 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700180 "header_type" : "standard_metadata",
181 "metadata" : true,
182 "pi_omit" : true
183 },
184 {
185 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800186 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700187 "header_type" : "ethernet_t",
188 "metadata" : false,
189 "pi_omit" : true
190 },
191 {
192 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800193 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700194 "header_type" : "vlan_tag_t",
195 "metadata" : false,
196 "pi_omit" : true
197 },
198 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800199 "name" : "inner_vlan_tag",
Yi Tsengbd46d052018-01-22 17:18:16 -0800200 "id" : 4,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800201 "header_type" : "vlan_tag_t",
202 "metadata" : false,
203 "pi_omit" : true
204 },
205 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700206 "name" : "eth_type",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800207 "id" : 5,
Daniele Moro5a2de712019-09-24 14:34:07 -0700208 "header_type" : "eth_type_t",
209 "metadata" : false,
210 "pi_omit" : true
211 },
212 {
213 "name" : "mpls",
214 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700215 "header_type" : "mpls_t",
216 "metadata" : false,
217 "pi_omit" : true
218 },
219 {
220 "name" : "ipv4",
Daniele Moro5a2de712019-09-24 14:34:07 -0700221 "id" : 7,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800222 "header_type" : "ipv4_t",
Yi Tsengbe342052017-11-03 10:21:23 -0700223 "metadata" : false,
224 "pi_omit" : true
225 },
226 {
227 "name" : "tcp",
Daniele Moro5a2de712019-09-24 14:34:07 -0700228 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700229 "header_type" : "tcp_t",
230 "metadata" : false,
231 "pi_omit" : true
232 },
233 {
234 "name" : "udp",
Daniele Moro5a2de712019-09-24 14:34:07 -0700235 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700236 "header_type" : "udp_t",
237 "metadata" : false,
238 "pi_omit" : true
239 },
240 {
241 "name" : "icmp",
Daniele Moro5a2de712019-09-24 14:34:07 -0700242 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700243 "header_type" : "icmp_t",
244 "metadata" : false,
245 "pi_omit" : true
246 },
247 {
248 "name" : "packet_out",
Daniele Moro5a2de712019-09-24 14:34:07 -0700249 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700250 "header_type" : "packet_out_header_t",
251 "metadata" : false,
252 "pi_omit" : true
253 },
254 {
255 "name" : "packet_in",
Daniele Moro5a2de712019-09-24 14:34:07 -0700256 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -0700257 "header_type" : "packet_in_header_t",
258 "metadata" : false,
259 "pi_omit" : true
260 }
261 ],
262 "header_stacks" : [],
263 "header_union_types" : [],
264 "header_unions" : [],
265 "header_union_stacks" : [],
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700266 "field_lists" : [
267 {
268 "id" : 1,
269 "name" : "fl",
270 "source_info" : {
Daniele Moro3b7a21b2019-06-25 17:33:40 -0700271 "filename" : "include/control/acl.p4",
272 "line" : 46,
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700273 "column" : 40,
Daniele Moro3b7a21b2019-06-25 17:33:40 -0700274 "source_fragment" : "{standard_metadata.ingress_port}"
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700275 },
276 "elements" : [
277 {
278 "type" : "field",
279 "value" : ["standard_metadata", "ingress_port"]
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700280 }
281 ]
282 }
283 ],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700284 "errors" : [
Carmelo Cascone4d8785b2019-05-31 17:11:26 -0700285 ["NoError", 1],
286 ["PacketTooShort", 2],
287 ["NoMatch", 3],
288 ["StackOutOfBounds", 4],
289 ["HeaderTooShort", 5],
290 ["ParserTimeout", 6],
291 ["ParserInvalidArgument", 7]
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700292 ],
Yi Tsengbe342052017-11-03 10:21:23 -0700293 "enums" : [],
294 "parsers" : [
295 {
296 "name" : "parser",
297 "id" : 0,
298 "init_state" : "start",
299 "parse_states" : [
300 {
301 "name" : "start",
302 "id" : 0,
303 "parser_ops" : [],
304 "transitions" : [
305 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800306 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700307 "value" : "0x00ff",
308 "mask" : null,
309 "next_state" : "parse_packet_out"
310 },
311 {
312 "value" : "default",
313 "mask" : null,
314 "next_state" : "parse_ethernet"
315 }
316 ],
317 "transition_key" : [
318 {
319 "type" : "field",
320 "value" : ["standard_metadata", "ingress_port"]
321 }
322 ]
323 },
324 {
325 "name" : "parse_packet_out",
326 "id" : 1,
327 "parser_ops" : [
328 {
329 "parameters" : [
330 {
331 "type" : "regular",
332 "value" : "packet_out"
333 }
334 ],
335 "op" : "extract"
336 }
337 ],
338 "transitions" : [
339 {
340 "value" : "default",
341 "mask" : null,
342 "next_state" : "parse_ethernet"
343 }
344 ],
345 "transition_key" : []
346 },
347 {
348 "name" : "parse_ethernet",
349 "id" : 2,
350 "parser_ops" : [
351 {
352 "parameters" : [
353 {
354 "type" : "regular",
355 "value" : "ethernet"
356 }
357 ],
358 "op" : "extract"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800359 },
360 {
361 "parameters" : [
362 {
363 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700364 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800365 },
366 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700367 "type" : "hexstr",
368 "value" : "0x0ffe"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800369 }
370 ],
371 "op" : "set"
372 },
373 {
374 "parameters" : [
375 {
376 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700377 "value" : ["scalars", "tmp_0"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800378 },
379 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700380 "type" : "lookahead",
381 "value" : [0, 16]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800382 }
383 ],
384 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700385 }
386 ],
387 "transitions" : [
388 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800389 "type" : "hexstr",
Daniele Moro77654f92019-07-30 10:29:54 -0700390 "value" : "0x88a8",
391 "mask" : null,
392 "next_state" : "parse_vlan_tag"
393 },
394 {
395 "type" : "hexstr",
396 "value" : "0x9100",
397 "mask" : null,
398 "next_state" : "parse_vlan_tag"
399 },
400 {
401 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700402 "value" : "0x8100",
403 "mask" : null,
404 "next_state" : "parse_vlan_tag"
405 },
406 {
Yi Tsengbe342052017-11-03 10:21:23 -0700407 "value" : "default",
408 "mask" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -0700409 "next_state" : "parse_eth_type"
Yi Tsengbe342052017-11-03 10:21:23 -0700410 }
411 ],
412 "transition_key" : [
413 {
414 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700415 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700416 }
417 ]
418 },
419 {
420 "name" : "parse_vlan_tag",
421 "id" : 3,
422 "parser_ops" : [
423 {
424 "parameters" : [
425 {
426 "type" : "regular",
427 "value" : "vlan_tag"
428 }
429 ],
430 "op" : "extract"
Daniele Moro5a2de712019-09-24 14:34:07 -0700431 },
432 {
433 "parameters" : [
434 {
435 "type" : "field",
436 "value" : ["scalars", "tmp_1"]
437 },
438 {
439 "type" : "lookahead",
440 "value" : [0, 16]
441 }
442 ],
443 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700444 }
445 ],
446 "transitions" : [
447 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800448 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800449 "value" : "0x8100",
450 "mask" : null,
451 "next_state" : "parse_inner_vlan_tag"
452 },
453 {
454 "value" : "default",
455 "mask" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -0700456 "next_state" : "parse_eth_type"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800457 }
458 ],
459 "transition_key" : [
460 {
461 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700462 "value" : ["scalars", "tmp_1"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800463 }
464 ]
465 },
466 {
467 "name" : "parse_inner_vlan_tag",
468 "id" : 4,
469 "parser_ops" : [
470 {
471 "parameters" : [
472 {
473 "type" : "regular",
474 "value" : "inner_vlan_tag"
475 }
476 ],
477 "op" : "extract"
478 }
479 ],
480 "transitions" : [
481 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700482 "value" : "default",
Yi Tsengbe342052017-11-03 10:21:23 -0700483 "mask" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -0700484 "next_state" : "parse_eth_type"
485 }
486 ],
487 "transition_key" : []
488 },
489 {
490 "name" : "parse_eth_type",
491 "id" : 5,
492 "parser_ops" : [
493 {
494 "parameters" : [
495 {
496 "type" : "regular",
497 "value" : "eth_type"
498 }
499 ],
500 "op" : "extract"
501 }
502 ],
503 "transitions" : [
Yi Tsengbe342052017-11-03 10:21:23 -0700504 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800505 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800506 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700507 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800508 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700509 },
510 {
Daniele Moro5a2de712019-09-24 14:34:07 -0700511 "type" : "hexstr",
512 "value" : "0x0800",
513 "mask" : null,
514 "next_state" : "parse_ipv4"
515 },
516 {
Yi Tsengbe342052017-11-03 10:21:23 -0700517 "value" : "default",
518 "mask" : null,
519 "next_state" : null
520 }
521 ],
522 "transition_key" : [
523 {
524 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700525 "value" : ["eth_type", "value"]
Yi Tsengbe342052017-11-03 10:21:23 -0700526 }
527 ]
528 },
529 {
530 "name" : "parse_mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -0700531 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700532 "parser_ops" : [
533 {
534 "parameters" : [
535 {
536 "type" : "regular",
537 "value" : "mpls"
538 }
539 ],
540 "op" : "extract"
541 },
542 {
543 "parameters" : [
544 {
545 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800546 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
547 },
548 {
549 "type" : "field",
550 "value" : ["mpls", "label"]
551 }
552 ],
553 "op" : "set"
554 },
555 {
556 "parameters" : [
557 {
558 "type" : "field",
559 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
560 },
561 {
562 "type" : "field",
563 "value" : ["mpls", "ttl"]
564 }
565 ],
566 "op" : "set"
567 },
568 {
569 "parameters" : [
570 {
571 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700572 "value" : ["scalars", "tmp_2"]
Yi Tsengbe342052017-11-03 10:21:23 -0700573 },
574 {
575 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800576 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700577 }
578 ],
579 "op" : "set"
580 }
581 ],
582 "transitions" : [
583 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800584 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700585 "value" : "0x04",
586 "mask" : null,
587 "next_state" : "parse_ipv4"
588 },
589 {
Yi Tsengbe342052017-11-03 10:21:23 -0700590 "value" : "default",
591 "mask" : null,
592 "next_state" : "parse_ethernet"
593 }
594 ],
595 "transition_key" : [
596 {
597 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -0700598 "value" : ["scalars", "tmp_2"]
Yi Tsengbe342052017-11-03 10:21:23 -0700599 }
600 ]
601 },
602 {
Daniele Moro7c3a0022019-07-12 13:38:34 -0700603 "name" : "parse_ipv4",
604 "id" : 7,
605 "parser_ops" : [
606 {
607 "parameters" : [
608 {
Yi Tsengbe342052017-11-03 10:21:23 -0700609 "type" : "regular",
610 "value" : "ipv4"
611 }
612 ],
613 "op" : "extract"
614 },
615 {
616 "parameters" : [
617 {
618 "type" : "field",
619 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
620 },
621 {
622 "type" : "field",
623 "value" : ["ipv4", "protocol"]
624 }
625 ],
626 "op" : "set"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800627 },
628 {
629 "parameters" : [
630 {
631 "type" : "field",
632 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
633 },
634 {
635 "type" : "hexstr",
636 "value" : "0x0800"
637 }
638 ],
639 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700640 }
641 ],
642 "transitions" : [
643 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800644 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700645 "value" : "0x06",
646 "mask" : null,
647 "next_state" : "parse_tcp"
648 },
649 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800650 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700651 "value" : "0x11",
652 "mask" : null,
653 "next_state" : "parse_udp"
654 },
655 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800656 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700657 "value" : "0x01",
658 "mask" : null,
659 "next_state" : "parse_icmp"
660 },
661 {
662 "value" : "default",
663 "mask" : null,
664 "next_state" : null
665 }
666 ],
667 "transition_key" : [
668 {
669 "type" : "field",
670 "value" : ["ipv4", "protocol"]
671 }
672 ]
673 },
674 {
Yi Tsengbe342052017-11-03 10:21:23 -0700675 "name" : "parse_tcp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700676 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700677 "parser_ops" : [
678 {
679 "parameters" : [
680 {
681 "type" : "regular",
682 "value" : "tcp"
683 }
684 ],
685 "op" : "extract"
686 },
687 {
688 "parameters" : [
689 {
690 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800691 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700692 },
693 {
694 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800695 "value" : ["tcp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700696 }
697 ],
698 "op" : "set"
699 },
700 {
701 "parameters" : [
702 {
703 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800704 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700705 },
706 {
707 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800708 "value" : ["tcp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700709 }
710 ],
711 "op" : "set"
712 }
713 ],
714 "transitions" : [
715 {
716 "value" : "default",
717 "mask" : null,
718 "next_state" : null
719 }
720 ],
721 "transition_key" : []
722 },
723 {
724 "name" : "parse_udp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700725 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700726 "parser_ops" : [
727 {
728 "parameters" : [
729 {
730 "type" : "regular",
731 "value" : "udp"
732 }
733 ],
734 "op" : "extract"
735 },
736 {
737 "parameters" : [
738 {
739 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800740 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700741 },
742 {
743 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800744 "value" : ["udp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700745 }
746 ],
747 "op" : "set"
748 },
749 {
750 "parameters" : [
751 {
752 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800753 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700754 },
755 {
756 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800757 "value" : ["udp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700758 }
759 ],
760 "op" : "set"
761 }
762 ],
763 "transitions" : [
764 {
765 "value" : "default",
766 "mask" : null,
767 "next_state" : null
768 }
769 ],
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700770 "transition_key" : [
771 {
772 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800773 "value" : ["udp", "dport"]
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700774 }
775 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700776 },
777 {
778 "name" : "parse_icmp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700779 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700780 "parser_ops" : [
781 {
782 "parameters" : [
783 {
784 "type" : "regular",
785 "value" : "icmp"
786 }
787 ],
788 "op" : "extract"
789 }
790 ],
791 "transitions" : [
792 {
793 "value" : "default",
794 "mask" : null,
795 "next_state" : null
796 }
797 ],
798 "transition_key" : []
799 }
800 ]
801 }
802 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800803 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700804 "deparsers" : [
805 {
806 "name" : "deparser",
807 "id" : 0,
808 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200809 "filename" : "include/parser.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -0700810 "line" : 265,
Yi Tsengbe342052017-11-03 10:21:23 -0700811 "column" : 8,
812 "source_fragment" : "FabricDeparser"
813 },
Daniele Moro5a2de712019-09-24 14:34:07 -0700814 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "mpls", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700815 }
816 ],
817 "meter_arrays" : [],
818 "counter_arrays" : [
819 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800820 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800821 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800822 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700823 "binding" : "FabricIngress.filtering.ingress_port_vlan",
824 "source_info" : {
825 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800826 "line" : 31,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700827 "column" : 50,
828 "source_fragment" : "ingress_port_vlan_counter"
829 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800830 },
831 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800832 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800833 "id" : 1,
834 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700835 "binding" : "FabricIngress.filtering.fwd_classifier",
836 "source_info" : {
837 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -0700838 "line" : 85,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700839 "column" : 50,
840 "source_fragment" : "fwd_classifier_counter"
841 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800842 },
843 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800844 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800845 "id" : 2,
846 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700847 "binding" : "FabricIngress.forwarding.bridging",
848 "source_info" : {
849 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800850 "line" : 36,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700851 "column" : 50,
852 "source_fragment" : "bridging_counter"
853 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800854 },
855 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800856 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800857 "id" : 3,
858 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700859 "binding" : "FabricIngress.forwarding.mpls",
860 "source_info" : {
861 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700862 "line" : 63,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700863 "column" : 50,
864 "source_fragment" : "mpls_counter"
865 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800866 },
867 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800868 "name" : "FabricIngress.acl.acl_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700869 "id" : 4,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800870 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800871 "binding" : "FabricIngress.acl.acl",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700872 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800873 "filename" : "include/control/acl.p4",
874 "line" : 30,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700875 "column" : 50,
876 "source_fragment" : "acl_counter"
877 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800878 },
879 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800880 "name" : "FabricIngress.next.next_vlan_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700881 "id" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +0800882 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800883 "binding" : "FabricIngress.next.next_vlan",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700884 "source_info" : {
885 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800886 "line" : 67,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700887 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800888 "source_fragment" : "next_vlan_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700889 }
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800890 },
891 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800892 "name" : "FabricIngress.next.xconnect_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700893 "id" : 6,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800894 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800895 "binding" : "FabricIngress.next.xconnect",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700896 "source_info" : {
897 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -0700898 "line" : 107,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700899 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800900 "source_fragment" : "xconnect_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700901 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800902 },
903 {
904 "name" : "FabricIngress.next.hashed_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700905 "id" : 7,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800906 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700907 "binding" : "FabricIngress.next.hashed",
908 "source_info" : {
909 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -0700910 "line" : 184,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700911 "column" : 50,
912 "source_fragment" : "hashed_counter"
913 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800914 },
915 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000916 "name" : "FabricIngress.next.multicast_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700917 "id" : 8,
Esin Karaman971fb7f2017-12-28 13:44:52 +0000918 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700919 "binding" : "FabricIngress.next.multicast",
920 "source_info" : {
921 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -0700922 "line" : 228,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700923 "column" : 50,
924 "source_fragment" : "multicast_counter"
925 }
Esin Karaman971fb7f2017-12-28 13:44:52 +0000926 },
927 {
928 "name" : "FabricIngress.port_counters_control.egress_port_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700929 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700930 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200931 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800932 "line" : 26,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800933 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700934 "source_fragment" : "egress_port_counter"
935 },
936 "size" : 511,
937 "is_direct" : false
938 },
939 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800940 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700941 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700942 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200943 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800944 "line" : 27,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800945 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700946 "source_fragment" : "ingress_port_counter"
947 },
948 "size" : 511,
949 "is_direct" : false
Yi Tseng47eac892018-07-11 02:17:04 +0800950 },
951 {
952 "name" : "FabricEgress.egress_next.egress_vlan_counter",
Daniele Moro5a2de712019-09-24 14:34:07 -0700953 "id" : 11,
Yi Tseng47eac892018-07-11 02:17:04 +0800954 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700955 "binding" : "FabricEgress.egress_next.egress_vlan",
956 "source_info" : {
957 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -0700958 "line" : 313,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700959 "column" : 50,
960 "source_fragment" : "egress_vlan_counter"
961 }
Yi Tsengbe342052017-11-03 10:21:23 -0700962 }
963 ],
964 "register_arrays" : [],
965 "calculations" : [
966 {
967 "name" : "calc",
968 "id" : 0,
969 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200970 "filename" : "include/checksum.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200971 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -0700972 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +0200973 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -0700974 },
975 "algo" : "csum16",
976 "input" : [
977 {
978 "type" : "field",
979 "value" : ["ipv4", "version"]
980 },
981 {
982 "type" : "field",
983 "value" : ["ipv4", "ihl"]
984 },
985 {
986 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +0900987 "value" : ["ipv4", "dscp"]
988 },
989 {
990 "type" : "field",
991 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -0700992 },
993 {
994 "type" : "field",
995 "value" : ["ipv4", "total_len"]
996 },
997 {
998 "type" : "field",
999 "value" : ["ipv4", "identification"]
1000 },
1001 {
1002 "type" : "field",
1003 "value" : ["ipv4", "flags"]
1004 },
1005 {
1006 "type" : "field",
1007 "value" : ["ipv4", "frag_offset"]
1008 },
1009 {
1010 "type" : "field",
1011 "value" : ["ipv4", "ttl"]
1012 },
1013 {
1014 "type" : "field",
1015 "value" : ["ipv4", "protocol"]
1016 },
1017 {
1018 "type" : "field",
1019 "value" : ["ipv4", "src_addr"]
1020 },
1021 {
1022 "type" : "field",
1023 "value" : ["ipv4", "dst_addr"]
1024 }
1025 ]
1026 },
1027 {
1028 "name" : "calc_0",
1029 "id" : 1,
1030 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001031 "filename" : "include/checksum.p4",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001032 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07001033 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001034 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -07001035 },
1036 "algo" : "csum16",
1037 "input" : [
1038 {
1039 "type" : "field",
1040 "value" : ["ipv4", "version"]
1041 },
1042 {
1043 "type" : "field",
1044 "value" : ["ipv4", "ihl"]
1045 },
1046 {
1047 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001048 "value" : ["ipv4", "dscp"]
1049 },
1050 {
1051 "type" : "field",
1052 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -07001053 },
1054 {
1055 "type" : "field",
1056 "value" : ["ipv4", "total_len"]
1057 },
1058 {
1059 "type" : "field",
1060 "value" : ["ipv4", "identification"]
1061 },
1062 {
1063 "type" : "field",
1064 "value" : ["ipv4", "flags"]
1065 },
1066 {
1067 "type" : "field",
1068 "value" : ["ipv4", "frag_offset"]
1069 },
1070 {
1071 "type" : "field",
1072 "value" : ["ipv4", "ttl"]
1073 },
1074 {
1075 "type" : "field",
1076 "value" : ["ipv4", "protocol"]
1077 },
1078 {
1079 "type" : "field",
1080 "value" : ["ipv4", "src_addr"]
1081 },
1082 {
1083 "type" : "field",
1084 "value" : ["ipv4", "dst_addr"]
1085 }
1086 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001087 }
1088 ],
1089 "learn_lists" : [],
1090 "actions" : [
1091 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001092 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001093 "id" : 0,
1094 "runtime_data" : [],
1095 "primitives" : []
1096 },
1097 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001098 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001099 "id" : 1,
1100 "runtime_data" : [],
1101 "primitives" : []
1102 },
1103 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001104 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001105 "id" : 2,
1106 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001107 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001108 },
1109 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001110 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001111 "id" : 3,
1112 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001113 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001114 },
1115 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001116 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001117 "id" : 4,
1118 "runtime_data" : [],
1119 "primitives" : []
1120 },
1121 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001122 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001123 "id" : 5,
1124 "runtime_data" : [],
1125 "primitives" : []
1126 },
1127 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001128 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001129 "id" : 6,
1130 "runtime_data" : [],
1131 "primitives" : []
1132 },
1133 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001134 "name" : "FabricIngress.filtering.deny",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001135 "id" : 7,
Yi Tseng47eac892018-07-11 02:17:04 +08001136 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001137 "primitives" : [
1138 {
Yi Tsengbe342052017-11-03 10:21:23 -07001139 "op" : "assign",
1140 "parameters" : [
1141 {
1142 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001143 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
Yi Tsengbe342052017-11-03 10:21:23 -07001144 },
1145 {
1146 "type" : "expression",
1147 "value" : {
1148 "type" : "expression",
1149 "value" : {
1150 "op" : "b2d",
1151 "left" : null,
1152 "right" : {
1153 "type" : "bool",
1154 "value" : true
1155 }
1156 }
1157 }
1158 }
1159 ],
1160 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001161 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001162 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001163 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001164 "source_fragment" : "fabric_metadata.skip_forwarding = true"
1165 }
1166 },
1167 {
1168 "op" : "assign",
1169 "parameters" : [
1170 {
1171 "type" : "field",
1172 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1173 },
1174 {
1175 "type" : "expression",
1176 "value" : {
1177 "type" : "expression",
1178 "value" : {
1179 "op" : "b2d",
1180 "left" : null,
1181 "right" : {
1182 "type" : "bool",
1183 "value" : true
1184 }
1185 }
1186 }
1187 }
1188 ],
1189 "source_info" : {
1190 "filename" : "include/control/filtering.p4",
1191 "line" : 37,
1192 "column" : 8,
1193 "source_fragment" : "fabric_metadata.skip_next = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001194 }
1195 }
1196 ]
1197 },
1198 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001199 "name" : "FabricIngress.filtering.permit",
1200 "id" : 8,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001201 "runtime_data" : [],
1202 "primitives" : []
1203 },
1204 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001205 "name" : "FabricIngress.filtering.permit_with_internal_vlan",
1206 "id" : 9,
1207 "runtime_data" : [
1208 {
1209 "name" : "vlan_id",
1210 "bitwidth" : 12
1211 }
1212 ],
1213 "primitives" : [
1214 {
1215 "op" : "assign",
1216 "parameters" : [
1217 {
1218 "type" : "field",
1219 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1220 },
1221 {
1222 "type" : "runtime_data",
1223 "value" : 0
1224 }
1225 ],
1226 "source_info" : {
1227 "filename" : "include/control/filtering.p4",
1228 "line" : 47,
1229 "column" : 8,
1230 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1231 }
1232 }
1233 ]
1234 },
1235 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001236 "name" : "FabricIngress.filtering.set_forwarding_type",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001237 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07001238 "runtime_data" : [
1239 {
1240 "name" : "fwd_type",
1241 "bitwidth" : 3
1242 }
1243 ],
1244 "primitives" : [
1245 {
1246 "op" : "assign",
1247 "parameters" : [
1248 {
1249 "type" : "field",
1250 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1251 },
1252 {
1253 "type" : "runtime_data",
1254 "value" : 0
1255 }
1256 ],
1257 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001258 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07001259 "line" : 88,
Yi Tsengbe342052017-11-03 10:21:23 -07001260 "column" : 8,
1261 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1262 }
1263 }
1264 ]
1265 },
1266 {
Yi Tseng47eac892018-07-11 02:17:04 +08001267 "name" : "FabricIngress.forwarding.set_next_id_bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001268 "id" : 11,
Carmelo Casconef645e842018-07-16 18:31:52 +02001269 "runtime_data" : [
1270 {
1271 "name" : "next_id",
1272 "bitwidth" : 32
1273 }
1274 ],
1275 "primitives" : [
1276 {
1277 "op" : "assign",
1278 "parameters" : [
1279 {
1280 "type" : "field",
1281 "value" : ["scalars", "fabric_metadata_t.next_id"]
1282 },
1283 {
1284 "type" : "runtime_data",
1285 "value" : 0
1286 }
1287 ],
1288 "source_info" : {
1289 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001290 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001291 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001292 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001293 }
1294 }
1295 ]
1296 },
1297 {
1298 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001299 "id" : 12,
Carmelo Casconef645e842018-07-16 18:31:52 +02001300 "runtime_data" : [
1301 {
1302 "name" : "next_id",
1303 "bitwidth" : 32
1304 }
1305 ],
1306 "primitives" : [
1307 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001308 "op" : "assign",
Carmelo Casconef645e842018-07-16 18:31:52 +02001309 "parameters" : [
1310 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001311 "type" : "field",
1312 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1313 },
1314 {
1315 "type" : "hexstr",
1316 "value" : "0x000000"
Carmelo Casconef645e842018-07-16 18:31:52 +02001317 }
1318 ],
1319 "source_info" : {
1320 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001321 "line" : 66,
Carmelo Casconef645e842018-07-16 18:31:52 +02001322 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001323 "source_fragment" : "fabric_metadata.mpls_label = 0"
Carmelo Casconef645e842018-07-16 18:31:52 +02001324 }
1325 },
1326 {
1327 "op" : "assign",
1328 "parameters" : [
1329 {
1330 "type" : "field",
1331 "value" : ["scalars", "fabric_metadata_t.next_id"]
1332 },
1333 {
1334 "type" : "runtime_data",
1335 "value" : 0
1336 }
1337 ],
1338 "source_info" : {
1339 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001340 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001341 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001342 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001343 }
1344 }
1345 ]
1346 },
1347 {
Charles Chan384aea22018-08-23 22:08:02 -07001348 "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001349 "id" : 13,
Carmelo Casconef645e842018-07-16 18:31:52 +02001350 "runtime_data" : [
1351 {
1352 "name" : "next_id",
1353 "bitwidth" : 32
1354 }
1355 ],
1356 "primitives" : [
1357 {
1358 "op" : "assign",
1359 "parameters" : [
1360 {
1361 "type" : "field",
1362 "value" : ["scalars", "fabric_metadata_t.next_id"]
1363 },
1364 {
1365 "type" : "runtime_data",
1366 "value" : 0
1367 }
1368 ],
1369 "source_info" : {
1370 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001371 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001372 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001373 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001374 }
1375 }
1376 ]
1377 },
1378 {
Charles Chancd03f072018-08-31 17:46:37 -07001379 "name" : "FabricIngress.forwarding.nop_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001380 "id" : 14,
Charles Chancd03f072018-08-31 17:46:37 -07001381 "runtime_data" : [],
1382 "primitives" : []
1383 },
1384 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001385 "name" : "FabricIngress.acl.set_next_id_acl",
1386 "id" : 15,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001387 "runtime_data" : [
1388 {
1389 "name" : "next_id",
1390 "bitwidth" : 32
1391 }
1392 ],
1393 "primitives" : [
1394 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001395 "op" : "assign",
1396 "parameters" : [
1397 {
1398 "type" : "field",
1399 "value" : ["scalars", "fabric_metadata_t.next_id"]
1400 },
1401 {
1402 "type" : "runtime_data",
1403 "value" : 0
1404 }
1405 ],
1406 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001407 "filename" : "include/control/acl.p4",
1408 "line" : 33,
Yi Tseng47eac892018-07-11 02:17:04 +08001409 "column" : 8,
1410 "source_fragment" : "fabric_metadata.next_id = next_id"
1411 }
1412 }
1413 ]
1414 },
1415 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001416 "name" : "FabricIngress.acl.punt_to_cpu",
1417 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07001418 "runtime_data" : [],
1419 "primitives" : [
1420 {
1421 "op" : "assign",
1422 "parameters" : [
1423 {
1424 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001425 "value" : ["standard_metadata", "egress_spec"]
1426 },
1427 {
1428 "type" : "hexstr",
1429 "value" : "0x00ff"
1430 }
1431 ],
1432 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001433 "filename" : "include/control/acl.p4",
1434 "line" : 39,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001435 "column" : 8,
1436 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001437 }
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001438 },
1439 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001440 "op" : "assign",
1441 "parameters" : [
1442 {
1443 "type" : "field",
1444 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1445 },
1446 {
1447 "type" : "expression",
1448 "value" : {
1449 "type" : "expression",
1450 "value" : {
1451 "op" : "b2d",
1452 "left" : null,
1453 "right" : {
1454 "type" : "bool",
1455 "value" : true
1456 }
1457 }
1458 }
1459 }
1460 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001461 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001462 "filename" : "include/control/acl.p4",
1463 "line" : 40,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001464 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001465 "source_fragment" : "fabric_metadata.skip_next = true"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001466 }
1467 }
1468 ]
1469 },
1470 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001471 "name" : "FabricIngress.acl.set_clone_session_id",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001472 "id" : 17,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001473 "runtime_data" : [
1474 {
1475 "name" : "clone_id",
1476 "bitwidth" : 32
1477 }
1478 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001479 "primitives" : [
1480 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001481 "op" : "clone_ingress_pkt_to_egress",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001482 "parameters" : [
1483 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001484 "type" : "runtime_data",
1485 "value" : 0
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001486 },
1487 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001488 "type" : "hexstr",
1489 "value" : "0x1"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001490 }
1491 ],
1492 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001493 "filename" : "include/control/acl.p4",
1494 "line" : 46,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001495 "column" : 8,
Daniele Moro3b7a21b2019-06-25 17:33:40 -07001496 "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001497 }
Yi Tsengbe342052017-11-03 10:21:23 -07001498 }
1499 ]
1500 },
1501 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001502 "name" : "FabricIngress.acl.drop",
1503 "id" : 18,
Yi Tseng47eac892018-07-11 02:17:04 +08001504 "runtime_data" : [],
1505 "primitives" : [
1506 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001507 "op" : "mark_to_drop",
1508 "parameters" : [
1509 {
1510 "type" : "header",
1511 "value" : "standard_metadata"
1512 }
1513 ],
Yi Tseng47eac892018-07-11 02:17:04 +08001514 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001515 "filename" : "include/control/acl.p4",
1516 "line" : 51,
Yi Tseng47eac892018-07-11 02:17:04 +08001517 "column" : 8,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001518 "source_fragment" : "mark_to_drop(standard_metadata)"
Yi Tseng47eac892018-07-11 02:17:04 +08001519 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001520 },
1521 {
1522 "op" : "assign",
1523 "parameters" : [
1524 {
1525 "type" : "field",
1526 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1527 },
1528 {
1529 "type" : "expression",
1530 "value" : {
1531 "type" : "expression",
1532 "value" : {
1533 "op" : "b2d",
1534 "left" : null,
1535 "right" : {
1536 "type" : "bool",
1537 "value" : true
1538 }
1539 }
1540 }
1541 }
1542 ],
1543 "source_info" : {
1544 "filename" : "include/control/acl.p4",
1545 "line" : 52,
1546 "column" : 8,
1547 "source_fragment" : "fabric_metadata.skip_next = true"
1548 }
Yi Tseng47eac892018-07-11 02:17:04 +08001549 }
1550 ]
1551 },
1552 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001553 "name" : "FabricIngress.acl.nop_acl",
1554 "id" : 19,
Charles Chancf696e52018-08-16 16:25:13 -07001555 "runtime_data" : [],
1556 "primitives" : []
1557 },
1558 {
Yi Tseng47eac892018-07-11 02:17:04 +08001559 "name" : "FabricIngress.next.set_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001560 "id" : 20,
1561 "runtime_data" : [
1562 {
1563 "name" : "vlan_id",
1564 "bitwidth" : 12
1565 }
1566 ],
1567 "primitives" : [
1568 {
1569 "op" : "assign",
1570 "parameters" : [
1571 {
1572 "type" : "field",
1573 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1574 },
1575 {
1576 "type" : "runtime_data",
1577 "value" : 0
1578 }
1579 ],
1580 "source_info" : {
1581 "filename" : "include/control/next.p4",
1582 "line" : 70,
1583 "column" : 8,
1584 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1585 }
1586 }
1587 ]
1588 },
1589 {
1590 "name" : "FabricIngress.next.output_xconnect",
Charles Chancd03f072018-08-31 17:46:37 -07001591 "id" : 21,
Yi Tseng47eac892018-07-11 02:17:04 +08001592 "runtime_data" : [
1593 {
Yi Tsengbe342052017-11-03 10:21:23 -07001594 "name" : "port_num",
1595 "bitwidth" : 9
1596 }
1597 ],
1598 "primitives" : [
1599 {
1600 "op" : "assign",
1601 "parameters" : [
1602 {
1603 "type" : "field",
1604 "value" : ["standard_metadata", "egress_spec"]
1605 },
1606 {
1607 "type" : "runtime_data",
1608 "value" : 0
1609 }
1610 ],
1611 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001612 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001613 "line" : 31,
1614 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001615 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1616 }
1617 }
1618 ]
1619 },
1620 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001621 "name" : "FabricIngress.next.set_next_id_xconnect",
1622 "id" : 22,
1623 "runtime_data" : [
1624 {
1625 "name" : "next_id",
1626 "bitwidth" : 32
1627 }
1628 ],
1629 "primitives" : [
1630 {
1631 "op" : "assign",
1632 "parameters" : [
1633 {
1634 "type" : "field",
1635 "value" : ["scalars", "fabric_metadata_t.next_id"]
1636 },
1637 {
1638 "type" : "runtime_data",
1639 "value" : 0
1640 }
1641 ],
1642 "source_info" : {
1643 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07001644 "line" : 115,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001645 "column" : 8,
1646 "source_fragment" : "fabric_metadata.next_id = next_id"
1647 }
1648 }
1649 ]
1650 },
1651 {
1652 "name" : "FabricIngress.next.output_hashed",
1653 "id" : 23,
1654 "runtime_data" : [
1655 {
1656 "name" : "port_num",
1657 "bitwidth" : 9
1658 }
1659 ],
1660 "primitives" : [
1661 {
1662 "op" : "assign",
1663 "parameters" : [
1664 {
1665 "type" : "field",
1666 "value" : ["standard_metadata", "egress_spec"]
1667 },
1668 {
1669 "type" : "runtime_data",
1670 "value" : 0
1671 }
1672 ],
1673 "source_info" : {
1674 "filename" : "include/control/next.p4",
1675 "line" : 31,
1676 "column" : 5,
1677 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1678 }
1679 }
1680 ]
1681 },
1682 {
1683 "name" : "FabricIngress.next.routing_hashed",
Charles Chancd03f072018-08-31 17:46:37 -07001684 "id" : 24,
Yi Tseng47eac892018-07-11 02:17:04 +08001685 "runtime_data" : [
1686 {
1687 "name" : "port_num",
1688 "bitwidth" : 9
1689 },
1690 {
1691 "name" : "smac",
1692 "bitwidth" : 48
1693 },
1694 {
1695 "name" : "dmac",
1696 "bitwidth" : 48
1697 }
1698 ],
1699 "primitives" : [
1700 {
1701 "op" : "assign",
1702 "parameters" : [
1703 {
1704 "type" : "field",
1705 "value" : ["ethernet", "src_addr"]
1706 },
1707 {
1708 "type" : "runtime_data",
1709 "value" : 1
1710 }
1711 ],
1712 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001713 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001714 "line" : 36,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001715 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001716 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1717 }
1718 },
1719 {
1720 "op" : "assign",
1721 "parameters" : [
1722 {
1723 "type" : "field",
1724 "value" : ["ethernet", "dst_addr"]
1725 },
1726 {
1727 "type" : "runtime_data",
1728 "value" : 2
1729 }
1730 ],
1731 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001732 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001733 "line" : 41,
1734 "column" : 8,
1735 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1736 }
1737 },
1738 {
1739 "op" : "assign",
1740 "parameters" : [
1741 {
1742 "type" : "field",
1743 "value" : ["standard_metadata", "egress_spec"]
1744 },
1745 {
1746 "type" : "runtime_data",
1747 "value" : 0
1748 }
1749 ],
1750 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001751 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001752 "line" : 31,
1753 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001754 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001755 }
1756 }
1757 ]
1758 },
1759 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001760 "name" : "FabricIngress.next.mpls_routing_hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02001761 "id" : 25,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001762 "runtime_data" : [
1763 {
1764 "name" : "port_num",
1765 "bitwidth" : 9
1766 },
1767 {
1768 "name" : "smac",
1769 "bitwidth" : 48
1770 },
1771 {
1772 "name" : "dmac",
1773 "bitwidth" : 48
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001774 },
1775 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001776 "name" : "label",
1777 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001778 }
1779 ],
1780 "primitives" : [
1781 {
1782 "op" : "assign",
1783 "parameters" : [
1784 {
1785 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001786 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1787 },
1788 {
1789 "type" : "runtime_data",
1790 "value" : 3
1791 }
1792 ],
1793 "source_info" : {
1794 "filename" : "include/control/next.p4",
1795 "line" : 46,
1796 "column" : 8,
1797 "source_fragment" : "fabric_metadata.mpls_label = label; ..."
1798 }
1799 },
1800 {
1801 "op" : "assign",
1802 "parameters" : [
1803 {
1804 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001805 "value" : ["ethernet", "src_addr"]
1806 },
1807 {
1808 "type" : "runtime_data",
1809 "value" : 1
1810 }
1811 ],
1812 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001813 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001814 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001815 "column" : 8,
1816 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1817 }
1818 },
1819 {
1820 "op" : "assign",
1821 "parameters" : [
1822 {
1823 "type" : "field",
1824 "value" : ["ethernet", "dst_addr"]
1825 },
1826 {
1827 "type" : "runtime_data",
1828 "value" : 2
1829 }
1830 ],
1831 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001832 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001833 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001834 "column" : 8,
1835 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1836 }
1837 },
1838 {
1839 "op" : "assign",
1840 "parameters" : [
1841 {
1842 "type" : "field",
1843 "value" : ["standard_metadata", "egress_spec"]
1844 },
1845 {
1846 "type" : "runtime_data",
1847 "value" : 0
1848 }
1849 ],
1850 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001851 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001852 "line" : 31,
1853 "column" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07001854 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1855 }
Yi Tsengbe342052017-11-03 10:21:23 -07001856 }
1857 ]
1858 },
1859 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001860 "name" : "FabricIngress.next.set_mcast_group_id",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001861 "id" : 26,
1862 "runtime_data" : [
1863 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001864 "name" : "group_id",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001865 "bitwidth" : 16
1866 }
1867 ],
1868 "primitives" : [
1869 {
1870 "op" : "assign",
1871 "parameters" : [
1872 {
1873 "type" : "field",
1874 "value" : ["standard_metadata", "mcast_grp"]
1875 },
1876 {
1877 "type" : "runtime_data",
1878 "value" : 0
1879 }
1880 ],
1881 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001882 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07001883 "line" : 231,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001884 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001885 "source_fragment" : "standard_metadata.mcast_grp = group_id"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001886 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02001887 },
1888 {
1889 "op" : "assign",
1890 "parameters" : [
1891 {
1892 "type" : "field",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001893 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02001894 },
1895 {
1896 "type" : "expression",
1897 "value" : {
1898 "type" : "expression",
1899 "value" : {
1900 "op" : "b2d",
1901 "left" : null,
1902 "right" : {
1903 "type" : "bool",
1904 "value" : true
1905 }
1906 }
1907 }
1908 }
1909 ],
1910 "source_info" : {
1911 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07001912 "line" : 232,
Carmelo Casconea5400af2018-07-17 22:11:54 +02001913 "column" : 8,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001914 "source_fragment" : "fabric_metadata.is_multicast = true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02001915 }
Esin Karaman971fb7f2017-12-28 13:44:52 +00001916 }
1917 ]
1918 },
1919 {
1920 "name" : "act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001921 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001922 "runtime_data" : [],
1923 "primitives" : [
1924 {
1925 "op" : "assign",
1926 "parameters" : [
1927 {
1928 "type" : "field",
1929 "value" : ["standard_metadata", "egress_spec"]
1930 },
1931 {
1932 "type" : "field",
1933 "value" : ["packet_out", "egress_port"]
1934 }
1935 ],
1936 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001937 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001938 "line" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07001939 "column" : 12,
1940 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
1941 }
Yi Tseng1d842672017-11-28 16:06:52 -08001942 },
1943 {
1944 "op" : "remove_header",
1945 "parameters" : [
1946 {
1947 "type" : "header",
1948 "value" : "packet_out"
1949 }
1950 ],
1951 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001952 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001953 "line" : 26,
Yi Tseng1d842672017-11-28 16:06:52 -08001954 "column" : 12,
1955 "source_fragment" : "hdr.packet_out.setInvalid()"
1956 }
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001957 },
1958 {
1959 "op" : "assign",
1960 "parameters" : [
1961 {
1962 "type" : "field",
1963 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
1964 },
1965 {
1966 "type" : "expression",
1967 "value" : {
1968 "type" : "expression",
1969 "value" : {
1970 "op" : "b2d",
1971 "left" : null,
1972 "right" : {
1973 "type" : "bool",
1974 "value" : true
1975 }
1976 }
1977 }
1978 }
1979 ],
1980 "source_info" : {
1981 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001982 "line" : 27,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07001983 "column" : 12,
1984 "source_fragment" : "fabric_metadata.is_controller_packet_out = true"
1985 }
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001986 },
1987 {
1988 "op" : "exit",
1989 "parameters" : [],
1990 "source_info" : {
1991 "filename" : "include/control/packetio.p4",
1992 "line" : 29,
1993 "column" : 12,
1994 "source_fragment" : "exit"
1995 }
Yi Tsengbe342052017-11-03 10:21:23 -07001996 }
1997 ]
1998 },
1999 {
2000 "name" : "act_0",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002001 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002002 "runtime_data" : [],
2003 "primitives" : [
2004 {
2005 "op" : "assign",
2006 "parameters" : [
2007 {
2008 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002009 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2010 },
2011 {
2012 "type" : "field",
2013 "value" : ["vlan_tag", "vlan_id"]
2014 }
2015 ],
2016 "source_info" : {
2017 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002018 "line" : 111,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002019 "column" : 12,
2020 "source_fragment" : "fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id"
2021 }
2022 },
2023 {
2024 "op" : "assign",
2025 "parameters" : [
2026 {
2027 "type" : "field",
2028 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2029 },
2030 {
2031 "type" : "field",
2032 "value" : ["vlan_tag", "pri"]
2033 }
2034 ],
2035 "source_info" : {
2036 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002037 "line" : 112,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002038 "column" : 12,
2039 "source_fragment" : "fabric_metadata.vlan_pri = hdr.vlan_tag.pri"
2040 }
2041 },
2042 {
2043 "op" : "assign",
2044 "parameters" : [
2045 {
2046 "type" : "field",
2047 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2048 },
2049 {
2050 "type" : "field",
2051 "value" : ["vlan_tag", "cfi"]
2052 }
2053 ],
2054 "source_info" : {
2055 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002056 "line" : 113,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002057 "column" : 12,
2058 "source_fragment" : "fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi"
2059 }
Yi Tseng1d842672017-11-28 16:06:52 -08002060 }
2061 ]
2062 },
2063 {
2064 "name" : "act_1",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002065 "id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002066 "runtime_data" : [],
2067 "primitives" : [
2068 {
2069 "op" : "assign",
2070 "parameters" : [
2071 {
2072 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002073 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2074 },
2075 {
2076 "type" : "hexstr",
2077 "value" : "0x41"
2078 }
2079 ],
2080 "source_info" : {
2081 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002082 "line" : 127,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002083 "column" : 12,
2084 "source_fragment" : "fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1"
2085 }
2086 }
2087 ]
2088 },
2089 {
2090 "name" : "act_2",
2091 "id" : 30,
2092 "runtime_data" : [],
2093 "primitives" : [
2094 {
2095 "op" : "assign",
2096 "parameters" : [
2097 {
2098 "type" : "field",
2099 "value" : ["scalars", "tmp"]
Yi Tseng1d842672017-11-28 16:06:52 -08002100 },
2101 {
2102 "type" : "expression",
2103 "value" : {
2104 "type" : "expression",
2105 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002106 "op" : "&",
2107 "left" : {
2108 "type" : "field",
2109 "value" : ["standard_metadata", "egress_spec"]
2110 },
Yi Tseng1d842672017-11-28 16:06:52 -08002111 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002112 "type" : "hexstr",
2113 "value" : "0xffffffff"
Yi Tseng1d842672017-11-28 16:06:52 -08002114 }
2115 }
2116 }
2117 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002118 ],
2119 "source_info" : {
2120 "filename" : "include/control/port_counter.p4",
2121 "line" : 31,
2122 "column" : 38,
2123 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2124 }
2125 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002126 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002127 "op" : "count",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002128 "parameters" : [
2129 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002130 "type" : "counter_array",
2131 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002132 },
2133 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002134 "type" : "field",
2135 "value" : ["scalars", "tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002136 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002137 ],
2138 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002139 "filename" : "include/control/port_counter.p4",
2140 "line" : 31,
2141 "column" : 12,
2142 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002143 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002144 }
2145 ]
2146 },
2147 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002148 "name" : "act_3",
2149 "id" : 31,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002150 "runtime_data" : [],
2151 "primitives" : [
2152 {
2153 "op" : "assign",
2154 "parameters" : [
2155 {
2156 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002157 "value" : ["scalars", "tmp_3"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002158 },
2159 {
2160 "type" : "expression",
2161 "value" : {
2162 "type" : "expression",
2163 "value" : {
2164 "op" : "&",
2165 "left" : {
2166 "type" : "field",
2167 "value" : ["standard_metadata", "ingress_port"]
2168 },
2169 "right" : {
2170 "type" : "hexstr",
2171 "value" : "0xffffffff"
2172 }
2173 }
2174 }
2175 }
2176 ],
2177 "source_info" : {
2178 "filename" : "include/control/port_counter.p4",
2179 "line" : 34,
2180 "column" : 39,
2181 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
2182 }
2183 },
2184 {
2185 "op" : "count",
2186 "parameters" : [
2187 {
2188 "type" : "counter_array",
2189 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
2190 },
2191 {
2192 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002193 "value" : ["scalars", "tmp_3"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002194 }
2195 ],
2196 "source_info" : {
2197 "filename" : "include/control/port_counter.p4",
2198 "line" : 34,
2199 "column" : 12,
2200 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2201 }
2202 }
2203 ]
2204 },
2205 {
2206 "name" : "nop",
Daniele Moro5a2de712019-09-24 14:34:07 -07002207 "id" : 32,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002208 "runtime_data" : [],
2209 "primitives" : []
2210 },
2211 {
2212 "name" : "FabricEgress.egress_next.pop_mpls_if_present",
Daniele Moro5a2de712019-09-24 14:34:07 -07002213 "id" : 33,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002214 "runtime_data" : [],
2215 "primitives" : [
2216 {
2217 "op" : "remove_header",
2218 "parameters" : [
2219 {
2220 "type" : "header",
2221 "value" : "mpls"
2222 }
2223 ],
2224 "source_info" : {
2225 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002226 "line" : 270,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002227 "column" : 8,
2228 "source_fragment" : "hdr.mpls.setInvalid()"
2229 }
2230 },
2231 {
2232 "op" : "assign",
2233 "parameters" : [
2234 {
2235 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002236 "value" : ["eth_type", "value"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002237 },
2238 {
2239 "type" : "field",
2240 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
2241 }
2242 ],
2243 "source_info" : {
2244 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002245 "line" : 272,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002246 "column" : 8,
Daniele Moro5a2de712019-09-24 14:34:07 -07002247 "source_fragment" : "hdr.eth_type.value = fabric_metadata.ip_eth_type"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002248 }
2249 }
2250 ]
2251 },
2252 {
2253 "name" : "FabricEgress.egress_next.set_mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07002254 "id" : 34,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002255 "runtime_data" : [],
2256 "primitives" : [
2257 {
2258 "op" : "add_header",
2259 "parameters" : [
2260 {
2261 "type" : "header",
2262 "value" : "mpls"
2263 }
2264 ],
2265 "source_info" : {
2266 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002267 "line" : 277,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002268 "column" : 8,
2269 "source_fragment" : "hdr.mpls.setValid()"
2270 }
2271 },
2272 {
2273 "op" : "assign",
2274 "parameters" : [
2275 {
2276 "type" : "field",
2277 "value" : ["mpls", "label"]
2278 },
2279 {
2280 "type" : "field",
2281 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
2282 }
2283 ],
2284 "source_info" : {
2285 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002286 "line" : 278,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002287 "column" : 8,
2288 "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label"
2289 }
2290 },
2291 {
2292 "op" : "assign",
2293 "parameters" : [
2294 {
2295 "type" : "field",
2296 "value" : ["mpls", "tc"]
2297 },
2298 {
2299 "type" : "hexstr",
2300 "value" : "0x00"
2301 }
2302 ],
2303 "source_info" : {
2304 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002305 "line" : 279,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002306 "column" : 8,
2307 "source_fragment" : "hdr.mpls.tc = 3w0"
2308 }
2309 },
2310 {
2311 "op" : "assign",
2312 "parameters" : [
2313 {
2314 "type" : "field",
2315 "value" : ["mpls", "bos"]
2316 },
2317 {
2318 "type" : "hexstr",
2319 "value" : "0x01"
2320 }
2321 ],
2322 "source_info" : {
2323 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002324 "line" : 280,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002325 "column" : 8,
2326 "source_fragment" : "hdr.mpls.bos = 1w1"
2327 }
2328 },
2329 {
2330 "op" : "assign",
2331 "parameters" : [
2332 {
2333 "type" : "field",
2334 "value" : ["mpls", "ttl"]
2335 },
2336 {
2337 "type" : "field",
2338 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2339 }
2340 ],
2341 "source_info" : {
2342 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002343 "line" : 281,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002344 "column" : 8,
2345 "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl"
2346 }
2347 },
2348 {
2349 "op" : "assign",
2350 "parameters" : [
2351 {
2352 "type" : "field",
Daniele Moro5a2de712019-09-24 14:34:07 -07002353 "value" : ["eth_type", "value"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002354 },
2355 {
2356 "type" : "hexstr",
2357 "value" : "0x8847"
2358 }
2359 ],
2360 "source_info" : {
2361 "filename" : "include/control/../define.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07002362 "line" : 112,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002363 "column" : 31,
2364 "source_fragment" : "0x8847; ..."
2365 }
2366 }
2367 ]
2368 },
2369 {
2370 "name" : "FabricEgress.egress_next.push_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07002371 "id" : 35,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002372 "runtime_data" : [],
2373 "primitives" : [
2374 {
2375 "op" : "add_header",
2376 "parameters" : [
2377 {
2378 "type" : "header",
2379 "value" : "vlan_tag"
2380 }
2381 ],
2382 "source_info" : {
2383 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002384 "line" : 289,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002385 "column" : 8,
2386 "source_fragment" : "hdr.vlan_tag.setValid()"
2387 }
2388 },
2389 {
2390 "op" : "assign",
2391 "parameters" : [
2392 {
2393 "type" : "field",
2394 "value" : ["vlan_tag", "cfi"]
2395 },
2396 {
2397 "type" : "field",
2398 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2399 }
2400 ],
2401 "source_info" : {
2402 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002403 "line" : 290,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002404 "column" : 8,
2405 "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi"
2406 }
2407 },
2408 {
2409 "op" : "assign",
2410 "parameters" : [
2411 {
2412 "type" : "field",
2413 "value" : ["vlan_tag", "pri"]
2414 },
2415 {
2416 "type" : "field",
2417 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2418 }
2419 ],
2420 "source_info" : {
2421 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002422 "line" : 291,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002423 "column" : 8,
2424 "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri"
2425 }
2426 },
2427 {
2428 "op" : "assign",
2429 "parameters" : [
2430 {
2431 "type" : "field",
2432 "value" : ["vlan_tag", "eth_type"]
2433 },
2434 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002435 "type" : "hexstr",
2436 "value" : "0x8100"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002437 }
2438 ],
2439 "source_info" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07002440 "filename" : "include/control/../define.p4",
2441 "line" : 111,
2442 "column" : 31,
2443 "source_fragment" : "0x8100; ..."
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002444 }
2445 },
2446 {
2447 "op" : "assign",
2448 "parameters" : [
2449 {
2450 "type" : "field",
2451 "value" : ["vlan_tag", "vlan_id"]
2452 },
2453 {
2454 "type" : "field",
2455 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2456 }
2457 ],
2458 "source_info" : {
2459 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002460 "line" : 293,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002461 "column" : 8,
2462 "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id"
2463 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002464 }
2465 ]
2466 },
2467 {
2468 "name" : "FabricEgress.egress_next.pop_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07002469 "id" : 36,
Yi Tseng1d842672017-11-28 16:06:52 -08002470 "runtime_data" : [],
2471 "primitives" : [
2472 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002473 "op" : "remove_header",
2474 "parameters" : [
2475 {
2476 "type" : "header",
2477 "value" : "vlan_tag"
2478 }
2479 ],
2480 "source_info" : {
2481 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002482 "line" : 316,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002483 "column" : 8,
2484 "source_fragment" : "hdr.vlan_tag.setInvalid()"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002485 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002486 }
2487 ]
2488 },
2489 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002490 "name" : "act_4",
2491 "id" : 37,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002492 "runtime_data" : [],
2493 "primitives" : [
2494 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002495 "op" : "exit",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002496 "parameters" : [],
2497 "source_info" : {
2498 "filename" : "include/control/packetio.p4",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002499 "line" : 41,
2500 "column" : 12,
2501 "source_fragment" : "exit"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002502 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002503 }
2504 ]
2505 },
2506 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002507 "name" : "act_5",
2508 "id" : 38,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002509 "runtime_data" : [],
2510 "primitives" : [
2511 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002512 "op" : "add_header",
2513 "parameters" : [
2514 {
2515 "type" : "header",
2516 "value" : "packet_in"
2517 }
2518 ],
2519 "source_info" : {
2520 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002521 "line" : 44,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002522 "column" : 12,
2523 "source_fragment" : "hdr.packet_in.setValid()"
2524 }
2525 },
2526 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02002527 "op" : "assign",
2528 "parameters" : [
2529 {
2530 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002531 "value" : ["packet_in", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002532 },
2533 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002534 "type" : "field",
2535 "value" : ["standard_metadata", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002536 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002537 ],
2538 "source_info" : {
2539 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002540 "line" : 45,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002541 "column" : 12,
2542 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2543 }
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002544 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002545 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002546 "op" : "exit",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002547 "parameters" : [],
2548 "source_info" : {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002549 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002550 "line" : 47,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002551 "column" : 12,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002552 "source_fragment" : "exit"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002553 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002554 }
2555 ]
2556 },
2557 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002558 "name" : "act_6",
2559 "id" : 39,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002560 "runtime_data" : [],
2561 "primitives" : [
2562 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002563 "op" : "mark_to_drop",
2564 "parameters" : [
2565 {
2566 "type" : "header",
2567 "value" : "standard_metadata"
2568 }
2569 ],
2570 "source_info" : {
2571 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002572 "line" : 337,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002573 "column" : 12,
2574 "source_fragment" : "mark_to_drop(standard_metadata)"
2575 }
2576 }
2577 ]
2578 },
2579 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002580 "name" : "act_7",
2581 "id" : 40,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002582 "runtime_data" : [],
2583 "primitives" : [
2584 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002585 "op" : "assign",
2586 "parameters" : [
2587 {
2588 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002589 "value" : ["scalars", "egress_next_tmp"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002590 },
2591 {
2592 "type" : "expression",
2593 "value" : {
2594 "type" : "expression",
2595 "value" : {
2596 "op" : "b2d",
2597 "left" : null,
2598 "right" : {
2599 "type" : "bool",
2600 "value" : true
2601 }
2602 }
2603 }
2604 }
2605 ]
2606 }
2607 ]
2608 },
2609 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002610 "name" : "act_8",
2611 "id" : 41,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002612 "runtime_data" : [],
2613 "primitives" : [
2614 {
2615 "op" : "assign",
2616 "parameters" : [
2617 {
2618 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002619 "value" : ["scalars", "egress_next_tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002620 },
2621 {
2622 "type" : "expression",
2623 "value" : {
2624 "type" : "expression",
2625 "value" : {
2626 "op" : "b2d",
2627 "left" : null,
2628 "right" : {
2629 "type" : "bool",
2630 "value" : false
2631 }
2632 }
2633 }
2634 }
2635 ]
2636 }
2637 ]
2638 },
2639 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002640 "name" : "act_9",
2641 "id" : 42,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002642 "runtime_data" : [],
2643 "primitives" : [
2644 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002645 "op" : "mark_to_drop",
2646 "parameters" : [
2647 {
2648 "type" : "header",
2649 "value" : "standard_metadata"
2650 }
2651 ],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002652 "source_info" : {
2653 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002654 "line" : 370,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002655 "column" : 35,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002656 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002657 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002658 }
2659 ]
2660 },
2661 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002662 "name" : "act_10",
2663 "id" : 43,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002664 "runtime_data" : [],
2665 "primitives" : [
2666 {
2667 "op" : "assign",
2668 "parameters" : [
2669 {
2670 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002671 "value" : ["mpls", "ttl"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002672 },
2673 {
2674 "type" : "expression",
2675 "value" : {
2676 "type" : "expression",
2677 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002678 "op" : "&",
2679 "left" : {
2680 "type" : "expression",
2681 "value" : {
2682 "op" : "+",
2683 "left" : {
2684 "type" : "field",
2685 "value" : ["mpls", "ttl"]
2686 },
2687 "right" : {
2688 "type" : "hexstr",
2689 "value" : "0xff"
2690 }
2691 }
2692 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002693 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002694 "type" : "hexstr",
2695 "value" : "0xff"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002696 }
2697 }
2698 }
2699 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002700 ],
2701 "source_info" : {
2702 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002703 "line" : 369,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002704 "column" : 12,
2705 "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
2706 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002707 }
2708 ]
2709 },
2710 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002711 "name" : "act_11",
2712 "id" : 44,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002713 "runtime_data" : [],
2714 "primitives" : [
2715 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002716 "op" : "mark_to_drop",
2717 "parameters" : [
2718 {
2719 "type" : "header",
2720 "value" : "standard_metadata"
2721 }
2722 ],
Carmelo Casconea5400af2018-07-17 22:11:54 +02002723 "source_info" : {
2724 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002725 "line" : 374,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002726 "column" : 39,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002727 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002728 }
2729 }
2730 ]
2731 },
2732 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002733 "name" : "act_12",
2734 "id" : 45,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002735 "runtime_data" : [],
2736 "primitives" : [
2737 {
2738 "op" : "assign",
2739 "parameters" : [
2740 {
2741 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002742 "value" : ["ipv4", "ttl"]
2743 },
2744 {
2745 "type" : "expression",
2746 "value" : {
2747 "type" : "expression",
2748 "value" : {
2749 "op" : "&",
2750 "left" : {
2751 "type" : "expression",
2752 "value" : {
2753 "op" : "+",
2754 "left" : {
2755 "type" : "field",
2756 "value" : ["ipv4", "ttl"]
2757 },
2758 "right" : {
2759 "type" : "hexstr",
2760 "value" : "0xff"
2761 }
2762 }
2763 },
2764 "right" : {
2765 "type" : "hexstr",
2766 "value" : "0xff"
2767 }
2768 }
2769 }
2770 }
2771 ],
2772 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002773 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002774 "line" : 373,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002775 "column" : 16,
Yi Tseng1d842672017-11-28 16:06:52 -08002776 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2777 }
2778 }
2779 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002780 }
2781 ],
2782 "pipelines" : [
2783 {
2784 "name" : "ingress",
2785 "id" : 0,
2786 "source_info" : {
2787 "filename" : "fabric.p4",
Carmelo Cascone4d8785b2019-05-31 17:11:26 -07002788 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002789 "column" : 8,
2790 "source_fragment" : "FabricIngress"
2791 },
2792 "init_table" : "node_2",
2793 "tables" : [
2794 {
2795 "name" : "tbl_act",
2796 "id" : 0,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002797 "source_info" : {
2798 "filename" : "include/control/packetio.p4",
2799 "line" : 25,
2800 "column" : 42,
2801 "source_fragment" : "= hdr.packet_out.egress_port; ..."
2802 },
Yi Tsengbe342052017-11-03 10:21:23 -07002803 "key" : [],
2804 "match_type" : "exact",
2805 "type" : "simple",
2806 "max_size" : 1024,
2807 "with_counters" : false,
2808 "support_timeout" : false,
2809 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002810 "action_ids" : [27],
Yi Tsengbe342052017-11-03 10:21:23 -07002811 "actions" : ["act"],
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002812 "base_default_next" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07002813 "next_tables" : {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002814 "act" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07002815 },
2816 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002817 "action_id" : 27,
2818 "action_const" : true,
2819 "action_data" : [],
2820 "action_entry_const" : true
2821 }
2822 },
2823 {
2824 "name" : "tbl_act_0",
2825 "id" : 1,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002826 "source_info" : {
2827 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002828 "line" : 111,
Daniele Moro7c3a0022019-07-12 13:38:34 -07002829 "column" : 36,
2830 "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
Carmelo Cascone3032b872019-04-13 01:23:54 -07002831 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002832 "key" : [],
2833 "match_type" : "exact",
2834 "type" : "simple",
2835 "max_size" : 1024,
2836 "with_counters" : false,
2837 "support_timeout" : false,
2838 "direct_meters" : null,
2839 "action_ids" : [28],
2840 "actions" : ["act_0"],
2841 "base_default_next" : "node_6",
2842 "next_tables" : {
2843 "act_0" : "node_6"
2844 },
2845 "default_entry" : {
2846 "action_id" : 28,
2847 "action_const" : true,
2848 "action_data" : [],
2849 "action_entry_const" : true
2850 }
2851 },
2852 {
2853 "name" : "tbl_act_1",
2854 "id" : 2,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002855 "source_info" : {
2856 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002857 "line" : 127,
Carmelo Cascone3032b872019-04-13 01:23:54 -07002858 "column" : 37,
2859 "source_fragment" : "="
2860 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002861 "key" : [],
2862 "match_type" : "exact",
2863 "type" : "simple",
2864 "max_size" : 1024,
2865 "with_counters" : false,
2866 "support_timeout" : false,
2867 "direct_meters" : null,
2868 "action_ids" : [29],
2869 "actions" : ["act_1"],
Daniele Moro5a2de712019-09-24 14:34:07 -07002870 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002871 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07002872 "act_1" : "FabricIngress.filtering.ingress_port_vlan"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002873 },
2874 "default_entry" : {
2875 "action_id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07002876 "action_const" : true,
2877 "action_data" : [],
2878 "action_entry_const" : true
2879 }
2880 },
2881 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002882 "name" : "FabricIngress.filtering.ingress_port_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07002883 "id" : 3,
Daniele Moro7c3a0022019-07-12 13:38:34 -07002884 "source_info" : {
2885 "filename" : "include/control/filtering.p4",
2886 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07002887 "column" : 10,
2888 "source_fragment" : "ingress_port_vlan"
2889 },
2890 "key" : [
2891 {
2892 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002893 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002894 "target" : ["standard_metadata", "ingress_port"],
2895 "mask" : null
2896 },
2897 {
2898 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002899 "name" : "vlan_is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07002900 "target" : ["vlan_tag", "$valid$"],
2901 "mask" : null
2902 },
2903 {
2904 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002905 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07002906 "target" : ["vlan_tag", "vlan_id"],
2907 "mask" : null
2908 }
2909 ],
2910 "match_type" : "ternary",
2911 "type" : "simple",
2912 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002913 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002914 "support_timeout" : false,
2915 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002916 "action_ids" : [7, 8, 9],
2917 "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"],
2918 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07002919 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002920 "FabricIngress.filtering.deny" : "FabricIngress.filtering.fwd_classifier",
2921 "FabricIngress.filtering.permit" : "FabricIngress.filtering.fwd_classifier",
2922 "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07002923 },
2924 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002925 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07002926 "action_const" : true,
2927 "action_data" : [],
2928 "action_entry_const" : true
2929 }
2930 },
2931 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002932 "name" : "FabricIngress.filtering.fwd_classifier",
Daniele Moro5a2de712019-09-24 14:34:07 -07002933 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07002934 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002935 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07002936 "line" : 92,
Yi Tsengbe342052017-11-03 10:21:23 -07002937 "column" : 10,
2938 "source_fragment" : "fwd_classifier"
2939 },
2940 "key" : [
2941 {
2942 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002943 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07002944 "target" : ["standard_metadata", "ingress_port"],
2945 "mask" : null
2946 },
2947 {
Charles Chan384aea22018-08-23 22:08:02 -07002948 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002949 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07002950 "target" : ["ethernet", "dst_addr"],
2951 "mask" : null
2952 },
2953 {
Daniele Moro5a2de712019-09-24 14:34:07 -07002954 "match_type" : "ternary",
2955 "name" : "eth_type",
2956 "target" : ["eth_type", "value"],
Daniele Moro7c3a0022019-07-12 13:38:34 -07002957 "mask" : null
2958 },
2959 {
2960 "match_type" : "exact",
Daniele Moro5a2de712019-09-24 14:34:07 -07002961 "name" : "ip_eth_type",
2962 "target" : ["scalars", "fabric_metadata_t.ip_eth_type"],
Yi Tsengbe342052017-11-03 10:21:23 -07002963 "mask" : null
2964 }
2965 ],
Charles Chan384aea22018-08-23 22:08:02 -07002966 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07002967 "type" : "simple",
2968 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08002969 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07002970 "support_timeout" : false,
2971 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002972 "action_ids" : [10],
Yi Tseng27b9bc02018-04-12 14:52:40 +08002973 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Daniele Moro5a2de712019-09-24 14:34:07 -07002974 "base_default_next" : "node_10",
Yi Tsengbe342052017-11-03 10:21:23 -07002975 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07002976 "FabricIngress.filtering.set_forwarding_type" : "node_10"
Yi Tsengbe342052017-11-03 10:21:23 -07002977 },
2978 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002979 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07002980 "action_const" : true,
2981 "action_data" : ["0x0"],
2982 "action_entry_const" : true
2983 }
2984 },
2985 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08002986 "name" : "FabricIngress.forwarding.bridging",
Daniele Moro5a2de712019-09-24 14:34:07 -07002987 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07002988 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002989 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07002990 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07002991 "column" : 10,
2992 "source_fragment" : "bridging"
2993 },
2994 "key" : [
2995 {
2996 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002997 "name" : "vlan_id",
2998 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tsengbe342052017-11-03 10:21:23 -07002999 "mask" : null
3000 },
3001 {
3002 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003003 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003004 "target" : ["ethernet", "dst_addr"],
3005 "mask" : null
3006 }
3007 ],
3008 "match_type" : "ternary",
3009 "type" : "simple",
3010 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003011 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003012 "support_timeout" : false,
3013 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003014 "action_ids" : [11, 0],
3015 "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
3016 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003017 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003018 "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
3019 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003020 },
3021 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003022 "action_id" : 0,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003023 "action_const" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003024 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003025 "action_entry_const" : true
Yi Tseng1d842672017-11-28 16:06:52 -08003026 }
3027 },
3028 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003029 "name" : "FabricIngress.forwarding.mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07003030 "id" : 6,
Yi Tseng1d842672017-11-28 16:06:52 -08003031 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003032 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003033 "line" : 71,
Yi Tseng1d842672017-11-28 16:06:52 -08003034 "column" : 10,
3035 "source_fragment" : "mpls"
3036 },
3037 "key" : [
3038 {
3039 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003040 "name" : "mpls_label",
3041 "target" : ["scalars", "fabric_metadata_t.mpls_label"],
Yi Tseng1d842672017-11-28 16:06:52 -08003042 "mask" : null
3043 }
3044 ],
3045 "match_type" : "exact",
3046 "type" : "simple",
3047 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003048 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003049 "support_timeout" : false,
3050 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003051 "action_ids" : [12, 1],
3052 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
3053 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003054 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003055 "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
3056 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003057 },
3058 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003059 "action_id" : 1,
Yi Tseng1d842672017-11-28 16:06:52 -08003060 "action_const" : true,
3061 "action_data" : [],
3062 "action_entry_const" : true
3063 }
3064 },
3065 {
Charles Chan384aea22018-08-23 22:08:02 -07003066 "name" : "FabricIngress.forwarding.routing_v4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003067 "id" : 7,
Yi Tseng1d842672017-11-28 16:06:52 -08003068 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003069 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003070 "line" : 108,
Yi Tseng1d842672017-11-28 16:06:52 -08003071 "column" : 10,
Charles Chan384aea22018-08-23 22:08:02 -07003072 "source_fragment" : "routing_v4"
Yi Tseng1d842672017-11-28 16:06:52 -08003073 },
3074 "key" : [
3075 {
3076 "match_type" : "lpm",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003077 "name" : "ipv4_dst",
Yi Tseng1d842672017-11-28 16:06:52 -08003078 "target" : ["ipv4", "dst_addr"],
3079 "mask" : null
3080 }
3081 ],
3082 "match_type" : "lpm",
3083 "type" : "simple",
3084 "max_size" : 1024,
Daniele Moro5a2de712019-09-24 14:34:07 -07003085 "with_counters" : false,
Yi Tseng1d842672017-11-28 16:06:52 -08003086 "support_timeout" : false,
3087 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003088 "action_ids" : [13, 14, 2],
3089 "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
3090 "base_default_next" : "FabricIngress.acl.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003091 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003092 "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
3093 "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
3094 "nop" : "FabricIngress.acl.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003095 },
3096 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003097 "action_id" : 2,
CyberHasHe9ba39c2019-10-11 05:59:12 +08003098 "action_const" : false,
Yi Tsengbe342052017-11-03 10:21:23 -07003099 "action_data" : [],
CyberHasHe9ba39c2019-10-11 05:59:12 +08003100 "action_entry_const" : false
Yi Tsengbe342052017-11-03 10:21:23 -07003101 }
3102 },
3103 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003104 "name" : "FabricIngress.acl.acl",
Daniele Moro5a2de712019-09-24 14:34:07 -07003105 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003106 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003107 "filename" : "include/control/acl.p4",
3108 "line" : 60,
Yi Tsengbe342052017-11-03 10:21:23 -07003109 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003110 "source_fragment" : "acl"
3111 },
3112 "key" : [
3113 {
3114 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003115 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003116 "target" : ["standard_metadata", "ingress_port"],
3117 "mask" : null
3118 },
3119 {
3120 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003121 "name" : "ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003122 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3123 "mask" : null
3124 },
3125 {
3126 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003127 "name" : "l4_sport",
3128 "target" : ["scalars", "fabric_metadata_t.l4_sport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003129 "mask" : null
3130 },
3131 {
3132 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003133 "name" : "l4_dport",
3134 "target" : ["scalars", "fabric_metadata_t.l4_dport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003135 "mask" : null
3136 },
3137 {
3138 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003139 "name" : "eth_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003140 "target" : ["ethernet", "dst_addr"],
3141 "mask" : null
3142 },
3143 {
3144 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003145 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003146 "target" : ["ethernet", "src_addr"],
3147 "mask" : null
3148 },
3149 {
3150 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003151 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003152 "target" : ["vlan_tag", "vlan_id"],
3153 "mask" : null
3154 },
3155 {
3156 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003157 "name" : "eth_type",
Daniele Moro5a2de712019-09-24 14:34:07 -07003158 "target" : ["eth_type", "value"],
Yi Tseng8235a1a2018-07-24 20:57:28 +08003159 "mask" : null
3160 },
3161 {
3162 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003163 "name" : "ipv4_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003164 "target" : ["ipv4", "src_addr"],
3165 "mask" : null
3166 },
3167 {
3168 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003169 "name" : "ipv4_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003170 "target" : ["ipv4", "dst_addr"],
3171 "mask" : null
3172 },
3173 {
3174 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003175 "name" : "icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003176 "target" : ["icmp", "icmp_type"],
3177 "mask" : null
3178 },
3179 {
3180 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003181 "name" : "icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003182 "target" : ["icmp", "icmp_code"],
3183 "mask" : null
3184 }
3185 ],
3186 "match_type" : "ternary",
3187 "type" : "simple",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003188 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003189 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003190 "support_timeout" : false,
3191 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003192 "action_ids" : [15, 16, 17, 18, 19],
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003193 "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
Daniele Moro5a2de712019-09-24 14:34:07 -07003194 "base_default_next" : "node_18",
Yi Tsengbe342052017-11-03 10:21:23 -07003195 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003196 "FabricIngress.acl.set_next_id_acl" : "node_18",
3197 "FabricIngress.acl.punt_to_cpu" : "node_18",
3198 "FabricIngress.acl.set_clone_session_id" : "node_18",
3199 "FabricIngress.acl.drop" : "node_18",
3200 "FabricIngress.acl.nop_acl" : "node_18"
Yi Tsengbe342052017-11-03 10:21:23 -07003201 },
3202 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003203 "action_id" : 19,
Yi Tsengbe342052017-11-03 10:21:23 -07003204 "action_const" : true,
3205 "action_data" : [],
3206 "action_entry_const" : true
3207 }
3208 },
3209 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003210 "name" : "FabricIngress.next.xconnect",
Daniele Moro5a2de712019-09-24 14:34:07 -07003211 "id" : 9,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003212 "source_info" : {
3213 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003214 "line" : 119,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003215 "column" : 10,
3216 "source_fragment" : "xconnect"
3217 },
3218 "key" : [
3219 {
3220 "match_type" : "exact",
3221 "name" : "ig_port",
3222 "target" : ["standard_metadata", "ingress_port"],
3223 "mask" : null
3224 },
3225 {
3226 "match_type" : "exact",
3227 "name" : "next_id",
3228 "target" : ["scalars", "fabric_metadata_t.next_id"],
3229 "mask" : null
3230 }
3231 ],
3232 "match_type" : "exact",
3233 "type" : "simple",
3234 "max_size" : 1024,
3235 "with_counters" : true,
3236 "support_timeout" : false,
3237 "direct_meters" : null,
3238 "action_ids" : [21, 22, 4],
3239 "actions" : ["FabricIngress.next.output_xconnect", "FabricIngress.next.set_next_id_xconnect", "nop"],
3240 "base_default_next" : "FabricIngress.next.hashed",
3241 "next_tables" : {
3242 "FabricIngress.next.output_xconnect" : "FabricIngress.next.hashed",
3243 "FabricIngress.next.set_next_id_xconnect" : "FabricIngress.next.hashed",
3244 "nop" : "FabricIngress.next.hashed"
3245 },
3246 "default_entry" : {
3247 "action_id" : 4,
3248 "action_const" : true,
3249 "action_data" : [],
3250 "action_entry_const" : true
3251 }
3252 },
3253 {
3254 "name" : "FabricIngress.next.hashed",
Daniele Moro5a2de712019-09-24 14:34:07 -07003255 "id" : 10,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003256 "source_info" : {
3257 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003258 "line" : 202,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003259 "column" : 10,
3260 "source_fragment" : "hashed"
3261 },
3262 "key" : [
3263 {
3264 "match_type" : "exact",
3265 "name" : "next_id",
3266 "target" : ["scalars", "fabric_metadata_t.next_id"],
3267 "mask" : null
3268 }
3269 ],
3270 "match_type" : "exact",
3271 "type" : "indirect_ws",
3272 "action_profile" : "FabricIngress.next.hashed_selector",
3273 "max_size" : 1024,
3274 "with_counters" : true,
3275 "support_timeout" : false,
3276 "direct_meters" : null,
3277 "action_ids" : [23, 24, 25, 5],
3278 "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "FabricIngress.next.mpls_routing_hashed", "nop"],
3279 "base_default_next" : "FabricIngress.next.multicast",
3280 "next_tables" : {
3281 "FabricIngress.next.output_hashed" : "FabricIngress.next.multicast",
3282 "FabricIngress.next.routing_hashed" : "FabricIngress.next.multicast",
3283 "FabricIngress.next.mpls_routing_hashed" : "FabricIngress.next.multicast",
3284 "nop" : "FabricIngress.next.multicast"
3285 }
3286 },
3287 {
3288 "name" : "FabricIngress.next.multicast",
Daniele Moro5a2de712019-09-24 14:34:07 -07003289 "id" : 11,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003290 "source_info" : {
3291 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003292 "line" : 236,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003293 "column" : 10,
3294 "source_fragment" : "multicast"
3295 },
3296 "key" : [
3297 {
3298 "match_type" : "exact",
3299 "name" : "next_id",
3300 "target" : ["scalars", "fabric_metadata_t.next_id"],
3301 "mask" : null
3302 }
3303 ],
3304 "match_type" : "exact",
3305 "type" : "simple",
3306 "max_size" : 1024,
3307 "with_counters" : true,
3308 "support_timeout" : false,
3309 "direct_meters" : null,
3310 "action_ids" : [26, 6],
3311 "actions" : ["FabricIngress.next.set_mcast_group_id", "nop"],
3312 "base_default_next" : "FabricIngress.next.next_vlan",
3313 "next_tables" : {
3314 "FabricIngress.next.set_mcast_group_id" : "FabricIngress.next.next_vlan",
3315 "nop" : "FabricIngress.next.next_vlan"
3316 },
3317 "default_entry" : {
3318 "action_id" : 6,
3319 "action_const" : true,
3320 "action_data" : [],
3321 "action_entry_const" : true
3322 }
3323 },
3324 {
3325 "name" : "FabricIngress.next.next_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07003326 "id" : 12,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003327 "source_info" : {
3328 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003329 "line" : 86,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003330 "column" : 10,
3331 "source_fragment" : "next_vlan"
3332 },
3333 "key" : [
3334 {
3335 "match_type" : "exact",
3336 "name" : "next_id",
3337 "target" : ["scalars", "fabric_metadata_t.next_id"],
3338 "mask" : null
3339 }
3340 ],
3341 "match_type" : "exact",
3342 "type" : "simple",
3343 "max_size" : 1024,
3344 "with_counters" : true,
3345 "support_timeout" : false,
3346 "direct_meters" : null,
3347 "action_ids" : [20, 3],
3348 "actions" : ["FabricIngress.next.set_vlan", "nop"],
Daniele Moro5a2de712019-09-24 14:34:07 -07003349 "base_default_next" : "node_23",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003350 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003351 "FabricIngress.next.set_vlan" : "node_23",
3352 "nop" : "node_23"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003353 },
3354 "default_entry" : {
3355 "action_id" : 3,
3356 "action_const" : true,
3357 "action_data" : [],
3358 "action_entry_const" : true
3359 }
3360 },
3361 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003362 "name" : "tbl_act_2",
3363 "id" : 13,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003364 "source_info" : {
3365 "filename" : "include/control/port_counter.p4",
3366 "line" : 31,
3367 "column" : 12,
3368 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
3369 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003370 "key" : [],
3371 "match_type" : "exact",
3372 "type" : "simple",
3373 "max_size" : 1024,
3374 "with_counters" : false,
3375 "support_timeout" : false,
3376 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003377 "action_ids" : [30],
3378 "actions" : ["act_2"],
3379 "base_default_next" : "node_25",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003380 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003381 "act_2" : "node_25"
Carmelo Casconea5400af2018-07-17 22:11:54 +02003382 },
3383 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003384 "action_id" : 30,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003385 "action_const" : true,
3386 "action_data" : [],
3387 "action_entry_const" : true
3388 }
3389 },
3390 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003391 "name" : "tbl_act_3",
3392 "id" : 14,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003393 "source_info" : {
3394 "filename" : "include/control/port_counter.p4",
3395 "line" : 34,
3396 "column" : 12,
3397 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
3398 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003399 "key" : [],
3400 "match_type" : "exact",
3401 "type" : "simple",
3402 "max_size" : 1024,
3403 "with_counters" : false,
3404 "support_timeout" : false,
3405 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003406 "action_ids" : [31],
3407 "actions" : ["act_3"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003408 "base_default_next" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003409 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003410 "act_3" : null
Yi Tseng27b9bc02018-04-12 14:52:40 +08003411 },
3412 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003413 "action_id" : 31,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003414 "action_const" : true,
3415 "action_data" : [],
3416 "action_entry_const" : true
3417 }
Yi Tsengbe342052017-11-03 10:21:23 -07003418 }
3419 ],
3420 "action_profiles" : [
3421 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003422 "name" : "FabricIngress.next.hashed_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003423 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003424 "source_info" : {
3425 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003426 "line" : 183,
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003427 "column" : 57,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003428 "source_fragment" : "hashed_selector"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003429 },
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003430 "max_size" : 1024,
Yi Tsengbe342052017-11-03 10:21:23 -07003431 "selector" : {
3432 "algo" : "crc16",
3433 "input" : [
3434 {
3435 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003436 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003437 },
3438 {
3439 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003440 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003441 },
3442 {
3443 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003444 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003445 },
3446 {
3447 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003448 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003449 },
3450 {
3451 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003452 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003453 }
3454 ]
3455 }
3456 }
3457 ],
3458 "conditionals" : [
3459 {
3460 "name" : "node_2",
3461 "id" : 0,
3462 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003463 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003464 "line" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07003465 "column" : 12,
3466 "source_fragment" : "hdr.packet_out.isValid()"
3467 },
3468 "expression" : {
3469 "type" : "expression",
3470 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003471 "op" : "d2b",
3472 "left" : null,
3473 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003474 "type" : "field",
3475 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003476 }
3477 }
3478 },
3479 "true_next" : "tbl_act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003480 "false_next" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07003481 },
3482 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003483 "name" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07003484 "id" : 1,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003485 "source_info" : {
3486 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003487 "line" : 110,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003488 "column" : 12,
3489 "source_fragment" : "hdr.vlan_tag.isValid()"
3490 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003491 "expression" : {
3492 "type" : "expression",
3493 "value" : {
3494 "op" : "d2b",
3495 "left" : null,
3496 "right" : {
3497 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003498 "value" : ["vlan_tag", "$valid$"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003499 }
3500 }
3501 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003502 "true_next" : "tbl_act_0",
3503 "false_next" : "node_6"
3504 },
3505 {
3506 "name" : "node_6",
3507 "id" : 2,
3508 "source_info" : {
3509 "filename" : "include/control/filtering.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003510 "line" : 122,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003511 "column" : 12,
3512 "source_fragment" : "!hdr.mpls.isValid()"
3513 },
3514 "expression" : {
3515 "type" : "expression",
3516 "value" : {
3517 "op" : "not",
3518 "left" : null,
3519 "right" : {
3520 "type" : "expression",
3521 "value" : {
3522 "op" : "d2b",
3523 "left" : null,
3524 "right" : {
3525 "type" : "field",
3526 "value" : ["mpls", "$valid$"]
3527 }
3528 }
3529 }
3530 }
3531 },
3532 "true_next" : "tbl_act_1",
Daniele Moro5a2de712019-09-24 14:34:07 -07003533 "false_next" : "FabricIngress.filtering.ingress_port_vlan"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003534 },
3535 {
3536 "name" : "node_10",
Daniele Moro5a2de712019-09-24 14:34:07 -07003537 "id" : 3,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003538 "source_info" : {
3539 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003540 "line" : 71,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003541 "column" : 12,
3542 "source_fragment" : "fabric_metadata.skip_forwarding == false"
3543 },
3544 "expression" : {
3545 "type" : "expression",
3546 "value" : {
3547 "op" : "==",
3548 "left" : {
3549 "type" : "expression",
3550 "value" : {
3551 "op" : "d2b",
3552 "left" : null,
3553 "right" : {
3554 "type" : "field",
3555 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
3556 }
3557 }
3558 },
3559 "right" : {
3560 "type" : "bool",
3561 "value" : false
3562 }
3563 }
3564 },
Daniele Moro5a2de712019-09-24 14:34:07 -07003565 "true_next" : "node_11",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003566 "false_next" : "FabricIngress.acl.acl"
3567 },
3568 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003569 "name" : "node_11",
3570 "id" : 4,
Yi Tsengbe342052017-11-03 10:21:23 -07003571 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003572 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003573 "line" : 150,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003574 "column" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003575 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3576 },
3577 "expression" : {
3578 "type" : "expression",
3579 "value" : {
3580 "op" : "==",
3581 "left" : {
3582 "type" : "field",
3583 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3584 },
3585 "right" : {
3586 "type" : "hexstr",
3587 "value" : "0x00"
3588 }
3589 }
3590 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003591 "true_next" : "FabricIngress.forwarding.bridging",
Daniele Moro5a2de712019-09-24 14:34:07 -07003592 "false_next" : "node_13"
Yi Tsengbe342052017-11-03 10:21:23 -07003593 },
3594 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003595 "name" : "node_13",
3596 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07003597 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003598 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003599 "line" : 151,
Yi Tsengbe342052017-11-03 10:21:23 -07003600 "column" : 17,
3601 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
3602 },
3603 "expression" : {
3604 "type" : "expression",
3605 "value" : {
3606 "op" : "==",
3607 "left" : {
3608 "type" : "field",
3609 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3610 },
3611 "right" : {
3612 "type" : "hexstr",
3613 "value" : "0x01"
3614 }
3615 }
3616 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003617 "true_next" : "FabricIngress.forwarding.mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07003618 "false_next" : "node_15"
Yi Tsengbe342052017-11-03 10:21:23 -07003619 },
3620 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003621 "name" : "node_15",
3622 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -07003623 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003624 "filename" : "include/control/forwarding.p4",
Daniele Moro5a2de712019-09-24 14:34:07 -07003625 "line" : 152,
Yi Tsengbe342052017-11-03 10:21:23 -07003626 "column" : 17,
3627 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
3628 },
3629 "expression" : {
3630 "type" : "expression",
3631 "value" : {
3632 "op" : "==",
3633 "left" : {
3634 "type" : "field",
3635 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3636 },
3637 "right" : {
3638 "type" : "hexstr",
3639 "value" : "0x02"
3640 }
3641 }
3642 },
Charles Chan384aea22018-08-23 22:08:02 -07003643 "true_next" : "FabricIngress.forwarding.routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003644 "false_next" : "FabricIngress.acl.acl"
3645 },
3646 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003647 "name" : "node_18",
3648 "id" : 7,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003649 "source_info" : {
3650 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003651 "line" : 75,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003652 "column" : 12,
3653 "source_fragment" : "fabric_metadata.skip_next == false"
3654 },
3655 "expression" : {
3656 "type" : "expression",
3657 "value" : {
3658 "op" : "==",
3659 "left" : {
3660 "type" : "expression",
3661 "value" : {
3662 "op" : "d2b",
3663 "left" : null,
3664 "right" : {
3665 "type" : "field",
3666 "value" : ["scalars", "fabric_metadata_t.skip_next"]
3667 }
3668 }
3669 },
3670 "right" : {
3671 "type" : "bool",
3672 "value" : false
3673 }
3674 }
3675 },
3676 "false_next" : null,
3677 "true_next" : "FabricIngress.next.xconnect"
Yi Tseng27b9bc02018-04-12 14:52:40 +08003678 },
3679 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003680 "name" : "node_23",
3681 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +08003682 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003683 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003684 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07003685 "column" : 12,
3686 "source_fragment" : "standard_metadata.egress_spec < 511"
3687 },
3688 "expression" : {
3689 "type" : "expression",
3690 "value" : {
3691 "op" : "<",
3692 "left" : {
3693 "type" : "field",
3694 "value" : ["standard_metadata", "egress_spec"]
3695 },
3696 "right" : {
3697 "type" : "hexstr",
3698 "value" : "0x01ff"
3699 }
3700 }
3701 },
Daniele Moro5a2de712019-09-24 14:34:07 -07003702 "true_next" : "tbl_act_2",
3703 "false_next" : "node_25"
Yi Tsengbe342052017-11-03 10:21:23 -07003704 },
3705 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003706 "name" : "node_25",
3707 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003708 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003709 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003710 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07003711 "column" : 12,
3712 "source_fragment" : "standard_metadata.ingress_port < 511"
3713 },
3714 "expression" : {
3715 "type" : "expression",
3716 "value" : {
3717 "op" : "<",
3718 "left" : {
3719 "type" : "field",
3720 "value" : ["standard_metadata", "ingress_port"]
3721 },
3722 "right" : {
3723 "type" : "hexstr",
3724 "value" : "0x01ff"
3725 }
3726 }
3727 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08003728 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003729 "true_next" : "tbl_act_3"
Yi Tseng3a5731e2018-01-22 11:38:58 -08003730 }
3731 ]
3732 },
3733 {
3734 "name" : "egress",
3735 "id" : 1,
3736 "source_info" : {
3737 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003738 "line" : 93,
Yi Tseng3a5731e2018-01-22 11:38:58 -08003739 "column" : 8,
3740 "source_fragment" : "FabricEgress"
3741 },
Daniele Moro5a2de712019-09-24 14:34:07 -07003742 "init_table" : "node_29",
Yi Tseng3a5731e2018-01-22 11:38:58 -08003743 "tables" : [
3744 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003745 "name" : "tbl_act_4",
3746 "id" : 15,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003747 "source_info" : {
3748 "filename" : "include/control/packetio.p4",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003749 "line" : 41,
3750 "column" : 12,
3751 "source_fragment" : "exit"
Carmelo Cascone3032b872019-04-13 01:23:54 -07003752 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003753 "key" : [],
3754 "match_type" : "exact",
3755 "type" : "simple",
3756 "max_size" : 1024,
3757 "with_counters" : false,
3758 "support_timeout" : false,
3759 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003760 "action_ids" : [37],
3761 "actions" : ["act_4"],
3762 "base_default_next" : "node_31",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003763 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003764 "act_4" : "node_31"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003765 },
3766 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003767 "action_id" : 37,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003768 "action_const" : true,
3769 "action_data" : [],
3770 "action_entry_const" : true
3771 }
3772 },
3773 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003774 "name" : "tbl_act_5",
3775 "id" : 16,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003776 "source_info" : {
3777 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003778 "line" : 44,
3779 "column" : 12,
3780 "source_fragment" : "hdr.packet_in.setValid(); ..."
Carmelo Cascone3032b872019-04-13 01:23:54 -07003781 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003782 "key" : [],
3783 "match_type" : "exact",
3784 "type" : "simple",
3785 "max_size" : 1024,
3786 "with_counters" : false,
3787 "support_timeout" : false,
3788 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003789 "action_ids" : [38],
3790 "actions" : ["act_5"],
3791 "base_default_next" : "node_33",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003792 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003793 "act_5" : "node_33"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003794 },
3795 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003796 "action_id" : 38,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003797 "action_const" : true,
3798 "action_data" : [],
3799 "action_entry_const" : true
3800 }
3801 },
3802 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003803 "name" : "tbl_act_6",
3804 "id" : 17,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003805 "source_info" : {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003806 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003807 "line" : 337,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003808 "column" : 12,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003809 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Cascone3032b872019-04-13 01:23:54 -07003810 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003811 "key" : [],
3812 "match_type" : "exact",
3813 "type" : "simple",
3814 "max_size" : 1024,
3815 "with_counters" : false,
3816 "support_timeout" : false,
3817 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003818 "action_ids" : [39],
3819 "actions" : ["act_6"],
3820 "base_default_next" : "node_35",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003821 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003822 "act_6" : "node_35"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003823 },
3824 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003825 "action_id" : 39,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003826 "action_const" : true,
3827 "action_data" : [],
3828 "action_entry_const" : true
3829 }
3830 },
3831 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003832 "name" : "tbl_egress_next_pop_mpls_if_present",
Daniele Moro5a2de712019-09-24 14:34:07 -07003833 "id" : 18,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003834 "source_info" : {
3835 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003836 "line" : 341,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003837 "column" : 36,
3838 "source_fragment" : "pop_mpls_if_present()"
3839 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003840 "key" : [],
3841 "match_type" : "exact",
3842 "type" : "simple",
3843 "max_size" : 1024,
3844 "with_counters" : false,
3845 "support_timeout" : false,
3846 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003847 "action_ids" : [33],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003848 "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
3849 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3850 "next_tables" : {
3851 "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
3852 },
3853 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003854 "action_id" : 33,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003855 "action_const" : true,
3856 "action_data" : [],
3857 "action_entry_const" : true
3858 }
3859 },
3860 {
3861 "name" : "tbl_egress_next_set_mpls",
Daniele Moro5a2de712019-09-24 14:34:07 -07003862 "id" : 19,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003863 "source_info" : {
3864 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003865 "line" : 343,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003866 "column" : 12,
3867 "source_fragment" : "set_mpls()"
3868 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003869 "key" : [],
3870 "match_type" : "exact",
3871 "type" : "simple",
3872 "max_size" : 1024,
3873 "with_counters" : false,
3874 "support_timeout" : false,
3875 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003876 "action_ids" : [34],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003877 "actions" : ["FabricEgress.egress_next.set_mpls"],
3878 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
3879 "next_tables" : {
3880 "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
3881 },
3882 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003883 "action_id" : 34,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003884 "action_const" : true,
3885 "action_data" : [],
3886 "action_entry_const" : true
3887 }
3888 },
3889 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003890 "name" : "FabricEgress.egress_next.egress_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07003891 "id" : 20,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003892 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003893 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003894 "line" : 320,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003895 "column" : 10,
3896 "source_fragment" : "egress_vlan"
3897 },
3898 "key" : [
3899 {
3900 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003901 "name" : "vlan_id",
3902 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003903 "mask" : null
3904 },
3905 {
3906 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003907 "name" : "eg_port",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003908 "target" : ["standard_metadata", "egress_port"],
3909 "mask" : null
3910 }
3911 ],
3912 "match_type" : "exact",
3913 "type" : "simple",
3914 "max_size" : 1024,
Yi Tseng47eac892018-07-11 02:17:04 +08003915 "with_counters" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003916 "support_timeout" : false,
3917 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003918 "action_ids" : [36, 32],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003919 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07003920 "base_default_next" : null,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003921 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003922 "__HIT__" : "tbl_act_7",
3923 "__MISS__" : "tbl_act_8"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003924 },
3925 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003926 "action_id" : 32,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003927 "action_const" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08003928 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003929 "action_entry_const" : true
3930 }
3931 },
3932 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003933 "name" : "tbl_act_7",
3934 "id" : 21,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003935 "key" : [],
3936 "match_type" : "exact",
3937 "type" : "simple",
3938 "max_size" : 1024,
3939 "with_counters" : false,
3940 "support_timeout" : false,
3941 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003942 "action_ids" : [40],
3943 "actions" : ["act_7"],
3944 "base_default_next" : "node_42",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003945 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003946 "act_7" : "node_42"
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003947 },
3948 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003949 "action_id" : 40,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003950 "action_const" : true,
3951 "action_data" : [],
3952 "action_entry_const" : true
3953 }
3954 },
3955 {
Daniele Moro5a2de712019-09-24 14:34:07 -07003956 "name" : "tbl_act_8",
3957 "id" : 22,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003958 "key" : [],
3959 "match_type" : "exact",
3960 "type" : "simple",
3961 "max_size" : 1024,
3962 "with_counters" : false,
3963 "support_timeout" : false,
3964 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003965 "action_ids" : [41],
3966 "actions" : ["act_8"],
3967 "base_default_next" : "node_42",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003968 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003969 "act_8" : "node_42"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003970 },
3971 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003972 "action_id" : 41,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003973 "action_const" : true,
3974 "action_data" : [],
3975 "action_entry_const" : true
3976 }
3977 },
3978 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003979 "name" : "tbl_egress_next_push_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07003980 "id" : 23,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003981 "source_info" : {
3982 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07003983 "line" : 360,
Daniele Moro7c3a0022019-07-12 13:38:34 -07003984 "column" : 20,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003985 "source_fragment" : "push_vlan()"
3986 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003987 "key" : [],
3988 "match_type" : "exact",
3989 "type" : "simple",
3990 "max_size" : 1024,
3991 "with_counters" : false,
3992 "support_timeout" : false,
3993 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07003994 "action_ids" : [35],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003995 "actions" : ["FabricEgress.egress_next.push_vlan"],
Daniele Moro5a2de712019-09-24 14:34:07 -07003996 "base_default_next" : "node_45",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003997 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07003998 "FabricEgress.egress_next.push_vlan" : "node_45"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003999 },
4000 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004001 "action_id" : 35,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004002 "action_const" : true,
4003 "action_data" : [],
4004 "action_entry_const" : true
4005 }
4006 },
4007 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004008 "name" : "tbl_act_9",
4009 "id" : 24,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004010 "source_info" : {
4011 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004012 "line" : 369,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004013 "column" : 25,
4014 "source_fragment" : "="
4015 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004016 "key" : [],
4017 "match_type" : "exact",
4018 "type" : "simple",
4019 "max_size" : 1024,
4020 "with_counters" : false,
4021 "support_timeout" : false,
4022 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004023 "action_ids" : [43],
4024 "actions" : ["act_10"],
4025 "base_default_next" : "node_47",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004026 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004027 "act_10" : "node_47"
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004028 },
4029 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004030 "action_id" : 43,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004031 "action_const" : true,
4032 "action_data" : [],
4033 "action_entry_const" : true
4034 }
4035 },
4036 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004037 "name" : "tbl_act_10",
4038 "id" : 25,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004039 "source_info" : {
4040 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004041 "line" : 370,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004042 "column" : 35,
4043 "source_fragment" : "mark_to_drop(standard_metadata)"
4044 },
4045 "key" : [],
4046 "match_type" : "exact",
4047 "type" : "simple",
4048 "max_size" : 1024,
4049 "with_counters" : false,
4050 "support_timeout" : false,
4051 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004052 "action_ids" : [42],
4053 "actions" : ["act_9"],
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004054 "base_default_next" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004055 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004056 "act_9" : null
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004057 },
4058 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004059 "action_id" : 42,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004060 "action_const" : true,
4061 "action_data" : [],
4062 "action_entry_const" : true
4063 }
4064 },
4065 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004066 "name" : "tbl_act_11",
4067 "id" : 26,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004068 "source_info" : {
4069 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004070 "line" : 373,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004071 "column" : 29,
4072 "source_fragment" : "="
4073 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004074 "key" : [],
4075 "match_type" : "exact",
4076 "type" : "simple",
4077 "max_size" : 1024,
4078 "with_counters" : false,
4079 "support_timeout" : false,
4080 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004081 "action_ids" : [45],
4082 "actions" : ["act_12"],
4083 "base_default_next" : "node_51",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004084 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004085 "act_12" : "node_51"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004086 },
4087 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004088 "action_id" : 45,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004089 "action_const" : true,
4090 "action_data" : [],
4091 "action_entry_const" : true
4092 }
4093 },
4094 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004095 "name" : "tbl_act_12",
4096 "id" : 27,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004097 "source_info" : {
4098 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004099 "line" : 374,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004100 "column" : 39,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004101 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Cascone3032b872019-04-13 01:23:54 -07004102 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004103 "key" : [],
4104 "match_type" : "exact",
4105 "type" : "simple",
4106 "max_size" : 1024,
4107 "with_counters" : false,
4108 "support_timeout" : false,
4109 "direct_meters" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004110 "action_ids" : [44],
4111 "actions" : ["act_11"],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004112 "base_default_next" : null,
4113 "next_tables" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004114 "act_11" : null
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004115 },
4116 "default_entry" : {
Daniele Moro5a2de712019-09-24 14:34:07 -07004117 "action_id" : 44,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004118 "action_const" : true,
4119 "action_data" : [],
4120 "action_entry_const" : true
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004121 }
Yi Tseng3a5731e2018-01-22 11:38:58 -08004122 }
4123 ],
4124 "action_profiles" : [],
4125 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004126 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004127 "name" : "node_29",
4128 "id" : 10,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004129 "source_info" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004130 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004131 "line" : 39,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004132 "column" : 12,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004133 "source_fragment" : "fabric_metadata.is_controller_packet_out == true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004134 },
4135 "expression" : {
4136 "type" : "expression",
4137 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004138 "op" : "==",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004139 "left" : {
4140 "type" : "expression",
4141 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004142 "op" : "d2b",
4143 "left" : null,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004144 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004145 "type" : "field",
4146 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02004147 }
4148 }
4149 },
4150 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004151 "type" : "bool",
4152 "value" : true
Carmelo Casconea5400af2018-07-17 22:11:54 +02004153 }
4154 }
4155 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004156 "true_next" : "tbl_act_4",
4157 "false_next" : "node_31"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004158 },
4159 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004160 "name" : "node_31",
4161 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -07004162 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004163 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004164 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07004165 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08004166 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07004167 },
4168 "expression" : {
4169 "type" : "expression",
4170 "value" : {
4171 "op" : "==",
4172 "left" : {
4173 "type" : "field",
4174 "value" : ["standard_metadata", "egress_port"]
4175 },
4176 "right" : {
4177 "type" : "hexstr",
4178 "value" : "0x00ff"
4179 }
4180 }
4181 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004182 "true_next" : "tbl_act_5",
4183 "false_next" : "node_33"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004184 },
4185 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004186 "name" : "node_33",
4187 "id" : 12,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004188 "source_info" : {
4189 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004190 "line" : 335,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004191 "column" : 12,
4192 "source_fragment" : "fabric_metadata.is_multicast == true ..."
4193 },
4194 "expression" : {
4195 "type" : "expression",
4196 "value" : {
4197 "op" : "and",
4198 "left" : {
4199 "type" : "expression",
4200 "value" : {
4201 "op" : "==",
4202 "left" : {
4203 "type" : "expression",
4204 "value" : {
4205 "op" : "d2b",
4206 "left" : null,
4207 "right" : {
4208 "type" : "field",
4209 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4210 }
4211 }
4212 },
4213 "right" : {
4214 "type" : "bool",
4215 "value" : true
4216 }
4217 }
4218 },
4219 "right" : {
4220 "type" : "expression",
4221 "value" : {
4222 "op" : "==",
4223 "left" : {
4224 "type" : "field",
4225 "value" : ["standard_metadata", "ingress_port"]
4226 },
4227 "right" : {
4228 "type" : "field",
4229 "value" : ["standard_metadata", "egress_port"]
4230 }
4231 }
4232 }
4233 }
4234 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004235 "true_next" : "tbl_act_6",
4236 "false_next" : "node_35"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004237 },
4238 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004239 "name" : "node_35",
4240 "id" : 13,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004241 "source_info" : {
4242 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004243 "line" : 340,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004244 "column" : 12,
4245 "source_fragment" : "fabric_metadata.mpls_label == 0"
4246 },
4247 "expression" : {
4248 "type" : "expression",
4249 "value" : {
4250 "op" : "==",
4251 "left" : {
4252 "type" : "field",
4253 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
4254 },
4255 "right" : {
4256 "type" : "hexstr",
4257 "value" : "0x000000"
4258 }
4259 }
4260 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004261 "true_next" : "node_36",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004262 "false_next" : "tbl_egress_next_set_mpls"
4263 },
4264 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004265 "name" : "node_36",
4266 "id" : 14,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004267 "source_info" : {
4268 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004269 "line" : 341,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004270 "column" : 16,
4271 "source_fragment" : "hdr.mpls.isValid()"
4272 },
4273 "expression" : {
4274 "type" : "expression",
4275 "value" : {
4276 "op" : "d2b",
4277 "left" : null,
4278 "right" : {
4279 "type" : "field",
4280 "value" : ["mpls", "$valid$"]
4281 }
4282 }
4283 },
4284 "true_next" : "tbl_egress_next_pop_mpls_if_present",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004285 "false_next" : "FabricEgress.egress_next.egress_vlan"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004286 },
4287 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004288 "name" : "node_42",
4289 "id" : 15,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004290 "source_info" : {
4291 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004292 "line" : 357,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004293 "column" : 16,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004294 "source_fragment" : "!egress_vlan.apply().hit"
4295 },
4296 "expression" : {
4297 "type" : "expression",
4298 "value" : {
4299 "op" : "not",
4300 "left" : null,
4301 "right" : {
4302 "type" : "expression",
4303 "value" : {
4304 "op" : "d2b",
4305 "left" : null,
4306 "right" : {
4307 "type" : "field",
4308 "value" : ["scalars", "egress_next_tmp"]
4309 }
4310 }
4311 }
4312 }
4313 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004314 "true_next" : "node_43",
4315 "false_next" : "node_45"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004316 },
4317 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004318 "name" : "node_43",
4319 "id" : 16,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004320 "source_info" : {
4321 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004322 "line" : 359,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004323 "column" : 20,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004324 "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
4325 },
4326 "expression" : {
4327 "type" : "expression",
4328 "value" : {
4329 "op" : "!=",
4330 "left" : {
4331 "type" : "field",
4332 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
4333 },
4334 "right" : {
4335 "type" : "hexstr",
4336 "value" : "0x0ffe"
4337 }
4338 }
4339 },
4340 "true_next" : "tbl_egress_next_push_vlan",
Daniele Moro5a2de712019-09-24 14:34:07 -07004341 "false_next" : "node_45"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004342 },
4343 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004344 "name" : "node_45",
4345 "id" : 17,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004346 "source_info" : {
4347 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004348 "line" : 368,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004349 "column" : 12,
4350 "source_fragment" : "hdr.mpls.isValid()"
4351 },
4352 "expression" : {
4353 "type" : "expression",
4354 "value" : {
4355 "op" : "d2b",
4356 "left" : null,
4357 "right" : {
4358 "type" : "field",
4359 "value" : ["mpls", "$valid$"]
4360 }
4361 }
4362 },
Daniele Moro5a2de712019-09-24 14:34:07 -07004363 "true_next" : "tbl_act_9",
4364 "false_next" : "node_49"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004365 },
4366 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004367 "name" : "node_47",
4368 "id" : 18,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004369 "source_info" : {
4370 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004371 "line" : 370,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004372 "column" : 16,
4373 "source_fragment" : "hdr.mpls.ttl == 0"
4374 },
4375 "expression" : {
4376 "type" : "expression",
4377 "value" : {
4378 "op" : "==",
4379 "left" : {
4380 "type" : "field",
4381 "value" : ["mpls", "ttl"]
4382 },
4383 "right" : {
4384 "type" : "hexstr",
4385 "value" : "0x00"
4386 }
4387 }
4388 },
4389 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004390 "true_next" : "tbl_act_10"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004391 },
4392 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004393 "name" : "node_49",
4394 "id" : 19,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004395 "source_info" : {
4396 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004397 "line" : 372,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004398 "column" : 15,
4399 "source_fragment" : "hdr.ipv4.isValid()"
4400 },
4401 "expression" : {
4402 "type" : "expression",
4403 "value" : {
4404 "op" : "d2b",
4405 "left" : null,
4406 "right" : {
4407 "type" : "field",
4408 "value" : ["ipv4", "$valid$"]
4409 }
4410 }
4411 },
4412 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004413 "true_next" : "tbl_act_11"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004414 },
4415 {
Daniele Moro5a2de712019-09-24 14:34:07 -07004416 "name" : "node_51",
4417 "id" : 20,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004418 "source_info" : {
4419 "filename" : "include/control/next.p4",
Daniele Morob3d199b2019-11-01 14:01:46 -07004420 "line" : 374,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004421 "column" : 20,
4422 "source_fragment" : "hdr.ipv4.ttl == 0"
4423 },
4424 "expression" : {
4425 "type" : "expression",
4426 "value" : {
4427 "op" : "==",
4428 "left" : {
4429 "type" : "field",
4430 "value" : ["ipv4", "ttl"]
4431 },
4432 "right" : {
4433 "type" : "hexstr",
4434 "value" : "0x00"
4435 }
4436 }
4437 },
4438 "false_next" : null,
Daniele Moro5a2de712019-09-24 14:34:07 -07004439 "true_next" : "tbl_act_12"
Yi Tsengbe342052017-11-03 10:21:23 -07004440 }
4441 ]
4442 }
4443 ],
4444 "checksums" : [
4445 {
4446 "name" : "cksum",
4447 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004448 "source_info" : {
4449 "filename" : "include/checksum.p4",
4450 "line" : 28,
4451 "column" : 8,
4452 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
4453 },
Yi Tsengbe342052017-11-03 10:21:23 -07004454 "target" : ["ipv4", "hdr_checksum"],
4455 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004456 "calculation" : "calc",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004457 "verify" : false,
4458 "update" : true,
Yi Tsengbd46d052018-01-22 17:18:16 -08004459 "if_cond" : {
4460 "type" : "expression",
4461 "value" : {
4462 "op" : "d2b",
4463 "left" : null,
4464 "right" : {
4465 "type" : "field",
4466 "value" : ["ipv4", "$valid$"]
4467 }
4468 }
4469 }
Yi Tsengbe342052017-11-03 10:21:23 -07004470 },
4471 {
4472 "name" : "cksum_0",
4473 "id" : 1,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004474 "source_info" : {
4475 "filename" : "include/checksum.p4",
4476 "line" : 57,
4477 "column" : 8,
4478 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
4479 },
Yi Tsengbe342052017-11-03 10:21:23 -07004480 "target" : ["ipv4", "hdr_checksum"],
4481 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004482 "calculation" : "calc_0",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004483 "verify" : true,
4484 "update" : false,
Yi Tsengbd46d052018-01-22 17:18:16 -08004485 "if_cond" : {
4486 "type" : "expression",
4487 "value" : {
4488 "op" : "d2b",
4489 "left" : null,
4490 "right" : {
4491 "type" : "field",
4492 "value" : ["ipv4", "$valid$"]
4493 }
4494 }
4495 }
Yi Tsengbe342052017-11-03 10:21:23 -07004496 }
4497 ],
4498 "force_arith" : [],
4499 "extern_instances" : [],
4500 "field_aliases" : [
4501 [
4502 "queueing_metadata.enq_timestamp",
4503 ["standard_metadata", "enq_timestamp"]
4504 ],
4505 [
4506 "queueing_metadata.enq_qdepth",
4507 ["standard_metadata", "enq_qdepth"]
4508 ],
4509 [
4510 "queueing_metadata.deq_timedelta",
4511 ["standard_metadata", "deq_timedelta"]
4512 ],
4513 [
4514 "queueing_metadata.deq_qdepth",
4515 ["standard_metadata", "deq_qdepth"]
4516 ],
4517 [
4518 "intrinsic_metadata.ingress_global_timestamp",
4519 ["standard_metadata", "ingress_global_timestamp"]
4520 ],
4521 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08004522 "intrinsic_metadata.egress_global_timestamp",
4523 ["standard_metadata", "egress_global_timestamp"]
4524 ],
4525 [
Yi Tsengbe342052017-11-03 10:21:23 -07004526 "intrinsic_metadata.lf_field_list",
4527 ["standard_metadata", "lf_field_list"]
4528 ],
4529 [
4530 "intrinsic_metadata.mcast_grp",
4531 ["standard_metadata", "mcast_grp"]
4532 ],
4533 [
4534 "intrinsic_metadata.resubmit_flag",
4535 ["standard_metadata", "resubmit_flag"]
4536 ],
4537 [
4538 "intrinsic_metadata.egress_rid",
4539 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08004540 ],
4541 [
4542 "intrinsic_metadata.recirculate_flag",
4543 ["standard_metadata", "recirculate_flag"]
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004544 ],
4545 [
4546 "intrinsic_metadata.priority",
4547 ["standard_metadata", "priority"]
Yi Tsengbe342052017-11-03 10:21:23 -07004548 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02004549 ],
4550 "program" : "fabric.p4",
4551 "__meta__" : {
4552 "version" : [2, 18],
4553 "compiler" : "https://github.com/p4lang/p4c"
4554 }
Carmelo Cascone25243d62019-02-21 15:37:31 -08004555}