blob: bc0e35027b67d78c674d58529642304dcd6c1ef2 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001{
Yi Tsengbe342052017-11-03 10:21:23 -07002 "header_types" : [
3 {
4 "name" : "scalars_0",
5 "id" : 0,
6 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -08007 ["tmp_0", 4, false],
8 ["tmp", 32, false],
Yi Tsengbe342052017-11-03 10:21:23 -07009 ["tmp_1", 32, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080010 ["egress_next_tmp", 1, false],
Daniele Moro7c3a0022019-07-12 13:38:34 -070011 ["fabric_metadata_t.last_eth_type", 16, false],
12 ["fabric_metadata_t.is_ipv4", 1, false],
13 ["fabric_metadata_t.is_ipv6", 1, false],
14 ["fabric_metadata_t.is_mpls", 1, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080015 ["fabric_metadata_t.ip_eth_type", 16, false],
16 ["fabric_metadata_t.vlan_id", 12, false],
17 ["fabric_metadata_t.vlan_pri", 3, false],
18 ["fabric_metadata_t.vlan_cfi", 1, false],
19 ["fabric_metadata_t.mpls_label", 20, false],
20 ["fabric_metadata_t.mpls_ttl", 8, false],
21 ["fabric_metadata_t.skip_forwarding", 1, false],
22 ["fabric_metadata_t.skip_next", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070023 ["fabric_metadata_t.fwd_type", 3, false],
24 ["fabric_metadata_t.next_id", 32, false],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +020025 ["fabric_metadata_t.is_multicast", 1, false],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -070026 ["fabric_metadata_t.is_controller_packet_out", 1, false],
Yi Tsengbe342052017-11-03 10:21:23 -070027 ["fabric_metadata_t.ip_proto", 8, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080028 ["fabric_metadata_t.l4_sport", 16, false],
Daniele Moro7c3a0022019-07-12 13:38:34 -070029 ["fabric_metadata_t.l4_dport", 16, false],
30 ["_padding_0", 5, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080031 ]
32 },
33 {
Carmelo Cascone6af4e172018-06-15 16:01:30 +020034 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -080035 "id" : 1,
36 "fields" : [
Carmelo Cascone6af4e172018-06-15 16:01:30 +020037 ["ingress_port", 9, false],
38 ["egress_spec", 9, false],
39 ["egress_port", 9, false],
40 ["clone_spec", 32, false],
41 ["instance_type", 32, false],
42 ["drop", 1, false],
43 ["recirculate_port", 16, false],
44 ["packet_length", 32, false],
45 ["enq_timestamp", 32, false],
46 ["enq_qdepth", 19, false],
47 ["deq_timedelta", 32, false],
48 ["deq_qdepth", 19, false],
49 ["ingress_global_timestamp", 48, false],
50 ["egress_global_timestamp", 48, false],
51 ["lf_field_list", 32, false],
52 ["mcast_grp", 16, false],
53 ["resubmit_flag", 32, false],
54 ["egress_rid", 16, false],
Carmelo Cascone6af4e172018-06-15 16:01:30 +020055 ["recirculate_flag", 32, false],
Carmelo Cascone9b607da2019-05-08 14:03:01 -070056 ["checksum_error", 1, false],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -070057 ["parser_error", 32, false],
Carmelo Cascone9b607da2019-05-08 14:03:01 -070058 ["priority", 3, false],
59 ["_padding", 2, false]
Carmelo Cascone6af4e172018-06-15 16:01:30 +020060 ]
61 },
62 {
63 "name" : "ethernet_t",
64 "id" : 2,
65 "fields" : [
Yi Tsengc6844f52017-12-19 11:58:25 -080066 ["dst_addr", 48, false],
67 ["src_addr", 48, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080068 ["eth_type", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080069 ]
70 },
71 {
72 "name" : "vlan_tag_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020073 "id" : 3,
Yi Tsengc6844f52017-12-19 11:58:25 -080074 "fields" : [
75 ["pri", 3, false],
76 ["cfi", 1, false],
77 ["vlan_id", 12, false],
Carmelo Casconeb5324e72018-11-25 02:26:32 -080078 ["eth_type", 16, false]
Yi Tsengc6844f52017-12-19 11:58:25 -080079 ]
80 },
81 {
82 "name" : "mpls_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020083 "id" : 4,
Yi Tsengc6844f52017-12-19 11:58:25 -080084 "fields" : [
85 ["label", 20, false],
86 ["tc", 3, false],
87 ["bos", 1, false],
88 ["ttl", 8, false]
Yi Tsengbe342052017-11-03 10:21:23 -070089 ]
90 },
91 {
92 "name" : "ipv4_t",
Carmelo Cascone6af4e172018-06-15 16:01:30 +020093 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -070094 "fields" : [
95 ["version", 4, false],
96 ["ihl", 4, false],
Jonghwan Hyuned478dc2018-08-06 15:35:18 +090097 ["dscp", 6, false],
98 ["ecn", 2, false],
Yi Tsengbe342052017-11-03 10:21:23 -070099 ["total_len", 16, false],
100 ["identification", 16, false],
101 ["flags", 3, false],
102 ["frag_offset", 13, false],
103 ["ttl", 8, false],
104 ["protocol", 8, false],
105 ["hdr_checksum", 16, false],
106 ["src_addr", 32, false],
107 ["dst_addr", 32, false]
108 ]
109 },
110 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800111 "name" : "tcp_t",
Carmelo Casconef645e842018-07-16 18:31:52 +0200112 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800113 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800114 ["sport", 16, false],
115 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700116 ["seq_no", 32, false],
117 ["ack_no", 32, false],
118 ["data_offset", 4, false],
119 ["res", 3, false],
120 ["ecn", 3, false],
121 ["ctrl", 6, false],
122 ["window", 16, false],
123 ["checksum", 16, false],
124 ["urgent_ptr", 16, false]
125 ]
126 },
127 {
128 "name" : "udp_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800129 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700130 "fields" : [
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800131 ["sport", 16, false],
132 ["dport", 16, false],
Yi Tsengbe342052017-11-03 10:21:23 -0700133 ["len", 16, false],
134 ["checksum", 16, false]
135 ]
136 },
137 {
138 "name" : "icmp_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800139 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700140 "fields" : [
141 ["icmp_type", 8, false],
142 ["icmp_code", 8, false],
Yi Tsengf73a5532017-11-17 15:58:57 -0800143 ["checksum", 16, false],
144 ["identifier", 16, false],
145 ["sequence_number", 16, false],
146 ["timestamp", 64, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700147 ]
148 },
149 {
150 "name" : "packet_out_header_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800151 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700152 "fields" : [
153 ["egress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800154 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700155 ]
156 },
157 {
158 "name" : "packet_in_header_t",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800159 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700160 "fields" : [
161 ["ingress_port", 9, false],
Yi Tseng1d842672017-11-28 16:06:52 -0800162 ["_pad", 7, false]
Yi Tsengbe342052017-11-03 10:21:23 -0700163 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700164 }
165 ],
166 "headers" : [
167 {
Yi Tsengbe342052017-11-03 10:21:23 -0700168 "name" : "scalars",
Yi Tsengc6844f52017-12-19 11:58:25 -0800169 "id" : 0,
Yi Tsengbe342052017-11-03 10:21:23 -0700170 "header_type" : "scalars_0",
171 "metadata" : true,
172 "pi_omit" : true
173 },
174 {
175 "name" : "standard_metadata",
Yi Tsengc6844f52017-12-19 11:58:25 -0800176 "id" : 1,
Yi Tsengbe342052017-11-03 10:21:23 -0700177 "header_type" : "standard_metadata",
178 "metadata" : true,
179 "pi_omit" : true
180 },
181 {
182 "name" : "ethernet",
Yi Tsengc6844f52017-12-19 11:58:25 -0800183 "id" : 2,
Yi Tsengbe342052017-11-03 10:21:23 -0700184 "header_type" : "ethernet_t",
185 "metadata" : false,
186 "pi_omit" : true
187 },
188 {
189 "name" : "vlan_tag",
Yi Tsengc6844f52017-12-19 11:58:25 -0800190 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -0700191 "header_type" : "vlan_tag_t",
192 "metadata" : false,
193 "pi_omit" : true
194 },
195 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800196 "name" : "inner_vlan_tag",
Yi Tsengbd46d052018-01-22 17:18:16 -0800197 "id" : 4,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800198 "header_type" : "vlan_tag_t",
199 "metadata" : false,
200 "pi_omit" : true
201 },
202 {
203 "name" : "mpls",
204 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700205 "header_type" : "mpls_t",
206 "metadata" : false,
207 "pi_omit" : true
208 },
209 {
210 "name" : "ipv4",
Carmelo Casconef645e842018-07-16 18:31:52 +0200211 "id" : 6,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800212 "header_type" : "ipv4_t",
Yi Tsengbe342052017-11-03 10:21:23 -0700213 "metadata" : false,
214 "pi_omit" : true
215 },
216 {
217 "name" : "tcp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200218 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -0700219 "header_type" : "tcp_t",
220 "metadata" : false,
221 "pi_omit" : true
222 },
223 {
224 "name" : "udp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200225 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700226 "header_type" : "udp_t",
227 "metadata" : false,
228 "pi_omit" : true
229 },
230 {
231 "name" : "icmp",
Carmelo Casconef645e842018-07-16 18:31:52 +0200232 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700233 "header_type" : "icmp_t",
234 "metadata" : false,
235 "pi_omit" : true
236 },
237 {
238 "name" : "packet_out",
Carmelo Casconef645e842018-07-16 18:31:52 +0200239 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700240 "header_type" : "packet_out_header_t",
241 "metadata" : false,
242 "pi_omit" : true
243 },
244 {
245 "name" : "packet_in",
Carmelo Casconef645e842018-07-16 18:31:52 +0200246 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700247 "header_type" : "packet_in_header_t",
248 "metadata" : false,
249 "pi_omit" : true
250 }
251 ],
252 "header_stacks" : [],
253 "header_union_types" : [],
254 "header_unions" : [],
255 "header_union_stacks" : [],
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700256 "field_lists" : [
257 {
258 "id" : 1,
259 "name" : "fl",
260 "source_info" : {
Daniele Moro3b7a21b2019-06-25 17:33:40 -0700261 "filename" : "include/control/acl.p4",
262 "line" : 46,
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700263 "column" : 40,
Daniele Moro3b7a21b2019-06-25 17:33:40 -0700264 "source_fragment" : "{standard_metadata.ingress_port}"
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700265 },
266 "elements" : [
267 {
268 "type" : "field",
269 "value" : ["standard_metadata", "ingress_port"]
Daniele Moro01ca2ab2019-06-25 11:48:48 -0700270 }
271 ]
272 }
273 ],
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700274 "errors" : [
Carmelo Cascone4d8785b2019-05-31 17:11:26 -0700275 ["NoError", 1],
276 ["PacketTooShort", 2],
277 ["NoMatch", 3],
278 ["StackOutOfBounds", 4],
279 ["HeaderTooShort", 5],
280 ["ParserTimeout", 6],
281 ["ParserInvalidArgument", 7]
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700282 ],
Yi Tsengbe342052017-11-03 10:21:23 -0700283 "enums" : [],
284 "parsers" : [
285 {
286 "name" : "parser",
287 "id" : 0,
288 "init_state" : "start",
289 "parse_states" : [
290 {
291 "name" : "start",
292 "id" : 0,
293 "parser_ops" : [],
294 "transitions" : [
295 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800296 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700297 "value" : "0x00ff",
298 "mask" : null,
299 "next_state" : "parse_packet_out"
300 },
301 {
302 "value" : "default",
303 "mask" : null,
304 "next_state" : "parse_ethernet"
305 }
306 ],
307 "transition_key" : [
308 {
309 "type" : "field",
310 "value" : ["standard_metadata", "ingress_port"]
311 }
312 ]
313 },
314 {
315 "name" : "parse_packet_out",
316 "id" : 1,
317 "parser_ops" : [
318 {
319 "parameters" : [
320 {
321 "type" : "regular",
322 "value" : "packet_out"
323 }
324 ],
325 "op" : "extract"
326 }
327 ],
328 "transitions" : [
329 {
330 "value" : "default",
331 "mask" : null,
332 "next_state" : "parse_ethernet"
333 }
334 ],
335 "transition_key" : []
336 },
337 {
338 "name" : "parse_ethernet",
339 "id" : 2,
340 "parser_ops" : [
341 {
342 "parameters" : [
343 {
344 "type" : "regular",
345 "value" : "ethernet"
346 }
347 ],
348 "op" : "extract"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800349 },
350 {
351 "parameters" : [
352 {
353 "type" : "field",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700354 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800355 },
356 {
357 "type" : "field",
358 "value" : ["ethernet", "eth_type"]
359 }
360 ],
361 "op" : "set"
362 },
363 {
364 "parameters" : [
365 {
366 "type" : "field",
367 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
368 },
369 {
370 "type" : "hexstr",
371 "value" : "0x0ffe"
372 }
373 ],
374 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700375 }
376 ],
377 "transitions" : [
378 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800379 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700380 "value" : "0x8100",
381 "mask" : null,
382 "next_state" : "parse_vlan_tag"
383 },
384 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800385 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700386 "value" : "0x8847",
387 "mask" : null,
388 "next_state" : "parse_mpls"
389 },
390 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800391 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700392 "value" : "0x0800",
393 "mask" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -0700394 "next_state" : "pre_parse_ipv4"
Yi Tsengbe342052017-11-03 10:21:23 -0700395 },
396 {
Yi Tsengbe342052017-11-03 10:21:23 -0700397 "value" : "default",
398 "mask" : null,
399 "next_state" : null
400 }
401 ],
402 "transition_key" : [
403 {
404 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800405 "value" : ["ethernet", "eth_type"]
Yi Tsengbe342052017-11-03 10:21:23 -0700406 }
407 ]
408 },
409 {
410 "name" : "parse_vlan_tag",
411 "id" : 3,
412 "parser_ops" : [
413 {
414 "parameters" : [
415 {
416 "type" : "regular",
417 "value" : "vlan_tag"
418 }
419 ],
420 "op" : "extract"
421 }
422 ],
423 "transitions" : [
424 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800425 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800426 "value" : "0x0800",
Yi Tsengbe342052017-11-03 10:21:23 -0700427 "mask" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -0700428 "next_state" : "pre_parse_ipv4"
Yi Tsengbe342052017-11-03 10:21:23 -0700429 },
430 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800431 "type" : "hexstr",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800432 "value" : "0x8847",
433 "mask" : null,
434 "next_state" : "parse_mpls"
435 },
436 {
437 "type" : "hexstr",
438 "value" : "0x8100",
439 "mask" : null,
440 "next_state" : "parse_inner_vlan_tag"
441 },
442 {
Daniele Moro7c3a0022019-07-12 13:38:34 -0700443 "type" : "hexstr",
444 "value" : "0x88a8",
445 "mask" : null,
446 "next_state" : "parse_inner_vlan_tag"
447 },
448 {
449 "type" : "hexstr",
450 "value" : "0x9100",
451 "mask" : null,
452 "next_state" : "parse_inner_vlan_tag"
453 },
454 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800455 "value" : "default",
456 "mask" : null,
457 "next_state" : null
458 }
459 ],
460 "transition_key" : [
461 {
462 "type" : "field",
463 "value" : ["vlan_tag", "eth_type"]
464 }
465 ]
466 },
467 {
468 "name" : "parse_inner_vlan_tag",
469 "id" : 4,
470 "parser_ops" : [
471 {
472 "parameters" : [
473 {
474 "type" : "regular",
475 "value" : "inner_vlan_tag"
476 }
477 ],
478 "op" : "extract"
479 }
480 ],
481 "transitions" : [
482 {
483 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700484 "value" : "0x0800",
485 "mask" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -0700486 "next_state" : "pre_parse_ipv4"
Yi Tsengbe342052017-11-03 10:21:23 -0700487 },
488 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800489 "type" : "hexstr",
Yi Tsengbd46d052018-01-22 17:18:16 -0800490 "value" : "0x8847",
Yi Tsengbe342052017-11-03 10:21:23 -0700491 "mask" : null,
Yi Tsengbd46d052018-01-22 17:18:16 -0800492 "next_state" : "parse_mpls"
Yi Tsengbe342052017-11-03 10:21:23 -0700493 },
494 {
495 "value" : "default",
496 "mask" : null,
497 "next_state" : null
498 }
499 ],
500 "transition_key" : [
501 {
502 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800503 "value" : ["inner_vlan_tag", "eth_type"]
Yi Tsengbe342052017-11-03 10:21:23 -0700504 }
505 ]
506 },
507 {
508 "name" : "parse_mpls",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800509 "id" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -0700510 "parser_ops" : [
511 {
512 "parameters" : [
513 {
514 "type" : "regular",
515 "value" : "mpls"
516 }
517 ],
518 "op" : "extract"
519 },
520 {
521 "parameters" : [
522 {
523 "type" : "field",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700524 "value" : ["scalars", "fabric_metadata_t.is_mpls"]
525 },
526 {
527 "type" : "expression",
528 "value" : {
529 "type" : "expression",
530 "value" : {
531 "op" : "b2d",
532 "left" : null,
533 "right" : {
534 "type" : "bool",
535 "value" : true
536 }
537 }
538 }
539 }
540 ],
541 "op" : "set"
542 },
543 {
544 "parameters" : [
545 {
546 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800547 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
548 },
549 {
550 "type" : "field",
551 "value" : ["mpls", "label"]
552 }
553 ],
554 "op" : "set"
555 },
556 {
557 "parameters" : [
558 {
559 "type" : "field",
560 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
561 },
562 {
563 "type" : "field",
564 "value" : ["mpls", "ttl"]
565 }
566 ],
567 "op" : "set"
568 },
569 {
570 "parameters" : [
571 {
572 "type" : "field",
573 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700574 },
575 {
576 "type" : "lookahead",
Yi Tsengc6844f52017-12-19 11:58:25 -0800577 "value" : [0, 4]
Yi Tsengbe342052017-11-03 10:21:23 -0700578 }
579 ],
580 "op" : "set"
581 }
582 ],
583 "transitions" : [
584 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800585 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700586 "value" : "0x04",
587 "mask" : null,
588 "next_state" : "parse_ipv4"
589 },
590 {
Yi Tsengbe342052017-11-03 10:21:23 -0700591 "value" : "default",
592 "mask" : null,
593 "next_state" : "parse_ethernet"
594 }
595 ],
596 "transition_key" : [
597 {
598 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800599 "value" : ["scalars", "tmp_0"]
Yi Tsengbe342052017-11-03 10:21:23 -0700600 }
601 ]
602 },
603 {
Daniele Moro7c3a0022019-07-12 13:38:34 -0700604 "name" : "pre_parse_ipv4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800605 "id" : 6,
Yi Tsengbe342052017-11-03 10:21:23 -0700606 "parser_ops" : [
607 {
608 "parameters" : [
609 {
Daniele Moro7c3a0022019-07-12 13:38:34 -0700610 "type" : "field",
611 "value" : ["scalars", "fabric_metadata_t.is_ipv4"]
612 },
613 {
614 "type" : "expression",
615 "value" : {
616 "type" : "expression",
617 "value" : {
618 "op" : "b2d",
619 "left" : null,
620 "right" : {
621 "type" : "bool",
622 "value" : true
623 }
624 }
625 }
626 }
627 ],
628 "op" : "set"
629 }
630 ],
631 "transitions" : [
632 {
633 "value" : "default",
634 "mask" : null,
635 "next_state" : "parse_ipv4"
636 }
637 ],
638 "transition_key" : []
639 },
640 {
641 "name" : "parse_ipv4",
642 "id" : 7,
643 "parser_ops" : [
644 {
645 "parameters" : [
646 {
Yi Tsengbe342052017-11-03 10:21:23 -0700647 "type" : "regular",
648 "value" : "ipv4"
649 }
650 ],
651 "op" : "extract"
652 },
653 {
654 "parameters" : [
655 {
656 "type" : "field",
657 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
658 },
659 {
660 "type" : "field",
661 "value" : ["ipv4", "protocol"]
662 }
663 ],
664 "op" : "set"
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800665 },
666 {
667 "parameters" : [
668 {
669 "type" : "field",
670 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
671 },
672 {
673 "type" : "hexstr",
674 "value" : "0x0800"
675 }
676 ],
677 "op" : "set"
Yi Tsengbe342052017-11-03 10:21:23 -0700678 }
679 ],
680 "transitions" : [
681 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800682 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700683 "value" : "0x06",
684 "mask" : null,
685 "next_state" : "parse_tcp"
686 },
687 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800688 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700689 "value" : "0x11",
690 "mask" : null,
691 "next_state" : "parse_udp"
692 },
693 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800694 "type" : "hexstr",
Yi Tsengbe342052017-11-03 10:21:23 -0700695 "value" : "0x01",
696 "mask" : null,
697 "next_state" : "parse_icmp"
698 },
699 {
700 "value" : "default",
701 "mask" : null,
702 "next_state" : null
703 }
704 ],
705 "transition_key" : [
706 {
707 "type" : "field",
708 "value" : ["ipv4", "protocol"]
709 }
710 ]
711 },
712 {
Yi Tsengbe342052017-11-03 10:21:23 -0700713 "name" : "parse_tcp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700714 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -0700715 "parser_ops" : [
716 {
717 "parameters" : [
718 {
719 "type" : "regular",
720 "value" : "tcp"
721 }
722 ],
723 "op" : "extract"
724 },
725 {
726 "parameters" : [
727 {
728 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800729 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700730 },
731 {
732 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800733 "value" : ["tcp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700734 }
735 ],
736 "op" : "set"
737 },
738 {
739 "parameters" : [
740 {
741 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800742 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700743 },
744 {
745 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800746 "value" : ["tcp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700747 }
748 ],
749 "op" : "set"
750 }
751 ],
752 "transitions" : [
753 {
754 "value" : "default",
755 "mask" : null,
756 "next_state" : null
757 }
758 ],
759 "transition_key" : []
760 },
761 {
762 "name" : "parse_udp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700763 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -0700764 "parser_ops" : [
765 {
766 "parameters" : [
767 {
768 "type" : "regular",
769 "value" : "udp"
770 }
771 ],
772 "op" : "extract"
773 },
774 {
775 "parameters" : [
776 {
777 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800778 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700779 },
780 {
781 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800782 "value" : ["udp", "sport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700783 }
784 ],
785 "op" : "set"
786 },
787 {
788 "parameters" : [
789 {
790 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800791 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700792 },
793 {
794 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800795 "value" : ["udp", "dport"]
Yi Tsengbe342052017-11-03 10:21:23 -0700796 }
797 ],
798 "op" : "set"
799 }
800 ],
801 "transitions" : [
802 {
803 "value" : "default",
804 "mask" : null,
805 "next_state" : null
806 }
807 ],
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700808 "transition_key" : [
809 {
810 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800811 "value" : ["udp", "dport"]
Carmelo Cascone79a3a312018-08-16 17:14:43 -0700812 }
813 ]
Yi Tsengbe342052017-11-03 10:21:23 -0700814 },
815 {
816 "name" : "parse_icmp",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700817 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700818 "parser_ops" : [
819 {
820 "parameters" : [
821 {
822 "type" : "regular",
823 "value" : "icmp"
824 }
825 ],
826 "op" : "extract"
827 }
828 ],
829 "transitions" : [
830 {
831 "value" : "default",
832 "mask" : null,
833 "next_state" : null
834 }
835 ],
836 "transition_key" : []
837 }
838 ]
839 }
840 ],
Yi Tseng27b9bc02018-04-12 14:52:40 +0800841 "parse_vsets" : [],
Yi Tsengbe342052017-11-03 10:21:23 -0700842 "deparsers" : [
843 {
844 "name" : "deparser",
845 "id" : 0,
846 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200847 "filename" : "include/parser.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700848 "line" : 276,
Yi Tsengbe342052017-11-03 10:21:23 -0700849 "column" : 8,
850 "source_fragment" : "FabricDeparser"
851 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800852 "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "ipv4", "tcp", "udp", "icmp"]
Yi Tsengbe342052017-11-03 10:21:23 -0700853 }
854 ],
855 "meter_arrays" : [],
856 "counter_arrays" : [
857 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800858 "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
Yi Tseng1d842672017-11-28 16:06:52 -0800859 "id" : 0,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800860 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700861 "binding" : "FabricIngress.filtering.ingress_port_vlan",
862 "source_info" : {
863 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800864 "line" : 31,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700865 "column" : 50,
866 "source_fragment" : "ingress_port_vlan_counter"
867 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800868 },
869 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800870 "name" : "FabricIngress.filtering.fwd_classifier_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800871 "id" : 1,
872 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700873 "binding" : "FabricIngress.filtering.fwd_classifier",
874 "source_info" : {
875 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700876 "line" : 83,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700877 "column" : 50,
878 "source_fragment" : "fwd_classifier_counter"
879 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800880 },
881 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800882 "name" : "FabricIngress.forwarding.bridging_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800883 "id" : 2,
884 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700885 "binding" : "FabricIngress.forwarding.bridging",
886 "source_info" : {
887 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800888 "line" : 36,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700889 "column" : 50,
890 "source_fragment" : "bridging_counter"
891 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800892 },
893 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800894 "name" : "FabricIngress.forwarding.mpls_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800895 "id" : 3,
896 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700897 "binding" : "FabricIngress.forwarding.mpls",
898 "source_info" : {
899 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700900 "line" : 63,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700901 "column" : 50,
902 "source_fragment" : "mpls_counter"
903 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800904 },
905 {
Charles Chan384aea22018-08-23 22:08:02 -0700906 "name" : "FabricIngress.forwarding.routing_v4_counter",
Yi Tseng3a5731e2018-01-22 11:38:58 -0800907 "id" : 4,
908 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700909 "binding" : "FabricIngress.forwarding.routing_v4",
910 "source_info" : {
911 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -0700912 "line" : 87,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700913 "column" : 50,
914 "source_fragment" : "routing_v4_counter"
915 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800916 },
917 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800918 "name" : "FabricIngress.acl.acl_counter",
Carmelo Cascone5bdffe72018-02-04 14:53:54 -0800919 "id" : 5,
Yi Tseng3a5731e2018-01-22 11:38:58 -0800920 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800921 "binding" : "FabricIngress.acl.acl",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700922 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800923 "filename" : "include/control/acl.p4",
924 "line" : 30,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700925 "column" : 50,
926 "source_fragment" : "acl_counter"
927 }
Yi Tseng3a5731e2018-01-22 11:38:58 -0800928 },
929 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800930 "name" : "FabricIngress.next.next_vlan_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200931 "id" : 6,
Yi Tseng47eac892018-07-11 02:17:04 +0800932 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800933 "binding" : "FabricIngress.next.next_vlan",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700934 "source_info" : {
935 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800936 "line" : 67,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700937 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800938 "source_fragment" : "next_vlan_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700939 }
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800940 },
941 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800942 "name" : "FabricIngress.next.xconnect_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200943 "id" : 7,
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800944 "is_direct" : true,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800945 "binding" : "FabricIngress.next.xconnect",
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700946 "source_info" : {
947 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700948 "line" : 103,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700949 "column" : 50,
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800950 "source_fragment" : "xconnect_counter"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700951 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800952 },
953 {
954 "name" : "FabricIngress.next.hashed_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200955 "id" : 8,
Yi Tseng27b9bc02018-04-12 14:52:40 +0800956 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700957 "binding" : "FabricIngress.next.hashed",
958 "source_info" : {
959 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700960 "line" : 178,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700961 "column" : 50,
962 "source_fragment" : "hashed_counter"
963 }
Yi Tseng27b9bc02018-04-12 14:52:40 +0800964 },
965 {
Esin Karaman971fb7f2017-12-28 13:44:52 +0000966 "name" : "FabricIngress.next.multicast_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200967 "id" : 9,
Esin Karaman971fb7f2017-12-28 13:44:52 +0000968 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700969 "binding" : "FabricIngress.next.multicast",
970 "source_info" : {
971 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -0700972 "line" : 222,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -0700973 "column" : 50,
974 "source_fragment" : "multicast_counter"
975 }
Esin Karaman971fb7f2017-12-28 13:44:52 +0000976 },
977 {
978 "name" : "FabricIngress.port_counters_control.egress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200979 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -0700980 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200981 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800982 "line" : 26,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800983 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700984 "source_fragment" : "egress_port_counter"
985 },
986 "size" : 511,
987 "is_direct" : false
988 },
989 {
Yi Tseng27b9bc02018-04-12 14:52:40 +0800990 "name" : "FabricIngress.port_counters_control.ingress_port_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +0200991 "id" : 11,
Yi Tsengbe342052017-11-03 10:21:23 -0700992 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +0200993 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -0800994 "line" : 27,
Yi Tseng3d3956d2018-01-31 17:28:05 -0800995 "column" : 48,
Yi Tsengbe342052017-11-03 10:21:23 -0700996 "source_fragment" : "ingress_port_counter"
997 },
998 "size" : 511,
999 "is_direct" : false
Yi Tseng47eac892018-07-11 02:17:04 +08001000 },
1001 {
1002 "name" : "FabricEgress.egress_next.egress_vlan_counter",
Carmelo Casconef645e842018-07-16 18:31:52 +02001003 "id" : 12,
Yi Tseng47eac892018-07-11 02:17:04 +08001004 "is_direct" : true,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07001005 "binding" : "FabricEgress.egress_next.egress_vlan",
1006 "source_info" : {
1007 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07001008 "line" : 309,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07001009 "column" : 50,
1010 "source_fragment" : "egress_vlan_counter"
1011 }
Yi Tsengbe342052017-11-03 10:21:23 -07001012 }
1013 ],
1014 "register_arrays" : [],
1015 "calculations" : [
1016 {
1017 "name" : "calc",
1018 "id" : 0,
1019 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001020 "filename" : "include/checksum.p4",
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001021 "line" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07001022 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001023 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -07001024 },
1025 "algo" : "csum16",
1026 "input" : [
1027 {
1028 "type" : "field",
1029 "value" : ["ipv4", "version"]
1030 },
1031 {
1032 "type" : "field",
1033 "value" : ["ipv4", "ihl"]
1034 },
1035 {
1036 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001037 "value" : ["ipv4", "dscp"]
1038 },
1039 {
1040 "type" : "field",
1041 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -07001042 },
1043 {
1044 "type" : "field",
1045 "value" : ["ipv4", "total_len"]
1046 },
1047 {
1048 "type" : "field",
1049 "value" : ["ipv4", "identification"]
1050 },
1051 {
1052 "type" : "field",
1053 "value" : ["ipv4", "flags"]
1054 },
1055 {
1056 "type" : "field",
1057 "value" : ["ipv4", "frag_offset"]
1058 },
1059 {
1060 "type" : "field",
1061 "value" : ["ipv4", "ttl"]
1062 },
1063 {
1064 "type" : "field",
1065 "value" : ["ipv4", "protocol"]
1066 },
1067 {
1068 "type" : "field",
1069 "value" : ["ipv4", "src_addr"]
1070 },
1071 {
1072 "type" : "field",
1073 "value" : ["ipv4", "dst_addr"]
1074 }
1075 ]
1076 },
1077 {
1078 "name" : "calc_0",
1079 "id" : 1,
1080 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001081 "filename" : "include/checksum.p4",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001082 "line" : 57,
Yi Tsengbe342052017-11-03 10:21:23 -07001083 "column" : 8,
Carmelo Cascone6af4e172018-06-15 16:01:30 +02001084 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
Yi Tsengbe342052017-11-03 10:21:23 -07001085 },
1086 "algo" : "csum16",
1087 "input" : [
1088 {
1089 "type" : "field",
1090 "value" : ["ipv4", "version"]
1091 },
1092 {
1093 "type" : "field",
1094 "value" : ["ipv4", "ihl"]
1095 },
1096 {
1097 "type" : "field",
Jonghwan Hyuned478dc2018-08-06 15:35:18 +09001098 "value" : ["ipv4", "dscp"]
1099 },
1100 {
1101 "type" : "field",
1102 "value" : ["ipv4", "ecn"]
Yi Tsengbe342052017-11-03 10:21:23 -07001103 },
1104 {
1105 "type" : "field",
1106 "value" : ["ipv4", "total_len"]
1107 },
1108 {
1109 "type" : "field",
1110 "value" : ["ipv4", "identification"]
1111 },
1112 {
1113 "type" : "field",
1114 "value" : ["ipv4", "flags"]
1115 },
1116 {
1117 "type" : "field",
1118 "value" : ["ipv4", "frag_offset"]
1119 },
1120 {
1121 "type" : "field",
1122 "value" : ["ipv4", "ttl"]
1123 },
1124 {
1125 "type" : "field",
1126 "value" : ["ipv4", "protocol"]
1127 },
1128 {
1129 "type" : "field",
1130 "value" : ["ipv4", "src_addr"]
1131 },
1132 {
1133 "type" : "field",
1134 "value" : ["ipv4", "dst_addr"]
1135 }
1136 ]
Yi Tsengbe342052017-11-03 10:21:23 -07001137 }
1138 ],
1139 "learn_lists" : [],
1140 "actions" : [
1141 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001142 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001143 "id" : 0,
1144 "runtime_data" : [],
1145 "primitives" : []
1146 },
1147 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001148 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001149 "id" : 1,
1150 "runtime_data" : [],
1151 "primitives" : []
1152 },
1153 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001154 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001155 "id" : 2,
1156 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001157 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001158 },
1159 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001160 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001161 "id" : 3,
1162 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001163 "primitives" : []
Yi Tsengbe342052017-11-03 10:21:23 -07001164 },
1165 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001166 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001167 "id" : 4,
1168 "runtime_data" : [],
1169 "primitives" : []
1170 },
1171 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001172 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001173 "id" : 5,
1174 "runtime_data" : [],
1175 "primitives" : []
1176 },
1177 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001178 "name" : "nop",
Yi Tsengbe342052017-11-03 10:21:23 -07001179 "id" : 6,
1180 "runtime_data" : [],
1181 "primitives" : []
1182 },
1183 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001184 "name" : "FabricIngress.filtering.deny",
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001185 "id" : 7,
Yi Tseng47eac892018-07-11 02:17:04 +08001186 "runtime_data" : [],
Yi Tseng1d842672017-11-28 16:06:52 -08001187 "primitives" : [
1188 {
Yi Tsengbe342052017-11-03 10:21:23 -07001189 "op" : "assign",
1190 "parameters" : [
1191 {
1192 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001193 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
Yi Tsengbe342052017-11-03 10:21:23 -07001194 },
1195 {
1196 "type" : "expression",
1197 "value" : {
1198 "type" : "expression",
1199 "value" : {
1200 "op" : "b2d",
1201 "left" : null,
1202 "right" : {
1203 "type" : "bool",
1204 "value" : true
1205 }
1206 }
1207 }
1208 }
1209 ],
1210 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001211 "filename" : "include/control/filtering.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001212 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001213 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001214 "source_fragment" : "fabric_metadata.skip_forwarding = true"
1215 }
1216 },
1217 {
1218 "op" : "assign",
1219 "parameters" : [
1220 {
1221 "type" : "field",
1222 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1223 },
1224 {
1225 "type" : "expression",
1226 "value" : {
1227 "type" : "expression",
1228 "value" : {
1229 "op" : "b2d",
1230 "left" : null,
1231 "right" : {
1232 "type" : "bool",
1233 "value" : true
1234 }
1235 }
1236 }
1237 }
1238 ],
1239 "source_info" : {
1240 "filename" : "include/control/filtering.p4",
1241 "line" : 37,
1242 "column" : 8,
1243 "source_fragment" : "fabric_metadata.skip_next = true"
Yi Tsengbe342052017-11-03 10:21:23 -07001244 }
1245 }
1246 ]
1247 },
1248 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001249 "name" : "FabricIngress.filtering.permit",
1250 "id" : 8,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07001251 "runtime_data" : [],
1252 "primitives" : []
1253 },
1254 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001255 "name" : "FabricIngress.filtering.permit_with_internal_vlan",
1256 "id" : 9,
1257 "runtime_data" : [
1258 {
1259 "name" : "vlan_id",
1260 "bitwidth" : 12
1261 }
1262 ],
1263 "primitives" : [
1264 {
1265 "op" : "assign",
1266 "parameters" : [
1267 {
1268 "type" : "field",
1269 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1270 },
1271 {
1272 "type" : "runtime_data",
1273 "value" : 0
1274 }
1275 ],
1276 "source_info" : {
1277 "filename" : "include/control/filtering.p4",
1278 "line" : 47,
1279 "column" : 8,
1280 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1281 }
1282 }
1283 ]
1284 },
1285 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08001286 "name" : "FabricIngress.filtering.set_forwarding_type",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001287 "id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07001288 "runtime_data" : [
1289 {
1290 "name" : "fwd_type",
1291 "bitwidth" : 3
1292 }
1293 ],
1294 "primitives" : [
1295 {
1296 "op" : "assign",
1297 "parameters" : [
1298 {
1299 "type" : "field",
1300 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
1301 },
1302 {
1303 "type" : "runtime_data",
1304 "value" : 0
1305 }
1306 ],
1307 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001308 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07001309 "line" : 86,
Yi Tsengbe342052017-11-03 10:21:23 -07001310 "column" : 8,
1311 "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
1312 }
1313 }
1314 ]
1315 },
1316 {
Yi Tseng47eac892018-07-11 02:17:04 +08001317 "name" : "FabricIngress.forwarding.set_next_id_bridging",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001318 "id" : 11,
Carmelo Casconef645e842018-07-16 18:31:52 +02001319 "runtime_data" : [
1320 {
1321 "name" : "next_id",
1322 "bitwidth" : 32
1323 }
1324 ],
1325 "primitives" : [
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 {
1348 "name" : "FabricIngress.forwarding.pop_mpls_and_next",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001349 "id" : 12,
Carmelo Casconef645e842018-07-16 18:31:52 +02001350 "runtime_data" : [
1351 {
1352 "name" : "next_id",
1353 "bitwidth" : 32
1354 }
1355 ],
1356 "primitives" : [
1357 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001358 "op" : "assign",
Carmelo Casconef645e842018-07-16 18:31:52 +02001359 "parameters" : [
1360 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001361 "type" : "field",
1362 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1363 },
1364 {
1365 "type" : "hexstr",
1366 "value" : "0x000000"
Carmelo Casconef645e842018-07-16 18:31:52 +02001367 }
1368 ],
1369 "source_info" : {
1370 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07001371 "line" : 66,
Carmelo Casconef645e842018-07-16 18:31:52 +02001372 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001373 "source_fragment" : "fabric_metadata.mpls_label = 0"
Carmelo Casconef645e842018-07-16 18:31:52 +02001374 }
1375 },
1376 {
1377 "op" : "assign",
1378 "parameters" : [
1379 {
1380 "type" : "field",
1381 "value" : ["scalars", "fabric_metadata_t.next_id"]
1382 },
1383 {
1384 "type" : "runtime_data",
1385 "value" : 0
1386 }
1387 ],
1388 "source_info" : {
1389 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001390 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001391 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001392 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001393 }
1394 }
1395 ]
1396 },
1397 {
Charles Chan384aea22018-08-23 22:08:02 -07001398 "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001399 "id" : 13,
Carmelo Casconef645e842018-07-16 18:31:52 +02001400 "runtime_data" : [
1401 {
1402 "name" : "next_id",
1403 "bitwidth" : 32
1404 }
1405 ],
1406 "primitives" : [
1407 {
1408 "op" : "assign",
1409 "parameters" : [
1410 {
1411 "type" : "field",
1412 "value" : ["scalars", "fabric_metadata_t.next_id"]
1413 },
1414 {
1415 "type" : "runtime_data",
1416 "value" : 0
1417 }
1418 ],
1419 "source_info" : {
1420 "filename" : "include/control/forwarding.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001421 "line" : 30,
Carmelo Casconef645e842018-07-16 18:31:52 +02001422 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001423 "source_fragment" : "fabric_metadata.next_id = next_id; ..."
Carmelo Casconef645e842018-07-16 18:31:52 +02001424 }
1425 }
1426 ]
1427 },
1428 {
Charles Chancd03f072018-08-31 17:46:37 -07001429 "name" : "FabricIngress.forwarding.nop_routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001430 "id" : 14,
Charles Chancd03f072018-08-31 17:46:37 -07001431 "runtime_data" : [],
1432 "primitives" : []
1433 },
1434 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001435 "name" : "FabricIngress.acl.set_next_id_acl",
1436 "id" : 15,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001437 "runtime_data" : [
1438 {
1439 "name" : "next_id",
1440 "bitwidth" : 32
1441 }
1442 ],
1443 "primitives" : [
1444 {
Esin Karaman971fb7f2017-12-28 13:44:52 +00001445 "op" : "assign",
1446 "parameters" : [
1447 {
1448 "type" : "field",
1449 "value" : ["scalars", "fabric_metadata_t.next_id"]
1450 },
1451 {
1452 "type" : "runtime_data",
1453 "value" : 0
1454 }
1455 ],
1456 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001457 "filename" : "include/control/acl.p4",
1458 "line" : 33,
Yi Tseng47eac892018-07-11 02:17:04 +08001459 "column" : 8,
1460 "source_fragment" : "fabric_metadata.next_id = next_id"
1461 }
1462 }
1463 ]
1464 },
1465 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001466 "name" : "FabricIngress.acl.punt_to_cpu",
1467 "id" : 16,
Yi Tsengbe342052017-11-03 10:21:23 -07001468 "runtime_data" : [],
1469 "primitives" : [
1470 {
1471 "op" : "assign",
1472 "parameters" : [
1473 {
1474 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001475 "value" : ["standard_metadata", "egress_spec"]
1476 },
1477 {
1478 "type" : "hexstr",
1479 "value" : "0x00ff"
1480 }
1481 ],
1482 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001483 "filename" : "include/control/acl.p4",
1484 "line" : 39,
Carmelo Casconeb531b682018-01-30 17:55:56 -08001485 "column" : 8,
1486 "source_fragment" : "standard_metadata.egress_spec = 255"
Yi Tsengbe342052017-11-03 10:21:23 -07001487 }
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001488 },
1489 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001490 "op" : "assign",
1491 "parameters" : [
1492 {
1493 "type" : "field",
1494 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1495 },
1496 {
1497 "type" : "expression",
1498 "value" : {
1499 "type" : "expression",
1500 "value" : {
1501 "op" : "b2d",
1502 "left" : null,
1503 "right" : {
1504 "type" : "bool",
1505 "value" : true
1506 }
1507 }
1508 }
1509 }
1510 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001511 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001512 "filename" : "include/control/acl.p4",
1513 "line" : 40,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001514 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001515 "source_fragment" : "fabric_metadata.skip_next = true"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001516 }
1517 }
1518 ]
1519 },
1520 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001521 "name" : "FabricIngress.acl.set_clone_session_id",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001522 "id" : 17,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001523 "runtime_data" : [
1524 {
1525 "name" : "clone_id",
1526 "bitwidth" : 32
1527 }
1528 ],
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001529 "primitives" : [
1530 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001531 "op" : "clone_ingress_pkt_to_egress",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001532 "parameters" : [
1533 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001534 "type" : "runtime_data",
1535 "value" : 0
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001536 },
1537 {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07001538 "type" : "hexstr",
1539 "value" : "0x1"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001540 }
1541 ],
1542 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001543 "filename" : "include/control/acl.p4",
1544 "line" : 46,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001545 "column" : 8,
Daniele Moro3b7a21b2019-06-25 17:33:40 -07001546 "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001547 }
Yi Tsengbe342052017-11-03 10:21:23 -07001548 }
1549 ]
1550 },
1551 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001552 "name" : "FabricIngress.acl.drop",
1553 "id" : 18,
Yi Tseng47eac892018-07-11 02:17:04 +08001554 "runtime_data" : [],
1555 "primitives" : [
1556 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001557 "op" : "mark_to_drop",
1558 "parameters" : [
1559 {
1560 "type" : "header",
1561 "value" : "standard_metadata"
1562 }
1563 ],
Yi Tseng47eac892018-07-11 02:17:04 +08001564 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001565 "filename" : "include/control/acl.p4",
1566 "line" : 51,
Yi Tseng47eac892018-07-11 02:17:04 +08001567 "column" : 8,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07001568 "source_fragment" : "mark_to_drop(standard_metadata)"
Yi Tseng47eac892018-07-11 02:17:04 +08001569 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001570 },
1571 {
1572 "op" : "assign",
1573 "parameters" : [
1574 {
1575 "type" : "field",
1576 "value" : ["scalars", "fabric_metadata_t.skip_next"]
1577 },
1578 {
1579 "type" : "expression",
1580 "value" : {
1581 "type" : "expression",
1582 "value" : {
1583 "op" : "b2d",
1584 "left" : null,
1585 "right" : {
1586 "type" : "bool",
1587 "value" : true
1588 }
1589 }
1590 }
1591 }
1592 ],
1593 "source_info" : {
1594 "filename" : "include/control/acl.p4",
1595 "line" : 52,
1596 "column" : 8,
1597 "source_fragment" : "fabric_metadata.skip_next = true"
1598 }
Yi Tseng47eac892018-07-11 02:17:04 +08001599 }
1600 ]
1601 },
1602 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001603 "name" : "FabricIngress.acl.nop_acl",
1604 "id" : 19,
Charles Chancf696e52018-08-16 16:25:13 -07001605 "runtime_data" : [],
1606 "primitives" : []
1607 },
1608 {
Yi Tseng47eac892018-07-11 02:17:04 +08001609 "name" : "FabricIngress.next.set_vlan",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001610 "id" : 20,
1611 "runtime_data" : [
1612 {
1613 "name" : "vlan_id",
1614 "bitwidth" : 12
1615 }
1616 ],
1617 "primitives" : [
1618 {
1619 "op" : "assign",
1620 "parameters" : [
1621 {
1622 "type" : "field",
1623 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
1624 },
1625 {
1626 "type" : "runtime_data",
1627 "value" : 0
1628 }
1629 ],
1630 "source_info" : {
1631 "filename" : "include/control/next.p4",
1632 "line" : 70,
1633 "column" : 8,
1634 "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
1635 }
1636 }
1637 ]
1638 },
1639 {
1640 "name" : "FabricIngress.next.output_xconnect",
Charles Chancd03f072018-08-31 17:46:37 -07001641 "id" : 21,
Yi Tseng47eac892018-07-11 02:17:04 +08001642 "runtime_data" : [
1643 {
Yi Tsengbe342052017-11-03 10:21:23 -07001644 "name" : "port_num",
1645 "bitwidth" : 9
1646 }
1647 ],
1648 "primitives" : [
1649 {
1650 "op" : "assign",
1651 "parameters" : [
1652 {
1653 "type" : "field",
1654 "value" : ["standard_metadata", "egress_spec"]
1655 },
1656 {
1657 "type" : "runtime_data",
1658 "value" : 0
1659 }
1660 ],
1661 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001662 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001663 "line" : 31,
1664 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001665 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1666 }
Daniele Moro7c3a0022019-07-12 13:38:34 -07001667 },
1668 {
1669 "op" : "assign",
1670 "parameters" : [
1671 {
1672 "type" : "field",
1673 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
1674 },
1675 {
1676 "type" : "hexstr",
1677 "value" : "0x8100"
1678 }
1679 ],
1680 "source_info" : {
1681 "filename" : "include/control/../define.p4",
1682 "line" : 107,
1683 "column" : 31,
1684 "source_fragment" : "0x8100; ..."
1685 }
Yi Tseng47eac892018-07-11 02:17:04 +08001686 }
1687 ]
1688 },
1689 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001690 "name" : "FabricIngress.next.set_next_id_xconnect",
1691 "id" : 22,
1692 "runtime_data" : [
1693 {
1694 "name" : "next_id",
1695 "bitwidth" : 32
1696 }
1697 ],
1698 "primitives" : [
1699 {
1700 "op" : "assign",
1701 "parameters" : [
1702 {
1703 "type" : "field",
1704 "value" : ["scalars", "fabric_metadata_t.next_id"]
1705 },
1706 {
1707 "type" : "runtime_data",
1708 "value" : 0
1709 }
1710 ],
1711 "source_info" : {
1712 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07001713 "line" : 112,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001714 "column" : 8,
1715 "source_fragment" : "fabric_metadata.next_id = next_id"
1716 }
1717 }
1718 ]
1719 },
1720 {
1721 "name" : "FabricIngress.next.output_hashed",
1722 "id" : 23,
1723 "runtime_data" : [
1724 {
1725 "name" : "port_num",
1726 "bitwidth" : 9
1727 }
1728 ],
1729 "primitives" : [
1730 {
1731 "op" : "assign",
1732 "parameters" : [
1733 {
1734 "type" : "field",
1735 "value" : ["standard_metadata", "egress_spec"]
1736 },
1737 {
1738 "type" : "runtime_data",
1739 "value" : 0
1740 }
1741 ],
1742 "source_info" : {
1743 "filename" : "include/control/next.p4",
1744 "line" : 31,
1745 "column" : 5,
1746 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1747 }
1748 }
1749 ]
1750 },
1751 {
1752 "name" : "FabricIngress.next.routing_hashed",
Charles Chancd03f072018-08-31 17:46:37 -07001753 "id" : 24,
Yi Tseng47eac892018-07-11 02:17:04 +08001754 "runtime_data" : [
1755 {
1756 "name" : "port_num",
1757 "bitwidth" : 9
1758 },
1759 {
1760 "name" : "smac",
1761 "bitwidth" : 48
1762 },
1763 {
1764 "name" : "dmac",
1765 "bitwidth" : 48
1766 }
1767 ],
1768 "primitives" : [
1769 {
1770 "op" : "assign",
1771 "parameters" : [
1772 {
1773 "type" : "field",
1774 "value" : ["ethernet", "src_addr"]
1775 },
1776 {
1777 "type" : "runtime_data",
1778 "value" : 1
1779 }
1780 ],
1781 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001782 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001783 "line" : 36,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001784 "column" : 8,
Yi Tseng47eac892018-07-11 02:17:04 +08001785 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1786 }
1787 },
1788 {
1789 "op" : "assign",
1790 "parameters" : [
1791 {
1792 "type" : "field",
1793 "value" : ["ethernet", "dst_addr"]
1794 },
1795 {
1796 "type" : "runtime_data",
1797 "value" : 2
1798 }
1799 ],
1800 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001801 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001802 "line" : 41,
1803 "column" : 8,
1804 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1805 }
1806 },
1807 {
1808 "op" : "assign",
1809 "parameters" : [
1810 {
1811 "type" : "field",
1812 "value" : ["standard_metadata", "egress_spec"]
1813 },
1814 {
1815 "type" : "runtime_data",
1816 "value" : 0
1817 }
1818 ],
1819 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001820 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001821 "line" : 31,
1822 "column" : 5,
Yi Tseng47eac892018-07-11 02:17:04 +08001823 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001824 }
1825 }
1826 ]
1827 },
1828 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001829 "name" : "FabricIngress.next.mpls_routing_hashed",
Carmelo Casconef645e842018-07-16 18:31:52 +02001830 "id" : 25,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001831 "runtime_data" : [
1832 {
1833 "name" : "port_num",
1834 "bitwidth" : 9
1835 },
1836 {
1837 "name" : "smac",
1838 "bitwidth" : 48
1839 },
1840 {
1841 "name" : "dmac",
1842 "bitwidth" : 48
Yi Tseng20f9e7b2018-05-24 23:27:39 +08001843 },
1844 {
Carmelo Cascone5bdffe72018-02-04 14:53:54 -08001845 "name" : "label",
1846 "bitwidth" : 20
Yi Tsengbe342052017-11-03 10:21:23 -07001847 }
1848 ],
1849 "primitives" : [
1850 {
1851 "op" : "assign",
1852 "parameters" : [
1853 {
1854 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001855 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
1856 },
1857 {
1858 "type" : "runtime_data",
1859 "value" : 3
1860 }
1861 ],
1862 "source_info" : {
1863 "filename" : "include/control/next.p4",
1864 "line" : 46,
1865 "column" : 8,
1866 "source_fragment" : "fabric_metadata.mpls_label = label; ..."
1867 }
1868 },
1869 {
1870 "op" : "assign",
1871 "parameters" : [
1872 {
1873 "type" : "field",
Yi Tsengbe342052017-11-03 10:21:23 -07001874 "value" : ["ethernet", "src_addr"]
1875 },
1876 {
1877 "type" : "runtime_data",
1878 "value" : 1
1879 }
1880 ],
1881 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001882 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001883 "line" : 36,
Yi Tsengbe342052017-11-03 10:21:23 -07001884 "column" : 8,
1885 "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
1886 }
1887 },
1888 {
1889 "op" : "assign",
1890 "parameters" : [
1891 {
1892 "type" : "field",
1893 "value" : ["ethernet", "dst_addr"]
1894 },
1895 {
1896 "type" : "runtime_data",
1897 "value" : 2
1898 }
1899 ],
1900 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001901 "filename" : "include/control/next.p4",
Yi Tseng47eac892018-07-11 02:17:04 +08001902 "line" : 41,
Yi Tsengbe342052017-11-03 10:21:23 -07001903 "column" : 8,
1904 "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
1905 }
1906 },
1907 {
1908 "op" : "assign",
1909 "parameters" : [
1910 {
1911 "type" : "field",
1912 "value" : ["standard_metadata", "egress_spec"]
1913 },
1914 {
1915 "type" : "runtime_data",
1916 "value" : 0
1917 }
1918 ],
1919 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001920 "filename" : "include/control/next.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001921 "line" : 31,
1922 "column" : 5,
Yi Tsengbe342052017-11-03 10:21:23 -07001923 "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
1924 }
Yi Tsengbe342052017-11-03 10:21:23 -07001925 }
1926 ]
1927 },
1928 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001929 "name" : "FabricIngress.next.set_mcast_group_id",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001930 "id" : 26,
1931 "runtime_data" : [
1932 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001933 "name" : "group_id",
Esin Karaman971fb7f2017-12-28 13:44:52 +00001934 "bitwidth" : 16
1935 }
1936 ],
1937 "primitives" : [
1938 {
1939 "op" : "assign",
1940 "parameters" : [
1941 {
1942 "type" : "field",
1943 "value" : ["standard_metadata", "mcast_grp"]
1944 },
1945 {
1946 "type" : "runtime_data",
1947 "value" : 0
1948 }
1949 ],
1950 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02001951 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07001952 "line" : 225,
Esin Karaman971fb7f2017-12-28 13:44:52 +00001953 "column" : 8,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001954 "source_fragment" : "standard_metadata.mcast_grp = group_id"
Esin Karaman971fb7f2017-12-28 13:44:52 +00001955 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02001956 },
1957 {
1958 "op" : "assign",
1959 "parameters" : [
1960 {
1961 "type" : "field",
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001962 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02001963 },
1964 {
1965 "type" : "expression",
1966 "value" : {
1967 "type" : "expression",
1968 "value" : {
1969 "op" : "b2d",
1970 "left" : null,
1971 "right" : {
1972 "type" : "bool",
1973 "value" : true
1974 }
1975 }
1976 }
1977 }
1978 ],
1979 "source_info" : {
1980 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07001981 "line" : 226,
Carmelo Casconea5400af2018-07-17 22:11:54 +02001982 "column" : 8,
Carmelo Cascone1e8843f2018-07-19 19:01:12 +02001983 "source_fragment" : "fabric_metadata.is_multicast = true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02001984 }
Esin Karaman971fb7f2017-12-28 13:44:52 +00001985 }
1986 ]
1987 },
1988 {
1989 "name" : "act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08001990 "id" : 27,
Yi Tsengbe342052017-11-03 10:21:23 -07001991 "runtime_data" : [],
1992 "primitives" : [
1993 {
1994 "op" : "assign",
1995 "parameters" : [
1996 {
1997 "type" : "field",
1998 "value" : ["standard_metadata", "egress_spec"]
1999 },
2000 {
2001 "type" : "field",
2002 "value" : ["packet_out", "egress_port"]
2003 }
2004 ],
2005 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002006 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002007 "line" : 25,
Yi Tsengbe342052017-11-03 10:21:23 -07002008 "column" : 12,
2009 "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
2010 }
Yi Tseng1d842672017-11-28 16:06:52 -08002011 },
2012 {
2013 "op" : "remove_header",
2014 "parameters" : [
2015 {
2016 "type" : "header",
2017 "value" : "packet_out"
2018 }
2019 ],
2020 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002021 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002022 "line" : 26,
Yi Tseng1d842672017-11-28 16:06:52 -08002023 "column" : 12,
2024 "source_fragment" : "hdr.packet_out.setInvalid()"
2025 }
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07002026 },
2027 {
2028 "op" : "assign",
2029 "parameters" : [
2030 {
2031 "type" : "field",
2032 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
2033 },
2034 {
2035 "type" : "expression",
2036 "value" : {
2037 "type" : "expression",
2038 "value" : {
2039 "op" : "b2d",
2040 "left" : null,
2041 "right" : {
2042 "type" : "bool",
2043 "value" : true
2044 }
2045 }
2046 }
2047 }
2048 ],
2049 "source_info" : {
2050 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002051 "line" : 27,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07002052 "column" : 12,
2053 "source_fragment" : "fabric_metadata.is_controller_packet_out = true"
2054 }
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002055 },
2056 {
2057 "op" : "exit",
2058 "parameters" : [],
2059 "source_info" : {
2060 "filename" : "include/control/packetio.p4",
2061 "line" : 29,
2062 "column" : 12,
2063 "source_fragment" : "exit"
2064 }
Yi Tsengbe342052017-11-03 10:21:23 -07002065 }
2066 ]
2067 },
2068 {
2069 "name" : "act_0",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002070 "id" : 28,
Yi Tsengbe342052017-11-03 10:21:23 -07002071 "runtime_data" : [],
2072 "primitives" : [
2073 {
2074 "op" : "assign",
2075 "parameters" : [
2076 {
2077 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002078 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2079 },
2080 {
2081 "type" : "field",
2082 "value" : ["vlan_tag", "vlan_id"]
2083 }
2084 ],
2085 "source_info" : {
2086 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002087 "line" : 110,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002088 "column" : 12,
2089 "source_fragment" : "fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id"
2090 }
2091 },
2092 {
2093 "op" : "assign",
2094 "parameters" : [
2095 {
2096 "type" : "field",
2097 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2098 },
2099 {
2100 "type" : "field",
2101 "value" : ["vlan_tag", "pri"]
2102 }
2103 ],
2104 "source_info" : {
2105 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002106 "line" : 111,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002107 "column" : 12,
2108 "source_fragment" : "fabric_metadata.vlan_pri = hdr.vlan_tag.pri"
2109 }
2110 },
2111 {
2112 "op" : "assign",
2113 "parameters" : [
2114 {
2115 "type" : "field",
2116 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2117 },
2118 {
2119 "type" : "field",
2120 "value" : ["vlan_tag", "cfi"]
2121 }
2122 ],
2123 "source_info" : {
2124 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002125 "line" : 112,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002126 "column" : 12,
2127 "source_fragment" : "fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi"
2128 }
Yi Tseng1d842672017-11-28 16:06:52 -08002129 }
2130 ]
2131 },
2132 {
2133 "name" : "act_1",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002134 "id" : 29,
Yi Tseng1d842672017-11-28 16:06:52 -08002135 "runtime_data" : [],
2136 "primitives" : [
2137 {
2138 "op" : "assign",
2139 "parameters" : [
2140 {
2141 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002142 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2143 },
2144 {
2145 "type" : "hexstr",
2146 "value" : "0x41"
2147 }
2148 ],
2149 "source_info" : {
2150 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002151 "line" : 126,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002152 "column" : 12,
2153 "source_fragment" : "fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1"
2154 }
2155 }
2156 ]
2157 },
2158 {
2159 "name" : "act_2",
2160 "id" : 30,
2161 "runtime_data" : [],
2162 "primitives" : [
2163 {
2164 "op" : "assign",
2165 "parameters" : [
2166 {
2167 "type" : "field",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002168 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
2169 },
2170 {
2171 "type" : "hexstr",
2172 "value" : "0x8847"
2173 }
2174 ],
2175 "source_info" : {
2176 "filename" : "include/control/../define.p4",
2177 "line" : 108,
2178 "column" : 31,
2179 "source_fragment" : "0x8847; ..."
2180 }
2181 }
2182 ]
2183 },
2184 {
2185 "name" : "act_3",
2186 "id" : 31,
2187 "runtime_data" : [],
2188 "primitives" : [
2189 {
2190 "op" : "assign",
2191 "parameters" : [
2192 {
2193 "type" : "field",
2194 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
2195 },
2196 {
2197 "type" : "field",
2198 "value" : ["inner_vlan_tag", "eth_type"]
2199 }
2200 ],
2201 "source_info" : {
2202 "filename" : "include/control/filtering.p4",
2203 "line" : 136,
2204 "column" : 20,
2205 "source_fragment" : "fabric_metadata.last_eth_type = hdr.inner_vlan_tag.eth_type"
2206 }
2207 }
2208 ]
2209 },
2210 {
2211 "name" : "act_4",
2212 "id" : 32,
2213 "runtime_data" : [],
2214 "primitives" : [
2215 {
2216 "op" : "assign",
2217 "parameters" : [
2218 {
2219 "type" : "field",
2220 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
2221 },
2222 {
2223 "type" : "field",
2224 "value" : ["vlan_tag", "eth_type"]
2225 }
2226 ],
2227 "source_info" : {
2228 "filename" : "include/control/filtering.p4",
2229 "line" : 139,
2230 "column" : 20,
2231 "source_fragment" : "fabric_metadata.last_eth_type = hdr.vlan_tag.eth_type"
2232 }
2233 }
2234 ]
2235 },
2236 {
2237 "name" : "act_5",
2238 "id" : 33,
2239 "runtime_data" : [],
2240 "primitives" : [
2241 {
2242 "op" : "assign",
2243 "parameters" : [
2244 {
2245 "type" : "field",
2246 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
2247 },
2248 {
2249 "type" : "field",
2250 "value" : ["ethernet", "eth_type"]
2251 }
2252 ],
2253 "source_info" : {
2254 "filename" : "include/control/filtering.p4",
2255 "line" : 141,
2256 "column" : 16,
2257 "source_fragment" : "fabric_metadata.last_eth_type = hdr.ethernet.eth_type"
2258 }
2259 }
2260 ]
2261 },
2262 {
2263 "name" : "act_6",
2264 "id" : 34,
2265 "runtime_data" : [],
2266 "primitives" : [
2267 {
2268 "op" : "assign",
2269 "parameters" : [
2270 {
2271 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002272 "value" : ["scalars", "tmp"]
Yi Tseng1d842672017-11-28 16:06:52 -08002273 },
2274 {
2275 "type" : "expression",
2276 "value" : {
2277 "type" : "expression",
2278 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002279 "op" : "&",
2280 "left" : {
2281 "type" : "field",
2282 "value" : ["standard_metadata", "egress_spec"]
2283 },
Yi Tseng1d842672017-11-28 16:06:52 -08002284 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002285 "type" : "hexstr",
2286 "value" : "0xffffffff"
Yi Tseng1d842672017-11-28 16:06:52 -08002287 }
2288 }
2289 }
2290 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002291 ],
2292 "source_info" : {
2293 "filename" : "include/control/port_counter.p4",
2294 "line" : 31,
2295 "column" : 38,
2296 "source_fragment" : "(bit<32>)standard_metadata.egress_spec"
2297 }
2298 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002299 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002300 "op" : "count",
Carmelo Casconea5400af2018-07-17 22:11:54 +02002301 "parameters" : [
2302 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002303 "type" : "counter_array",
2304 "value" : "FabricIngress.port_counters_control.egress_port_counter"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002305 },
2306 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002307 "type" : "field",
2308 "value" : ["scalars", "tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002309 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002310 ],
2311 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002312 "filename" : "include/control/port_counter.p4",
2313 "line" : 31,
2314 "column" : 12,
2315 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002316 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002317 }
2318 ]
2319 },
2320 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002321 "name" : "act_7",
2322 "id" : 35,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002323 "runtime_data" : [],
2324 "primitives" : [
2325 {
2326 "op" : "assign",
2327 "parameters" : [
2328 {
2329 "type" : "field",
2330 "value" : ["scalars", "tmp_1"]
2331 },
2332 {
2333 "type" : "expression",
2334 "value" : {
2335 "type" : "expression",
2336 "value" : {
2337 "op" : "&",
2338 "left" : {
2339 "type" : "field",
2340 "value" : ["standard_metadata", "ingress_port"]
2341 },
2342 "right" : {
2343 "type" : "hexstr",
2344 "value" : "0xffffffff"
2345 }
2346 }
2347 }
2348 }
2349 ],
2350 "source_info" : {
2351 "filename" : "include/control/port_counter.p4",
2352 "line" : 34,
2353 "column" : 39,
2354 "source_fragment" : "(bit<32>)standard_metadata.ingress_port"
2355 }
2356 },
2357 {
2358 "op" : "count",
2359 "parameters" : [
2360 {
2361 "type" : "counter_array",
2362 "value" : "FabricIngress.port_counters_control.ingress_port_counter"
2363 },
2364 {
2365 "type" : "field",
2366 "value" : ["scalars", "tmp_1"]
2367 }
2368 ],
2369 "source_info" : {
2370 "filename" : "include/control/port_counter.p4",
2371 "line" : 34,
2372 "column" : 12,
2373 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
2374 }
2375 }
2376 ]
2377 },
2378 {
2379 "name" : "nop",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002380 "id" : 36,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002381 "runtime_data" : [],
2382 "primitives" : []
2383 },
2384 {
2385 "name" : "FabricEgress.egress_next.pop_mpls_if_present",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002386 "id" : 37,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002387 "runtime_data" : [],
2388 "primitives" : [
2389 {
2390 "op" : "remove_header",
2391 "parameters" : [
2392 {
2393 "type" : "header",
2394 "value" : "mpls"
2395 }
2396 ],
2397 "source_info" : {
2398 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002399 "line" : 264,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002400 "column" : 8,
2401 "source_fragment" : "hdr.mpls.setInvalid()"
2402 }
2403 },
2404 {
2405 "op" : "assign",
2406 "parameters" : [
2407 {
2408 "type" : "field",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002409 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002410 },
2411 {
2412 "type" : "field",
2413 "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
2414 }
2415 ],
2416 "source_info" : {
2417 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002418 "line" : 266,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002419 "column" : 8,
Daniele Moro7c3a0022019-07-12 13:38:34 -07002420 "source_fragment" : "fabric_metadata.last_eth_type = fabric_metadata.ip_eth_type"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002421 }
2422 }
2423 ]
2424 },
2425 {
2426 "name" : "FabricEgress.egress_next.set_mpls",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002427 "id" : 38,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002428 "runtime_data" : [],
2429 "primitives" : [
2430 {
2431 "op" : "add_header",
2432 "parameters" : [
2433 {
2434 "type" : "header",
2435 "value" : "mpls"
2436 }
2437 ],
2438 "source_info" : {
2439 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002440 "line" : 271,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002441 "column" : 8,
2442 "source_fragment" : "hdr.mpls.setValid()"
2443 }
2444 },
2445 {
2446 "op" : "assign",
2447 "parameters" : [
2448 {
2449 "type" : "field",
2450 "value" : ["mpls", "label"]
2451 },
2452 {
2453 "type" : "field",
2454 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
2455 }
2456 ],
2457 "source_info" : {
2458 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002459 "line" : 272,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002460 "column" : 8,
2461 "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label"
2462 }
2463 },
2464 {
2465 "op" : "assign",
2466 "parameters" : [
2467 {
2468 "type" : "field",
2469 "value" : ["mpls", "tc"]
2470 },
2471 {
2472 "type" : "hexstr",
2473 "value" : "0x00"
2474 }
2475 ],
2476 "source_info" : {
2477 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002478 "line" : 273,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002479 "column" : 8,
2480 "source_fragment" : "hdr.mpls.tc = 3w0"
2481 }
2482 },
2483 {
2484 "op" : "assign",
2485 "parameters" : [
2486 {
2487 "type" : "field",
2488 "value" : ["mpls", "bos"]
2489 },
2490 {
2491 "type" : "hexstr",
2492 "value" : "0x01"
2493 }
2494 ],
2495 "source_info" : {
2496 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002497 "line" : 274,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002498 "column" : 8,
2499 "source_fragment" : "hdr.mpls.bos = 1w1"
2500 }
2501 },
2502 {
2503 "op" : "assign",
2504 "parameters" : [
2505 {
2506 "type" : "field",
2507 "value" : ["mpls", "ttl"]
2508 },
2509 {
2510 "type" : "field",
2511 "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
2512 }
2513 ],
2514 "source_info" : {
2515 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002516 "line" : 275,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002517 "column" : 8,
2518 "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl"
2519 }
2520 },
2521 {
2522 "op" : "assign",
2523 "parameters" : [
2524 {
2525 "type" : "field",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002526 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002527 },
2528 {
2529 "type" : "hexstr",
2530 "value" : "0x8847"
2531 }
2532 ],
2533 "source_info" : {
2534 "filename" : "include/control/../define.p4",
2535 "line" : 108,
2536 "column" : 31,
2537 "source_fragment" : "0x8847; ..."
2538 }
2539 }
2540 ]
2541 },
2542 {
2543 "name" : "FabricEgress.egress_next.push_vlan",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002544 "id" : 39,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002545 "runtime_data" : [],
2546 "primitives" : [
2547 {
2548 "op" : "add_header",
2549 "parameters" : [
2550 {
2551 "type" : "header",
2552 "value" : "vlan_tag"
2553 }
2554 ],
2555 "source_info" : {
2556 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002557 "line" : 283,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002558 "column" : 8,
2559 "source_fragment" : "hdr.vlan_tag.setValid()"
2560 }
2561 },
2562 {
2563 "op" : "assign",
2564 "parameters" : [
2565 {
2566 "type" : "field",
2567 "value" : ["vlan_tag", "cfi"]
2568 },
2569 {
2570 "type" : "field",
2571 "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
2572 }
2573 ],
2574 "source_info" : {
2575 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002576 "line" : 284,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002577 "column" : 8,
2578 "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi"
2579 }
2580 },
2581 {
2582 "op" : "assign",
2583 "parameters" : [
2584 {
2585 "type" : "field",
2586 "value" : ["vlan_tag", "pri"]
2587 },
2588 {
2589 "type" : "field",
2590 "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
2591 }
2592 ],
2593 "source_info" : {
2594 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002595 "line" : 285,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002596 "column" : 8,
2597 "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri"
2598 }
2599 },
2600 {
2601 "op" : "assign",
2602 "parameters" : [
2603 {
2604 "type" : "field",
2605 "value" : ["vlan_tag", "eth_type"]
2606 },
2607 {
2608 "type" : "field",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002609 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002610 }
2611 ],
2612 "source_info" : {
2613 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002614 "line" : 286,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002615 "column" : 8,
Daniele Moro7c3a0022019-07-12 13:38:34 -07002616 "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002617 }
2618 },
2619 {
2620 "op" : "assign",
2621 "parameters" : [
2622 {
2623 "type" : "field",
2624 "value" : ["vlan_tag", "vlan_id"]
2625 },
2626 {
2627 "type" : "field",
2628 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
2629 }
2630 ],
2631 "source_info" : {
2632 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002633 "line" : 287,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002634 "column" : 8,
2635 "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id"
2636 }
2637 },
2638 {
2639 "op" : "assign",
2640 "parameters" : [
2641 {
2642 "type" : "field",
2643 "value" : ["ethernet", "eth_type"]
2644 },
2645 {
2646 "type" : "hexstr",
2647 "value" : "0x8100"
2648 }
2649 ],
2650 "source_info" : {
2651 "filename" : "include/control/../define.p4",
2652 "line" : 107,
2653 "column" : 31,
2654 "source_fragment" : "0x8100; ..."
2655 }
2656 }
2657 ]
2658 },
2659 {
2660 "name" : "FabricEgress.egress_next.pop_vlan",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002661 "id" : 40,
Yi Tseng1d842672017-11-28 16:06:52 -08002662 "runtime_data" : [],
2663 "primitives" : [
2664 {
2665 "op" : "assign",
2666 "parameters" : [
2667 {
2668 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002669 "value" : ["ethernet", "eth_type"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002670 },
2671 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002672 "type" : "field",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002673 "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002674 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002675 ],
2676 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002677 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002678 "line" : 312,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002679 "column" : 8,
Daniele Moro7c3a0022019-07-12 13:38:34 -07002680 "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.last_eth_type"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002681 }
2682 },
2683 {
2684 "op" : "remove_header",
2685 "parameters" : [
2686 {
2687 "type" : "header",
2688 "value" : "vlan_tag"
2689 }
2690 ],
2691 "source_info" : {
2692 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002693 "line" : 313,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002694 "column" : 8,
2695 "source_fragment" : "hdr.vlan_tag.setInvalid()"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002696 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002697 }
2698 ]
2699 },
2700 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002701 "name" : "act_8",
2702 "id" : 41,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002703 "runtime_data" : [],
2704 "primitives" : [
2705 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002706 "op" : "exit",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002707 "parameters" : [],
2708 "source_info" : {
2709 "filename" : "include/control/packetio.p4",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002710 "line" : 41,
2711 "column" : 12,
2712 "source_fragment" : "exit"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002713 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002714 }
2715 ]
2716 },
2717 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002718 "name" : "act_9",
2719 "id" : 42,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002720 "runtime_data" : [],
2721 "primitives" : [
2722 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002723 "op" : "add_header",
2724 "parameters" : [
2725 {
2726 "type" : "header",
2727 "value" : "packet_in"
2728 }
2729 ],
2730 "source_info" : {
2731 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002732 "line" : 44,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002733 "column" : 12,
2734 "source_fragment" : "hdr.packet_in.setValid()"
2735 }
2736 },
2737 {
Carmelo Casconea5400af2018-07-17 22:11:54 +02002738 "op" : "assign",
2739 "parameters" : [
2740 {
2741 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002742 "value" : ["packet_in", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002743 },
2744 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002745 "type" : "field",
2746 "value" : ["standard_metadata", "ingress_port"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002747 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002748 ],
2749 "source_info" : {
2750 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002751 "line" : 45,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002752 "column" : 12,
2753 "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
2754 }
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002755 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002756 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002757 "op" : "exit",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002758 "parameters" : [],
2759 "source_info" : {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002760 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07002761 "line" : 47,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002762 "column" : 12,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002763 "source_fragment" : "exit"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002764 }
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002765 }
2766 ]
2767 },
2768 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002769 "name" : "act_10",
2770 "id" : 43,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002771 "runtime_data" : [],
2772 "primitives" : [
2773 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002774 "op" : "mark_to_drop",
2775 "parameters" : [
2776 {
2777 "type" : "header",
2778 "value" : "standard_metadata"
2779 }
2780 ],
2781 "source_info" : {
2782 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002783 "line" : 334,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002784 "column" : 12,
2785 "source_fragment" : "mark_to_drop(standard_metadata)"
2786 }
2787 }
2788 ]
2789 },
2790 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002791 "name" : "act_11",
2792 "id" : 44,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002793 "runtime_data" : [],
2794 "primitives" : [
2795 {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002796 "op" : "assign",
2797 "parameters" : [
2798 {
2799 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002800 "value" : ["scalars", "egress_next_tmp"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002801 },
2802 {
2803 "type" : "expression",
2804 "value" : {
2805 "type" : "expression",
2806 "value" : {
2807 "op" : "b2d",
2808 "left" : null,
2809 "right" : {
2810 "type" : "bool",
2811 "value" : true
2812 }
2813 }
2814 }
2815 }
2816 ]
2817 }
2818 ]
2819 },
2820 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002821 "name" : "act_12",
2822 "id" : 45,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07002823 "runtime_data" : [],
2824 "primitives" : [
2825 {
2826 "op" : "assign",
2827 "parameters" : [
2828 {
2829 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002830 "value" : ["scalars", "egress_next_tmp"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002831 },
2832 {
2833 "type" : "expression",
2834 "value" : {
2835 "type" : "expression",
2836 "value" : {
2837 "op" : "b2d",
2838 "left" : null,
2839 "right" : {
2840 "type" : "bool",
2841 "value" : false
2842 }
2843 }
2844 }
2845 }
2846 ]
2847 }
2848 ]
2849 },
2850 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002851 "name" : "act_13",
2852 "id" : 46,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002853 "runtime_data" : [],
2854 "primitives" : [
2855 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002856 "op" : "mark_to_drop",
2857 "parameters" : [
2858 {
2859 "type" : "header",
2860 "value" : "standard_metadata"
2861 }
2862 ],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002863 "source_info" : {
2864 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002865 "line" : 367,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002866 "column" : 35,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002867 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002868 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002869 }
2870 ]
2871 },
2872 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002873 "name" : "act_14",
2874 "id" : 47,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002875 "runtime_data" : [],
2876 "primitives" : [
2877 {
2878 "op" : "assign",
2879 "parameters" : [
2880 {
2881 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002882 "value" : ["mpls", "ttl"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02002883 },
2884 {
2885 "type" : "expression",
2886 "value" : {
2887 "type" : "expression",
2888 "value" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002889 "op" : "&",
2890 "left" : {
2891 "type" : "expression",
2892 "value" : {
2893 "op" : "+",
2894 "left" : {
2895 "type" : "field",
2896 "value" : ["mpls", "ttl"]
2897 },
2898 "right" : {
2899 "type" : "hexstr",
2900 "value" : "0xff"
2901 }
2902 }
2903 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02002904 "right" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002905 "type" : "hexstr",
2906 "value" : "0xff"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002907 }
2908 }
2909 }
2910 }
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002911 ],
2912 "source_info" : {
2913 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002914 "line" : 366,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002915 "column" : 12,
2916 "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
2917 }
Carmelo Casconea5400af2018-07-17 22:11:54 +02002918 }
2919 ]
2920 },
2921 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002922 "name" : "act_15",
2923 "id" : 48,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002924 "runtime_data" : [],
2925 "primitives" : [
2926 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002927 "op" : "mark_to_drop",
2928 "parameters" : [
2929 {
2930 "type" : "header",
2931 "value" : "standard_metadata"
2932 }
2933 ],
Carmelo Casconea5400af2018-07-17 22:11:54 +02002934 "source_info" : {
2935 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002936 "line" : 371,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08002937 "column" : 39,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07002938 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Casconea5400af2018-07-17 22:11:54 +02002939 }
2940 }
2941 ]
2942 },
2943 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07002944 "name" : "act_16",
2945 "id" : 49,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002946 "runtime_data" : [],
2947 "primitives" : [
2948 {
2949 "op" : "assign",
2950 "parameters" : [
2951 {
2952 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08002953 "value" : ["ipv4", "ttl"]
2954 },
2955 {
2956 "type" : "expression",
2957 "value" : {
2958 "type" : "expression",
2959 "value" : {
2960 "op" : "&",
2961 "left" : {
2962 "type" : "expression",
2963 "value" : {
2964 "op" : "+",
2965 "left" : {
2966 "type" : "field",
2967 "value" : ["ipv4", "ttl"]
2968 },
2969 "right" : {
2970 "type" : "hexstr",
2971 "value" : "0xff"
2972 }
2973 }
2974 },
2975 "right" : {
2976 "type" : "hexstr",
2977 "value" : "0xff"
2978 }
2979 }
2980 }
2981 }
2982 ],
2983 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02002984 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07002985 "line" : 370,
Carmelo Casconea5400af2018-07-17 22:11:54 +02002986 "column" : 16,
Yi Tseng1d842672017-11-28 16:06:52 -08002987 "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
2988 }
2989 }
2990 ]
Yi Tsengbe342052017-11-03 10:21:23 -07002991 }
2992 ],
2993 "pipelines" : [
2994 {
2995 "name" : "ingress",
2996 "id" : 0,
2997 "source_info" : {
2998 "filename" : "fabric.p4",
Carmelo Cascone4d8785b2019-05-31 17:11:26 -07002999 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07003000 "column" : 8,
3001 "source_fragment" : "FabricIngress"
3002 },
3003 "init_table" : "node_2",
3004 "tables" : [
3005 {
3006 "name" : "tbl_act",
3007 "id" : 0,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003008 "source_info" : {
3009 "filename" : "include/control/packetio.p4",
3010 "line" : 25,
3011 "column" : 42,
3012 "source_fragment" : "= hdr.packet_out.egress_port; ..."
3013 },
Yi Tsengbe342052017-11-03 10:21:23 -07003014 "key" : [],
3015 "match_type" : "exact",
3016 "type" : "simple",
3017 "max_size" : 1024,
3018 "with_counters" : false,
3019 "support_timeout" : false,
3020 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003021 "action_ids" : [27],
Yi Tsengbe342052017-11-03 10:21:23 -07003022 "actions" : ["act"],
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003023 "base_default_next" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07003024 "next_tables" : {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07003025 "act" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07003026 },
3027 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003028 "action_id" : 27,
3029 "action_const" : true,
3030 "action_data" : [],
3031 "action_entry_const" : true
3032 }
3033 },
3034 {
3035 "name" : "tbl_act_0",
3036 "id" : 1,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003037 "source_info" : {
3038 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003039 "line" : 110,
3040 "column" : 36,
3041 "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
Carmelo Cascone3032b872019-04-13 01:23:54 -07003042 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003043 "key" : [],
3044 "match_type" : "exact",
3045 "type" : "simple",
3046 "max_size" : 1024,
3047 "with_counters" : false,
3048 "support_timeout" : false,
3049 "direct_meters" : null,
3050 "action_ids" : [28],
3051 "actions" : ["act_0"],
3052 "base_default_next" : "node_6",
3053 "next_tables" : {
3054 "act_0" : "node_6"
3055 },
3056 "default_entry" : {
3057 "action_id" : 28,
3058 "action_const" : true,
3059 "action_data" : [],
3060 "action_entry_const" : true
3061 }
3062 },
3063 {
3064 "name" : "tbl_act_1",
3065 "id" : 2,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003066 "source_info" : {
3067 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003068 "line" : 126,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003069 "column" : 37,
3070 "source_fragment" : "="
3071 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003072 "key" : [],
3073 "match_type" : "exact",
3074 "type" : "simple",
3075 "max_size" : 1024,
3076 "with_counters" : false,
3077 "support_timeout" : false,
3078 "direct_meters" : null,
3079 "action_ids" : [29],
3080 "actions" : ["act_1"],
Daniele Moro7c3a0022019-07-12 13:38:34 -07003081 "base_default_next" : "node_8",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003082 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003083 "act_1" : "node_8"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003084 },
3085 "default_entry" : {
3086 "action_id" : 29,
Yi Tsengbe342052017-11-03 10:21:23 -07003087 "action_const" : true,
3088 "action_data" : [],
3089 "action_entry_const" : true
3090 }
3091 },
3092 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003093 "name" : "tbl_act_2",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003094 "id" : 3,
Yi Tsengbe342052017-11-03 10:21:23 -07003095 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003096 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003097 "line" : 131,
3098 "column" : 42,
3099 "source_fragment" : "="
3100 },
3101 "key" : [],
3102 "match_type" : "exact",
3103 "type" : "simple",
3104 "max_size" : 1024,
3105 "with_counters" : false,
3106 "support_timeout" : false,
3107 "direct_meters" : null,
3108 "action_ids" : [30],
3109 "actions" : ["act_2"],
3110 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
3111 "next_tables" : {
3112 "act_2" : "FabricIngress.filtering.ingress_port_vlan"
3113 },
3114 "default_entry" : {
3115 "action_id" : 30,
3116 "action_const" : true,
3117 "action_data" : [],
3118 "action_entry_const" : true
3119 }
3120 },
3121 {
3122 "name" : "tbl_act_3",
3123 "id" : 4,
3124 "source_info" : {
3125 "filename" : "include/control/filtering.p4",
3126 "line" : 136,
3127 "column" : 50,
3128 "source_fragment" : "="
3129 },
3130 "key" : [],
3131 "match_type" : "exact",
3132 "type" : "simple",
3133 "max_size" : 1024,
3134 "with_counters" : false,
3135 "support_timeout" : false,
3136 "direct_meters" : null,
3137 "action_ids" : [31],
3138 "actions" : ["act_3"],
3139 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
3140 "next_tables" : {
3141 "act_3" : "FabricIngress.filtering.ingress_port_vlan"
3142 },
3143 "default_entry" : {
3144 "action_id" : 31,
3145 "action_const" : true,
3146 "action_data" : [],
3147 "action_entry_const" : true
3148 }
3149 },
3150 {
3151 "name" : "tbl_act_4",
3152 "id" : 5,
3153 "source_info" : {
3154 "filename" : "include/control/filtering.p4",
3155 "line" : 139,
3156 "column" : 50,
3157 "source_fragment" : "="
3158 },
3159 "key" : [],
3160 "match_type" : "exact",
3161 "type" : "simple",
3162 "max_size" : 1024,
3163 "with_counters" : false,
3164 "support_timeout" : false,
3165 "direct_meters" : null,
3166 "action_ids" : [32],
3167 "actions" : ["act_4"],
3168 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
3169 "next_tables" : {
3170 "act_4" : "FabricIngress.filtering.ingress_port_vlan"
3171 },
3172 "default_entry" : {
3173 "action_id" : 32,
3174 "action_const" : true,
3175 "action_data" : [],
3176 "action_entry_const" : true
3177 }
3178 },
3179 {
3180 "name" : "tbl_act_5",
3181 "id" : 6,
3182 "source_info" : {
3183 "filename" : "include/control/filtering.p4",
3184 "line" : 141,
3185 "column" : 46,
3186 "source_fragment" : "="
3187 },
3188 "key" : [],
3189 "match_type" : "exact",
3190 "type" : "simple",
3191 "max_size" : 1024,
3192 "with_counters" : false,
3193 "support_timeout" : false,
3194 "direct_meters" : null,
3195 "action_ids" : [33],
3196 "actions" : ["act_5"],
3197 "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
3198 "next_tables" : {
3199 "act_5" : "FabricIngress.filtering.ingress_port_vlan"
3200 },
3201 "default_entry" : {
3202 "action_id" : 33,
3203 "action_const" : true,
3204 "action_data" : [],
3205 "action_entry_const" : true
3206 }
3207 },
3208 {
3209 "name" : "FabricIngress.filtering.ingress_port_vlan",
3210 "id" : 7,
3211 "source_info" : {
3212 "filename" : "include/control/filtering.p4",
3213 "line" : 53,
Yi Tsengbe342052017-11-03 10:21:23 -07003214 "column" : 10,
3215 "source_fragment" : "ingress_port_vlan"
3216 },
3217 "key" : [
3218 {
3219 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003220 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003221 "target" : ["standard_metadata", "ingress_port"],
3222 "mask" : null
3223 },
3224 {
3225 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003226 "name" : "vlan_is_valid",
Yi Tsengbe342052017-11-03 10:21:23 -07003227 "target" : ["vlan_tag", "$valid$"],
3228 "mask" : null
3229 },
3230 {
3231 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003232 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003233 "target" : ["vlan_tag", "vlan_id"],
3234 "mask" : null
Daniele Moro7c3a0022019-07-12 13:38:34 -07003235 },
3236 {
3237 "match_type" : "ternary",
3238 "name" : "inner_vlan_id",
3239 "target" : ["inner_vlan_tag", "vlan_id"],
3240 "mask" : null
Yi Tsengbe342052017-11-03 10:21:23 -07003241 }
3242 ],
3243 "match_type" : "ternary",
3244 "type" : "simple",
3245 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003246 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003247 "support_timeout" : false,
3248 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003249 "action_ids" : [7, 8, 9],
3250 "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"],
3251 "base_default_next" : "FabricIngress.filtering.fwd_classifier",
Yi Tsengbe342052017-11-03 10:21:23 -07003252 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003253 "FabricIngress.filtering.deny" : "FabricIngress.filtering.fwd_classifier",
3254 "FabricIngress.filtering.permit" : "FabricIngress.filtering.fwd_classifier",
3255 "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier"
Yi Tsengbe342052017-11-03 10:21:23 -07003256 },
3257 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003258 "action_id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003259 "action_const" : true,
3260 "action_data" : [],
3261 "action_entry_const" : true
3262 }
3263 },
3264 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003265 "name" : "FabricIngress.filtering.fwd_classifier",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003266 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07003267 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003268 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003269 "line" : 90,
Yi Tsengbe342052017-11-03 10:21:23 -07003270 "column" : 10,
3271 "source_fragment" : "fwd_classifier"
3272 },
3273 "key" : [
3274 {
3275 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003276 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003277 "target" : ["standard_metadata", "ingress_port"],
3278 "mask" : null
3279 },
3280 {
Charles Chan384aea22018-08-23 22:08:02 -07003281 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003282 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003283 "target" : ["ethernet", "dst_addr"],
3284 "mask" : null
3285 },
3286 {
3287 "match_type" : "exact",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003288 "name" : "is_ipv4",
3289 "target" : ["scalars", "fabric_metadata_t.is_ipv4"],
3290 "mask" : null
3291 },
3292 {
3293 "match_type" : "exact",
3294 "name" : "is_ipv6",
3295 "target" : ["scalars", "fabric_metadata_t.is_ipv6"],
3296 "mask" : null
3297 },
3298 {
3299 "match_type" : "exact",
3300 "name" : "is_mpls",
3301 "target" : ["scalars", "fabric_metadata_t.is_mpls"],
Yi Tsengbe342052017-11-03 10:21:23 -07003302 "mask" : null
3303 }
3304 ],
Charles Chan384aea22018-08-23 22:08:02 -07003305 "match_type" : "ternary",
Yi Tsengbe342052017-11-03 10:21:23 -07003306 "type" : "simple",
3307 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003308 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003309 "support_timeout" : false,
3310 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003311 "action_ids" : [10],
Yi Tseng27b9bc02018-04-12 14:52:40 +08003312 "actions" : ["FabricIngress.filtering.set_forwarding_type"],
Daniele Moro7c3a0022019-07-12 13:38:34 -07003313 "base_default_next" : "node_17",
Yi Tsengbe342052017-11-03 10:21:23 -07003314 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003315 "FabricIngress.filtering.set_forwarding_type" : "node_17"
Yi Tsengbe342052017-11-03 10:21:23 -07003316 },
3317 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003318 "action_id" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003319 "action_const" : true,
3320 "action_data" : ["0x0"],
3321 "action_entry_const" : true
3322 }
3323 },
3324 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003325 "name" : "FabricIngress.forwarding.bridging",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003326 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07003327 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003328 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003329 "line" : 46,
Yi Tsengbe342052017-11-03 10:21:23 -07003330 "column" : 10,
3331 "source_fragment" : "bridging"
3332 },
3333 "key" : [
3334 {
3335 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003336 "name" : "vlan_id",
3337 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tsengbe342052017-11-03 10:21:23 -07003338 "mask" : null
3339 },
3340 {
3341 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003342 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003343 "target" : ["ethernet", "dst_addr"],
3344 "mask" : null
3345 }
3346 ],
3347 "match_type" : "ternary",
3348 "type" : "simple",
3349 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003350 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003351 "support_timeout" : false,
3352 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003353 "action_ids" : [11, 0],
3354 "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
3355 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003356 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003357 "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
3358 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003359 },
3360 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003361 "action_id" : 0,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003362 "action_const" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003363 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003364 "action_entry_const" : true
Yi Tseng1d842672017-11-28 16:06:52 -08003365 }
3366 },
3367 {
Yi Tseng27b9bc02018-04-12 14:52:40 +08003368 "name" : "FabricIngress.forwarding.mpls",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003369 "id" : 10,
Yi Tseng1d842672017-11-28 16:06:52 -08003370 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003371 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003372 "line" : 71,
Yi Tseng1d842672017-11-28 16:06:52 -08003373 "column" : 10,
3374 "source_fragment" : "mpls"
3375 },
3376 "key" : [
3377 {
3378 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003379 "name" : "mpls_label",
3380 "target" : ["scalars", "fabric_metadata_t.mpls_label"],
Yi Tseng1d842672017-11-28 16:06:52 -08003381 "mask" : null
3382 }
3383 ],
3384 "match_type" : "exact",
3385 "type" : "simple",
3386 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003387 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003388 "support_timeout" : false,
3389 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003390 "action_ids" : [12, 1],
3391 "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
3392 "base_default_next" : "FabricIngress.acl.acl",
Yi Tseng1d842672017-11-28 16:06:52 -08003393 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003394 "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
3395 "nop" : "FabricIngress.acl.acl"
Yi Tseng1d842672017-11-28 16:06:52 -08003396 },
3397 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003398 "action_id" : 1,
Yi Tseng1d842672017-11-28 16:06:52 -08003399 "action_const" : true,
3400 "action_data" : [],
3401 "action_entry_const" : true
3402 }
3403 },
3404 {
Charles Chan384aea22018-08-23 22:08:02 -07003405 "name" : "FabricIngress.forwarding.routing_v4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003406 "id" : 11,
Yi Tseng1d842672017-11-28 16:06:52 -08003407 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003408 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003409 "line" : 101,
Yi Tseng1d842672017-11-28 16:06:52 -08003410 "column" : 10,
Charles Chan384aea22018-08-23 22:08:02 -07003411 "source_fragment" : "routing_v4"
Yi Tseng1d842672017-11-28 16:06:52 -08003412 },
3413 "key" : [
3414 {
3415 "match_type" : "lpm",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003416 "name" : "ipv4_dst",
Yi Tseng1d842672017-11-28 16:06:52 -08003417 "target" : ["ipv4", "dst_addr"],
3418 "mask" : null
3419 }
3420 ],
3421 "match_type" : "lpm",
3422 "type" : "simple",
3423 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003424 "with_counters" : true,
Yi Tseng1d842672017-11-28 16:06:52 -08003425 "support_timeout" : false,
3426 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003427 "action_ids" : [13, 14, 2],
3428 "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
3429 "base_default_next" : "FabricIngress.acl.acl",
Yi Tsengbe342052017-11-03 10:21:23 -07003430 "next_tables" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003431 "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
3432 "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
3433 "nop" : "FabricIngress.acl.acl"
Yi Tsengbe342052017-11-03 10:21:23 -07003434 },
3435 "default_entry" : {
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003436 "action_id" : 2,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003437 "action_const" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003438 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003439 "action_entry_const" : true
Yi Tsengbe342052017-11-03 10:21:23 -07003440 }
3441 },
3442 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003443 "name" : "FabricIngress.acl.acl",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003444 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003445 "source_info" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003446 "filename" : "include/control/acl.p4",
3447 "line" : 60,
Yi Tsengbe342052017-11-03 10:21:23 -07003448 "column" : 10,
Yi Tsengbe342052017-11-03 10:21:23 -07003449 "source_fragment" : "acl"
3450 },
3451 "key" : [
3452 {
3453 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003454 "name" : "ig_port",
Yi Tsengbe342052017-11-03 10:21:23 -07003455 "target" : ["standard_metadata", "ingress_port"],
3456 "mask" : null
3457 },
3458 {
3459 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003460 "name" : "ip_proto",
Yi Tsengbe342052017-11-03 10:21:23 -07003461 "target" : ["scalars", "fabric_metadata_t.ip_proto"],
3462 "mask" : null
3463 },
3464 {
3465 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003466 "name" : "l4_sport",
3467 "target" : ["scalars", "fabric_metadata_t.l4_sport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003468 "mask" : null
3469 },
3470 {
3471 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003472 "name" : "l4_dport",
3473 "target" : ["scalars", "fabric_metadata_t.l4_dport"],
Yi Tseng1d842672017-11-28 16:06:52 -08003474 "mask" : null
3475 },
3476 {
3477 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003478 "name" : "eth_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003479 "target" : ["ethernet", "dst_addr"],
3480 "mask" : null
3481 },
3482 {
3483 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003484 "name" : "eth_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003485 "target" : ["ethernet", "src_addr"],
3486 "mask" : null
3487 },
3488 {
3489 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003490 "name" : "vlan_id",
Yi Tsengbe342052017-11-03 10:21:23 -07003491 "target" : ["vlan_tag", "vlan_id"],
3492 "mask" : null
3493 },
3494 {
3495 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003496 "name" : "eth_type",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003497 "target" : ["scalars", "fabric_metadata_t.last_eth_type"],
Yi Tseng8235a1a2018-07-24 20:57:28 +08003498 "mask" : null
3499 },
3500 {
3501 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003502 "name" : "ipv4_src",
Yi Tsengbe342052017-11-03 10:21:23 -07003503 "target" : ["ipv4", "src_addr"],
3504 "mask" : null
3505 },
3506 {
3507 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003508 "name" : "ipv4_dst",
Yi Tsengbe342052017-11-03 10:21:23 -07003509 "target" : ["ipv4", "dst_addr"],
3510 "mask" : null
3511 },
3512 {
3513 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003514 "name" : "icmp_type",
Yi Tsengbe342052017-11-03 10:21:23 -07003515 "target" : ["icmp", "icmp_type"],
3516 "mask" : null
3517 },
3518 {
3519 "match_type" : "ternary",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003520 "name" : "icmp_code",
Yi Tsengbe342052017-11-03 10:21:23 -07003521 "target" : ["icmp", "icmp_code"],
3522 "mask" : null
3523 }
3524 ],
3525 "match_type" : "ternary",
3526 "type" : "simple",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003527 "max_size" : 1024,
Yi Tsengbd46d052018-01-22 17:18:16 -08003528 "with_counters" : true,
Yi Tsengbe342052017-11-03 10:21:23 -07003529 "support_timeout" : false,
3530 "direct_meters" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003531 "action_ids" : [15, 16, 17, 18, 19],
Daniele Moro01ca2ab2019-06-25 11:48:48 -07003532 "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 Moro7c3a0022019-07-12 13:38:34 -07003533 "base_default_next" : "node_25",
Yi Tsengbe342052017-11-03 10:21:23 -07003534 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003535 "FabricIngress.acl.set_next_id_acl" : "node_25",
3536 "FabricIngress.acl.punt_to_cpu" : "node_25",
3537 "FabricIngress.acl.set_clone_session_id" : "node_25",
3538 "FabricIngress.acl.drop" : "node_25",
3539 "FabricIngress.acl.nop_acl" : "node_25"
Yi Tsengbe342052017-11-03 10:21:23 -07003540 },
3541 "default_entry" : {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003542 "action_id" : 19,
Yi Tsengbe342052017-11-03 10:21:23 -07003543 "action_const" : true,
3544 "action_data" : [],
3545 "action_entry_const" : true
3546 }
3547 },
3548 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003549 "name" : "FabricIngress.next.xconnect",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003550 "id" : 13,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003551 "source_info" : {
3552 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003553 "line" : 116,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003554 "column" : 10,
3555 "source_fragment" : "xconnect"
3556 },
3557 "key" : [
3558 {
3559 "match_type" : "exact",
3560 "name" : "ig_port",
3561 "target" : ["standard_metadata", "ingress_port"],
3562 "mask" : null
3563 },
3564 {
3565 "match_type" : "exact",
3566 "name" : "next_id",
3567 "target" : ["scalars", "fabric_metadata_t.next_id"],
3568 "mask" : null
3569 }
3570 ],
3571 "match_type" : "exact",
3572 "type" : "simple",
3573 "max_size" : 1024,
3574 "with_counters" : true,
3575 "support_timeout" : false,
3576 "direct_meters" : null,
3577 "action_ids" : [21, 22, 4],
3578 "actions" : ["FabricIngress.next.output_xconnect", "FabricIngress.next.set_next_id_xconnect", "nop"],
3579 "base_default_next" : "FabricIngress.next.hashed",
3580 "next_tables" : {
3581 "FabricIngress.next.output_xconnect" : "FabricIngress.next.hashed",
3582 "FabricIngress.next.set_next_id_xconnect" : "FabricIngress.next.hashed",
3583 "nop" : "FabricIngress.next.hashed"
3584 },
3585 "default_entry" : {
3586 "action_id" : 4,
3587 "action_const" : true,
3588 "action_data" : [],
3589 "action_entry_const" : true
3590 }
3591 },
3592 {
3593 "name" : "FabricIngress.next.hashed",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003594 "id" : 14,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003595 "source_info" : {
3596 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003597 "line" : 196,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003598 "column" : 10,
3599 "source_fragment" : "hashed"
3600 },
3601 "key" : [
3602 {
3603 "match_type" : "exact",
3604 "name" : "next_id",
3605 "target" : ["scalars", "fabric_metadata_t.next_id"],
3606 "mask" : null
3607 }
3608 ],
3609 "match_type" : "exact",
3610 "type" : "indirect_ws",
3611 "action_profile" : "FabricIngress.next.hashed_selector",
3612 "max_size" : 1024,
3613 "with_counters" : true,
3614 "support_timeout" : false,
3615 "direct_meters" : null,
3616 "action_ids" : [23, 24, 25, 5],
3617 "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "FabricIngress.next.mpls_routing_hashed", "nop"],
3618 "base_default_next" : "FabricIngress.next.multicast",
3619 "next_tables" : {
3620 "FabricIngress.next.output_hashed" : "FabricIngress.next.multicast",
3621 "FabricIngress.next.routing_hashed" : "FabricIngress.next.multicast",
3622 "FabricIngress.next.mpls_routing_hashed" : "FabricIngress.next.multicast",
3623 "nop" : "FabricIngress.next.multicast"
3624 }
3625 },
3626 {
3627 "name" : "FabricIngress.next.multicast",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003628 "id" : 15,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003629 "source_info" : {
3630 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003631 "line" : 230,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003632 "column" : 10,
3633 "source_fragment" : "multicast"
3634 },
3635 "key" : [
3636 {
3637 "match_type" : "exact",
3638 "name" : "next_id",
3639 "target" : ["scalars", "fabric_metadata_t.next_id"],
3640 "mask" : null
3641 }
3642 ],
3643 "match_type" : "exact",
3644 "type" : "simple",
3645 "max_size" : 1024,
3646 "with_counters" : true,
3647 "support_timeout" : false,
3648 "direct_meters" : null,
3649 "action_ids" : [26, 6],
3650 "actions" : ["FabricIngress.next.set_mcast_group_id", "nop"],
3651 "base_default_next" : "FabricIngress.next.next_vlan",
3652 "next_tables" : {
3653 "FabricIngress.next.set_mcast_group_id" : "FabricIngress.next.next_vlan",
3654 "nop" : "FabricIngress.next.next_vlan"
3655 },
3656 "default_entry" : {
3657 "action_id" : 6,
3658 "action_const" : true,
3659 "action_data" : [],
3660 "action_entry_const" : true
3661 }
3662 },
3663 {
3664 "name" : "FabricIngress.next.next_vlan",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003665 "id" : 16,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003666 "source_info" : {
3667 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003668 "line" : 82,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003669 "column" : 10,
3670 "source_fragment" : "next_vlan"
3671 },
3672 "key" : [
3673 {
3674 "match_type" : "exact",
3675 "name" : "next_id",
3676 "target" : ["scalars", "fabric_metadata_t.next_id"],
3677 "mask" : null
3678 }
3679 ],
3680 "match_type" : "exact",
3681 "type" : "simple",
3682 "max_size" : 1024,
3683 "with_counters" : true,
3684 "support_timeout" : false,
3685 "direct_meters" : null,
3686 "action_ids" : [20, 3],
3687 "actions" : ["FabricIngress.next.set_vlan", "nop"],
Daniele Moro7c3a0022019-07-12 13:38:34 -07003688 "base_default_next" : "node_30",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003689 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003690 "FabricIngress.next.set_vlan" : "node_30",
3691 "nop" : "node_30"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003692 },
3693 "default_entry" : {
3694 "action_id" : 3,
3695 "action_const" : true,
3696 "action_data" : [],
3697 "action_entry_const" : true
3698 }
3699 },
3700 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003701 "name" : "tbl_act_6",
3702 "id" : 17,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003703 "source_info" : {
3704 "filename" : "include/control/port_counter.p4",
3705 "line" : 31,
3706 "column" : 12,
3707 "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
3708 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003709 "key" : [],
3710 "match_type" : "exact",
3711 "type" : "simple",
3712 "max_size" : 1024,
3713 "with_counters" : false,
3714 "support_timeout" : false,
3715 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07003716 "action_ids" : [34],
3717 "actions" : ["act_6"],
3718 "base_default_next" : "node_32",
Carmelo Casconea5400af2018-07-17 22:11:54 +02003719 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003720 "act_6" : "node_32"
Carmelo Casconea5400af2018-07-17 22:11:54 +02003721 },
3722 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003723 "action_id" : 34,
Carmelo Casconea5400af2018-07-17 22:11:54 +02003724 "action_const" : true,
3725 "action_data" : [],
3726 "action_entry_const" : true
3727 }
3728 },
3729 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003730 "name" : "tbl_act_7",
3731 "id" : 18,
Carmelo Cascone3032b872019-04-13 01:23:54 -07003732 "source_info" : {
3733 "filename" : "include/control/port_counter.p4",
3734 "line" : 34,
3735 "column" : 12,
3736 "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
3737 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02003738 "key" : [],
3739 "match_type" : "exact",
3740 "type" : "simple",
3741 "max_size" : 1024,
3742 "with_counters" : false,
3743 "support_timeout" : false,
3744 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07003745 "action_ids" : [35],
3746 "actions" : ["act_7"],
Carmelo Casconea5400af2018-07-17 22:11:54 +02003747 "base_default_next" : null,
Esin Karaman971fb7f2017-12-28 13:44:52 +00003748 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003749 "act_7" : null
Yi Tseng27b9bc02018-04-12 14:52:40 +08003750 },
3751 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003752 "action_id" : 35,
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003753 "action_const" : true,
3754 "action_data" : [],
3755 "action_entry_const" : true
3756 }
Yi Tsengbe342052017-11-03 10:21:23 -07003757 }
3758 ],
3759 "action_profiles" : [
3760 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003761 "name" : "FabricIngress.next.hashed_selector",
Yi Tsengbe342052017-11-03 10:21:23 -07003762 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003763 "source_info" : {
3764 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003765 "line" : 177,
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003766 "column" : 57,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003767 "source_fragment" : "hashed_selector"
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07003768 },
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003769 "max_size" : 1024,
Yi Tsengbe342052017-11-03 10:21:23 -07003770 "selector" : {
3771 "algo" : "crc16",
3772 "input" : [
3773 {
3774 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003775 "value" : ["ipv4", "dst_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003776 },
3777 {
3778 "type" : "field",
Yi Tseng3d3956d2018-01-31 17:28:05 -08003779 "value" : ["ipv4", "src_addr"]
Yi Tsengbe342052017-11-03 10:21:23 -07003780 },
3781 {
3782 "type" : "field",
Yi Tseng1d842672017-11-28 16:06:52 -08003783 "value" : ["scalars", "fabric_metadata_t.ip_proto"]
Yi Tsengbe342052017-11-03 10:21:23 -07003784 },
3785 {
3786 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003787 "value" : ["scalars", "fabric_metadata_t.l4_sport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003788 },
3789 {
3790 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003791 "value" : ["scalars", "fabric_metadata_t.l4_dport"]
Yi Tsengbe342052017-11-03 10:21:23 -07003792 }
3793 ]
3794 }
3795 }
3796 ],
3797 "conditionals" : [
3798 {
3799 "name" : "node_2",
3800 "id" : 0,
3801 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003802 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003803 "line" : 24,
Yi Tsengbe342052017-11-03 10:21:23 -07003804 "column" : 12,
3805 "source_fragment" : "hdr.packet_out.isValid()"
3806 },
3807 "expression" : {
3808 "type" : "expression",
3809 "value" : {
Yi Tsengbd46d052018-01-22 17:18:16 -08003810 "op" : "d2b",
3811 "left" : null,
3812 "right" : {
Yi Tsengbe342052017-11-03 10:21:23 -07003813 "type" : "field",
3814 "value" : ["packet_out", "$valid$"]
Yi Tsengbe342052017-11-03 10:21:23 -07003815 }
3816 }
3817 },
3818 "true_next" : "tbl_act",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003819 "false_next" : "node_4"
Yi Tsengbe342052017-11-03 10:21:23 -07003820 },
3821 {
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003822 "name" : "node_4",
Yi Tsengbe342052017-11-03 10:21:23 -07003823 "id" : 1,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003824 "source_info" : {
3825 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003826 "line" : 109,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003827 "column" : 12,
3828 "source_fragment" : "hdr.vlan_tag.isValid()"
3829 },
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003830 "expression" : {
3831 "type" : "expression",
3832 "value" : {
3833 "op" : "d2b",
3834 "left" : null,
3835 "right" : {
3836 "type" : "field",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003837 "value" : ["vlan_tag", "$valid$"]
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003838 }
3839 }
3840 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003841 "true_next" : "tbl_act_0",
3842 "false_next" : "node_6"
3843 },
3844 {
3845 "name" : "node_6",
3846 "id" : 2,
3847 "source_info" : {
3848 "filename" : "include/control/filtering.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003849 "line" : 121,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003850 "column" : 12,
3851 "source_fragment" : "!hdr.mpls.isValid()"
3852 },
3853 "expression" : {
3854 "type" : "expression",
3855 "value" : {
3856 "op" : "not",
3857 "left" : null,
3858 "right" : {
3859 "type" : "expression",
3860 "value" : {
3861 "op" : "d2b",
3862 "left" : null,
3863 "right" : {
3864 "type" : "field",
3865 "value" : ["mpls", "$valid$"]
3866 }
3867 }
3868 }
3869 }
3870 },
3871 "true_next" : "tbl_act_1",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003872 "false_next" : "node_8"
3873 },
3874 {
3875 "name" : "node_8",
3876 "id" : 3,
3877 "source_info" : {
3878 "filename" : "include/control/filtering.p4",
3879 "line" : 130,
3880 "column" : 12,
3881 "source_fragment" : "hdr.mpls.isValid()"
3882 },
3883 "expression" : {
3884 "type" : "expression",
3885 "value" : {
3886 "op" : "d2b",
3887 "left" : null,
3888 "right" : {
3889 "type" : "field",
3890 "value" : ["mpls", "$valid$"]
3891 }
3892 }
3893 },
3894 "true_next" : "tbl_act_2",
3895 "false_next" : "node_10"
Carmelo Cascone8a715f82018-08-20 23:16:27 -07003896 },
3897 {
3898 "name" : "node_10",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003899 "id" : 4,
3900 "source_info" : {
3901 "filename" : "include/control/filtering.p4",
3902 "line" : 133,
3903 "column" : 16,
3904 "source_fragment" : "hdr.vlan_tag.isValid()"
3905 },
3906 "expression" : {
3907 "type" : "expression",
3908 "value" : {
3909 "op" : "d2b",
3910 "left" : null,
3911 "right" : {
3912 "type" : "field",
3913 "value" : ["vlan_tag", "$valid$"]
3914 }
3915 }
3916 },
3917 "true_next" : "node_11",
3918 "false_next" : "tbl_act_5"
3919 },
3920 {
3921 "name" : "node_11",
3922 "id" : 5,
3923 "source_info" : {
3924 "filename" : "include/control/filtering.p4",
3925 "line" : 135,
3926 "column" : 19,
3927 "source_fragment" : "hdr.inner_vlan_tag.isValid()"
3928 },
3929 "expression" : {
3930 "type" : "expression",
3931 "value" : {
3932 "op" : "d2b",
3933 "left" : null,
3934 "right" : {
3935 "type" : "field",
3936 "value" : ["inner_vlan_tag", "$valid$"]
3937 }
3938 }
3939 },
3940 "true_next" : "tbl_act_3",
3941 "false_next" : "tbl_act_4"
3942 },
3943 {
3944 "name" : "node_17",
3945 "id" : 6,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003946 "source_info" : {
3947 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07003948 "line" : 71,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003949 "column" : 12,
3950 "source_fragment" : "fabric_metadata.skip_forwarding == false"
3951 },
3952 "expression" : {
3953 "type" : "expression",
3954 "value" : {
3955 "op" : "==",
3956 "left" : {
3957 "type" : "expression",
3958 "value" : {
3959 "op" : "d2b",
3960 "left" : null,
3961 "right" : {
3962 "type" : "field",
3963 "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
3964 }
3965 }
3966 },
3967 "right" : {
3968 "type" : "bool",
3969 "value" : false
3970 }
3971 }
3972 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07003973 "true_next" : "node_18",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003974 "false_next" : "FabricIngress.acl.acl"
3975 },
3976 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07003977 "name" : "node_18",
3978 "id" : 7,
Yi Tsengbe342052017-11-03 10:21:23 -07003979 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02003980 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07003981 "line" : 141,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08003982 "column" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07003983 "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
3984 },
3985 "expression" : {
3986 "type" : "expression",
3987 "value" : {
3988 "op" : "==",
3989 "left" : {
3990 "type" : "field",
3991 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
3992 },
3993 "right" : {
3994 "type" : "hexstr",
3995 "value" : "0x00"
3996 }
3997 }
3998 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08003999 "true_next" : "FabricIngress.forwarding.bridging",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004000 "false_next" : "node_20"
Yi Tsengbe342052017-11-03 10:21:23 -07004001 },
4002 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004003 "name" : "node_20",
4004 "id" : 8,
Yi Tsengbe342052017-11-03 10:21:23 -07004005 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004006 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004007 "line" : 142,
Yi Tsengbe342052017-11-03 10:21:23 -07004008 "column" : 17,
4009 "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
4010 },
4011 "expression" : {
4012 "type" : "expression",
4013 "value" : {
4014 "op" : "==",
4015 "left" : {
4016 "type" : "field",
4017 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4018 },
4019 "right" : {
4020 "type" : "hexstr",
4021 "value" : "0x01"
4022 }
4023 }
4024 },
Yi Tseng27b9bc02018-04-12 14:52:40 +08004025 "true_next" : "FabricIngress.forwarding.mpls",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004026 "false_next" : "node_22"
Yi Tsengbe342052017-11-03 10:21:23 -07004027 },
4028 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004029 "name" : "node_22",
4030 "id" : 9,
Yi Tsengbe342052017-11-03 10:21:23 -07004031 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004032 "filename" : "include/control/forwarding.p4",
Carmelo Cascone70e816b2019-03-19 16:15:47 -07004033 "line" : 143,
Yi Tsengbe342052017-11-03 10:21:23 -07004034 "column" : 17,
4035 "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
4036 },
4037 "expression" : {
4038 "type" : "expression",
4039 "value" : {
4040 "op" : "==",
4041 "left" : {
4042 "type" : "field",
4043 "value" : ["scalars", "fabric_metadata_t.fwd_type"]
4044 },
4045 "right" : {
4046 "type" : "hexstr",
4047 "value" : "0x02"
4048 }
4049 }
4050 },
Charles Chan384aea22018-08-23 22:08:02 -07004051 "true_next" : "FabricIngress.forwarding.routing_v4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004052 "false_next" : "FabricIngress.acl.acl"
4053 },
4054 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004055 "name" : "node_25",
4056 "id" : 10,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004057 "source_info" : {
4058 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004059 "line" : 75,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004060 "column" : 12,
4061 "source_fragment" : "fabric_metadata.skip_next == false"
4062 },
4063 "expression" : {
4064 "type" : "expression",
4065 "value" : {
4066 "op" : "==",
4067 "left" : {
4068 "type" : "expression",
4069 "value" : {
4070 "op" : "d2b",
4071 "left" : null,
4072 "right" : {
4073 "type" : "field",
4074 "value" : ["scalars", "fabric_metadata_t.skip_next"]
4075 }
4076 }
4077 },
4078 "right" : {
4079 "type" : "bool",
4080 "value" : false
4081 }
4082 }
4083 },
4084 "false_next" : null,
4085 "true_next" : "FabricIngress.next.xconnect"
Yi Tseng27b9bc02018-04-12 14:52:40 +08004086 },
4087 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004088 "name" : "node_30",
4089 "id" : 11,
Yi Tseng27b9bc02018-04-12 14:52:40 +08004090 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004091 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004092 "line" : 30,
Yi Tsengbe342052017-11-03 10:21:23 -07004093 "column" : 12,
4094 "source_fragment" : "standard_metadata.egress_spec < 511"
4095 },
4096 "expression" : {
4097 "type" : "expression",
4098 "value" : {
4099 "op" : "<",
4100 "left" : {
4101 "type" : "field",
4102 "value" : ["standard_metadata", "egress_spec"]
4103 },
4104 "right" : {
4105 "type" : "hexstr",
4106 "value" : "0x01ff"
4107 }
4108 }
4109 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004110 "true_next" : "tbl_act_6",
4111 "false_next" : "node_32"
Yi Tsengbe342052017-11-03 10:21:23 -07004112 },
4113 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004114 "name" : "node_32",
4115 "id" : 12,
Yi Tsengbe342052017-11-03 10:21:23 -07004116 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004117 "filename" : "include/control/port_counter.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004118 "line" : 33,
Yi Tsengbe342052017-11-03 10:21:23 -07004119 "column" : 12,
4120 "source_fragment" : "standard_metadata.ingress_port < 511"
4121 },
4122 "expression" : {
4123 "type" : "expression",
4124 "value" : {
4125 "op" : "<",
4126 "left" : {
4127 "type" : "field",
4128 "value" : ["standard_metadata", "ingress_port"]
4129 },
4130 "right" : {
4131 "type" : "hexstr",
4132 "value" : "0x01ff"
4133 }
4134 }
4135 },
Yi Tseng3a5731e2018-01-22 11:38:58 -08004136 "false_next" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004137 "true_next" : "tbl_act_7"
Yi Tseng3a5731e2018-01-22 11:38:58 -08004138 }
4139 ]
4140 },
4141 {
4142 "name" : "egress",
4143 "id" : 1,
4144 "source_info" : {
4145 "filename" : "fabric.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004146 "line" : 93,
Yi Tseng3a5731e2018-01-22 11:38:58 -08004147 "column" : 8,
4148 "source_fragment" : "FabricEgress"
4149 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004150 "init_table" : "node_36",
Yi Tseng3a5731e2018-01-22 11:38:58 -08004151 "tables" : [
4152 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004153 "name" : "tbl_act_8",
4154 "id" : 19,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004155 "source_info" : {
4156 "filename" : "include/control/packetio.p4",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004157 "line" : 41,
4158 "column" : 12,
4159 "source_fragment" : "exit"
Carmelo Cascone3032b872019-04-13 01:23:54 -07004160 },
Carmelo Casconea5400af2018-07-17 22:11:54 +02004161 "key" : [],
4162 "match_type" : "exact",
4163 "type" : "simple",
4164 "max_size" : 1024,
4165 "with_counters" : false,
4166 "support_timeout" : false,
4167 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004168 "action_ids" : [41],
4169 "actions" : ["act_8"],
4170 "base_default_next" : "node_38",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004171 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004172 "act_8" : "node_38"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004173 },
4174 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004175 "action_id" : 41,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004176 "action_const" : true,
4177 "action_data" : [],
4178 "action_entry_const" : true
4179 }
4180 },
4181 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004182 "name" : "tbl_act_9",
4183 "id" : 20,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004184 "source_info" : {
4185 "filename" : "include/control/packetio.p4",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07004186 "line" : 44,
4187 "column" : 12,
4188 "source_fragment" : "hdr.packet_in.setValid(); ..."
Carmelo Cascone3032b872019-04-13 01:23:54 -07004189 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004190 "key" : [],
4191 "match_type" : "exact",
4192 "type" : "simple",
4193 "max_size" : 1024,
4194 "with_counters" : false,
4195 "support_timeout" : false,
4196 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004197 "action_ids" : [42],
4198 "actions" : ["act_9"],
4199 "base_default_next" : "node_40",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004200 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004201 "act_9" : "node_40"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004202 },
4203 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004204 "action_id" : 42,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004205 "action_const" : true,
4206 "action_data" : [],
4207 "action_entry_const" : true
4208 }
4209 },
4210 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004211 "name" : "tbl_act_10",
4212 "id" : 21,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004213 "source_info" : {
Daniele Moro01ca2ab2019-06-25 11:48:48 -07004214 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004215 "line" : 334,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004216 "column" : 12,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07004217 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Cascone3032b872019-04-13 01:23:54 -07004218 },
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004219 "key" : [],
4220 "match_type" : "exact",
4221 "type" : "simple",
4222 "max_size" : 1024,
4223 "with_counters" : false,
4224 "support_timeout" : false,
4225 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004226 "action_ids" : [43],
4227 "actions" : ["act_10"],
4228 "base_default_next" : "node_42",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004229 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004230 "act_10" : "node_42"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004231 },
4232 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004233 "action_id" : 43,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004234 "action_const" : true,
4235 "action_data" : [],
4236 "action_entry_const" : true
4237 }
4238 },
4239 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004240 "name" : "tbl_egress_next_pop_mpls_if_present",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004241 "id" : 22,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004242 "source_info" : {
4243 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004244 "line" : 338,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004245 "column" : 36,
4246 "source_fragment" : "pop_mpls_if_present()"
4247 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004248 "key" : [],
4249 "match_type" : "exact",
4250 "type" : "simple",
4251 "max_size" : 1024,
4252 "with_counters" : false,
4253 "support_timeout" : false,
4254 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004255 "action_ids" : [37],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004256 "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
4257 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
4258 "next_tables" : {
4259 "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
4260 },
4261 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004262 "action_id" : 37,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004263 "action_const" : true,
4264 "action_data" : [],
4265 "action_entry_const" : true
4266 }
4267 },
4268 {
4269 "name" : "tbl_egress_next_set_mpls",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004270 "id" : 23,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004271 "source_info" : {
4272 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004273 "line" : 340,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004274 "column" : 12,
4275 "source_fragment" : "set_mpls()"
4276 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004277 "key" : [],
4278 "match_type" : "exact",
4279 "type" : "simple",
4280 "max_size" : 1024,
4281 "with_counters" : false,
4282 "support_timeout" : false,
4283 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004284 "action_ids" : [38],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004285 "actions" : ["FabricEgress.egress_next.set_mpls"],
4286 "base_default_next" : "FabricEgress.egress_next.egress_vlan",
4287 "next_tables" : {
4288 "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
4289 },
4290 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004291 "action_id" : 38,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004292 "action_const" : true,
4293 "action_data" : [],
4294 "action_entry_const" : true
4295 }
4296 },
4297 {
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004298 "name" : "FabricEgress.egress_next.egress_vlan",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004299 "id" : 24,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004300 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004301 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004302 "line" : 317,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004303 "column" : 10,
4304 "source_fragment" : "egress_vlan"
4305 },
4306 "key" : [
4307 {
4308 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004309 "name" : "vlan_id",
4310 "target" : ["scalars", "fabric_metadata_t.vlan_id"],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004311 "mask" : null
4312 },
4313 {
4314 "match_type" : "exact",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004315 "name" : "eg_port",
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004316 "target" : ["standard_metadata", "egress_port"],
4317 "mask" : null
4318 }
4319 ],
4320 "match_type" : "exact",
4321 "type" : "simple",
4322 "max_size" : 1024,
Yi Tseng47eac892018-07-11 02:17:04 +08004323 "with_counters" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004324 "support_timeout" : false,
4325 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004326 "action_ids" : [40, 36],
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004327 "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004328 "base_default_next" : null,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004329 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004330 "__HIT__" : "tbl_act_11",
4331 "__MISS__" : "tbl_act_12"
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004332 },
4333 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004334 "action_id" : 36,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004335 "action_const" : true,
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004336 "action_data" : [],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004337 "action_entry_const" : true
4338 }
4339 },
4340 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004341 "name" : "tbl_act_11",
4342 "id" : 25,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07004343 "key" : [],
4344 "match_type" : "exact",
4345 "type" : "simple",
4346 "max_size" : 1024,
4347 "with_counters" : false,
4348 "support_timeout" : false,
4349 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004350 "action_ids" : [44],
4351 "actions" : ["act_11"],
4352 "base_default_next" : "node_49",
Daniele Moro01ca2ab2019-06-25 11:48:48 -07004353 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004354 "act_11" : "node_49"
Daniele Moro01ca2ab2019-06-25 11:48:48 -07004355 },
4356 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004357 "action_id" : 44,
Daniele Moro01ca2ab2019-06-25 11:48:48 -07004358 "action_const" : true,
4359 "action_data" : [],
4360 "action_entry_const" : true
4361 }
4362 },
4363 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004364 "name" : "tbl_act_12",
4365 "id" : 26,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004366 "key" : [],
4367 "match_type" : "exact",
4368 "type" : "simple",
4369 "max_size" : 1024,
4370 "with_counters" : false,
4371 "support_timeout" : false,
4372 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004373 "action_ids" : [45],
4374 "actions" : ["act_12"],
4375 "base_default_next" : "node_49",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004376 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004377 "act_12" : "node_49"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004378 },
4379 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004380 "action_id" : 45,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004381 "action_const" : true,
4382 "action_data" : [],
4383 "action_entry_const" : true
4384 }
4385 },
4386 {
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004387 "name" : "tbl_egress_next_push_vlan",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004388 "id" : 27,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004389 "source_info" : {
4390 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004391 "line" : 357,
4392 "column" : 20,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004393 "source_fragment" : "push_vlan()"
4394 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004395 "key" : [],
4396 "match_type" : "exact",
4397 "type" : "simple",
4398 "max_size" : 1024,
4399 "with_counters" : false,
4400 "support_timeout" : false,
4401 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004402 "action_ids" : [39],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004403 "actions" : ["FabricEgress.egress_next.push_vlan"],
Daniele Moro7c3a0022019-07-12 13:38:34 -07004404 "base_default_next" : "node_52",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004405 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004406 "FabricEgress.egress_next.push_vlan" : "node_52"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004407 },
4408 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004409 "action_id" : 39,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004410 "action_const" : true,
4411 "action_data" : [],
4412 "action_entry_const" : true
4413 }
4414 },
4415 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004416 "name" : "tbl_act_13",
4417 "id" : 28,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004418 "source_info" : {
4419 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004420 "line" : 366,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004421 "column" : 25,
4422 "source_fragment" : "="
4423 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004424 "key" : [],
4425 "match_type" : "exact",
4426 "type" : "simple",
4427 "max_size" : 1024,
4428 "with_counters" : false,
4429 "support_timeout" : false,
4430 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004431 "action_ids" : [47],
4432 "actions" : ["act_14"],
4433 "base_default_next" : "node_54",
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004434 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004435 "act_14" : "node_54"
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004436 },
4437 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004438 "action_id" : 47,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004439 "action_const" : true,
4440 "action_data" : [],
4441 "action_entry_const" : true
4442 }
4443 },
4444 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004445 "name" : "tbl_act_14",
4446 "id" : 29,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004447 "source_info" : {
4448 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004449 "line" : 367,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004450 "column" : 35,
4451 "source_fragment" : "mark_to_drop(standard_metadata)"
4452 },
4453 "key" : [],
4454 "match_type" : "exact",
4455 "type" : "simple",
4456 "max_size" : 1024,
4457 "with_counters" : false,
4458 "support_timeout" : false,
4459 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004460 "action_ids" : [46],
4461 "actions" : ["act_13"],
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004462 "base_default_next" : null,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004463 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004464 "act_13" : null
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004465 },
4466 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004467 "action_id" : 46,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004468 "action_const" : true,
4469 "action_data" : [],
4470 "action_entry_const" : true
4471 }
4472 },
4473 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004474 "name" : "tbl_act_15",
4475 "id" : 30,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004476 "source_info" : {
4477 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004478 "line" : 370,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004479 "column" : 29,
4480 "source_fragment" : "="
4481 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004482 "key" : [],
4483 "match_type" : "exact",
4484 "type" : "simple",
4485 "max_size" : 1024,
4486 "with_counters" : false,
4487 "support_timeout" : false,
4488 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004489 "action_ids" : [49],
4490 "actions" : ["act_16"],
4491 "base_default_next" : "node_58",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004492 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004493 "act_16" : "node_58"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004494 },
4495 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004496 "action_id" : 49,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004497 "action_const" : true,
4498 "action_data" : [],
4499 "action_entry_const" : true
4500 }
4501 },
4502 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004503 "name" : "tbl_act_16",
4504 "id" : 31,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004505 "source_info" : {
4506 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004507 "line" : 371,
Carmelo Cascone3032b872019-04-13 01:23:54 -07004508 "column" : 39,
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004509 "source_fragment" : "mark_to_drop(standard_metadata)"
Carmelo Cascone3032b872019-04-13 01:23:54 -07004510 },
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004511 "key" : [],
4512 "match_type" : "exact",
4513 "type" : "simple",
4514 "max_size" : 1024,
4515 "with_counters" : false,
4516 "support_timeout" : false,
4517 "direct_meters" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004518 "action_ids" : [48],
4519 "actions" : ["act_15"],
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004520 "base_default_next" : null,
4521 "next_tables" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004522 "act_15" : null
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004523 },
4524 "default_entry" : {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004525 "action_id" : 48,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004526 "action_const" : true,
4527 "action_data" : [],
4528 "action_entry_const" : true
Yi Tseng20f9e7b2018-05-24 23:27:39 +08004529 }
Yi Tseng3a5731e2018-01-22 11:38:58 -08004530 }
4531 ],
4532 "action_profiles" : [],
4533 "conditionals" : [
Yi Tseng1d842672017-11-28 16:06:52 -08004534 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004535 "name" : "node_36",
4536 "id" : 13,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004537 "source_info" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004538 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004539 "line" : 39,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004540 "column" : 12,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004541 "source_fragment" : "fabric_metadata.is_controller_packet_out == true"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004542 },
4543 "expression" : {
4544 "type" : "expression",
4545 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004546 "op" : "==",
Carmelo Casconea5400af2018-07-17 22:11:54 +02004547 "left" : {
4548 "type" : "expression",
4549 "value" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004550 "op" : "d2b",
4551 "left" : null,
Carmelo Casconea5400af2018-07-17 22:11:54 +02004552 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004553 "type" : "field",
4554 "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
Carmelo Casconea5400af2018-07-17 22:11:54 +02004555 }
4556 }
4557 },
4558 "right" : {
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004559 "type" : "bool",
4560 "value" : true
Carmelo Casconea5400af2018-07-17 22:11:54 +02004561 }
4562 }
4563 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004564 "true_next" : "tbl_act_8",
4565 "false_next" : "node_38"
Carmelo Casconea5400af2018-07-17 22:11:54 +02004566 },
4567 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004568 "name" : "node_38",
4569 "id" : 14,
Yi Tsengbe342052017-11-03 10:21:23 -07004570 "source_info" : {
Carmelo Casconef645e842018-07-16 18:31:52 +02004571 "filename" : "include/control/packetio.p4",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004572 "line" : 43,
Yi Tsengbe342052017-11-03 10:21:23 -07004573 "column" : 12,
Carmelo Casconeb531b682018-01-30 17:55:56 -08004574 "source_fragment" : "standard_metadata.egress_port == 255"
Yi Tsengbe342052017-11-03 10:21:23 -07004575 },
4576 "expression" : {
4577 "type" : "expression",
4578 "value" : {
4579 "op" : "==",
4580 "left" : {
4581 "type" : "field",
4582 "value" : ["standard_metadata", "egress_port"]
4583 },
4584 "right" : {
4585 "type" : "hexstr",
4586 "value" : "0x00ff"
4587 }
4588 }
4589 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004590 "true_next" : "tbl_act_9",
4591 "false_next" : "node_40"
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004592 },
4593 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004594 "name" : "node_40",
4595 "id" : 15,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004596 "source_info" : {
4597 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004598 "line" : 332,
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004599 "column" : 12,
4600 "source_fragment" : "fabric_metadata.is_multicast == true ..."
4601 },
4602 "expression" : {
4603 "type" : "expression",
4604 "value" : {
4605 "op" : "and",
4606 "left" : {
4607 "type" : "expression",
4608 "value" : {
4609 "op" : "==",
4610 "left" : {
4611 "type" : "expression",
4612 "value" : {
4613 "op" : "d2b",
4614 "left" : null,
4615 "right" : {
4616 "type" : "field",
4617 "value" : ["scalars", "fabric_metadata_t.is_multicast"]
4618 }
4619 }
4620 },
4621 "right" : {
4622 "type" : "bool",
4623 "value" : true
4624 }
4625 }
4626 },
4627 "right" : {
4628 "type" : "expression",
4629 "value" : {
4630 "op" : "==",
4631 "left" : {
4632 "type" : "field",
4633 "value" : ["standard_metadata", "ingress_port"]
4634 },
4635 "right" : {
4636 "type" : "field",
4637 "value" : ["standard_metadata", "egress_port"]
4638 }
4639 }
4640 }
4641 }
4642 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004643 "true_next" : "tbl_act_10",
4644 "false_next" : "node_42"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004645 },
4646 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004647 "name" : "node_42",
4648 "id" : 16,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004649 "source_info" : {
4650 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004651 "line" : 337,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004652 "column" : 12,
4653 "source_fragment" : "fabric_metadata.mpls_label == 0"
4654 },
4655 "expression" : {
4656 "type" : "expression",
4657 "value" : {
4658 "op" : "==",
4659 "left" : {
4660 "type" : "field",
4661 "value" : ["scalars", "fabric_metadata_t.mpls_label"]
4662 },
4663 "right" : {
4664 "type" : "hexstr",
4665 "value" : "0x000000"
4666 }
4667 }
4668 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004669 "true_next" : "node_43",
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004670 "false_next" : "tbl_egress_next_set_mpls"
4671 },
4672 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004673 "name" : "node_43",
4674 "id" : 17,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004675 "source_info" : {
4676 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004677 "line" : 338,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004678 "column" : 16,
4679 "source_fragment" : "hdr.mpls.isValid()"
4680 },
4681 "expression" : {
4682 "type" : "expression",
4683 "value" : {
4684 "op" : "d2b",
4685 "left" : null,
4686 "right" : {
4687 "type" : "field",
4688 "value" : ["mpls", "$valid$"]
4689 }
4690 }
4691 },
4692 "true_next" : "tbl_egress_next_pop_mpls_if_present",
Carmelo Cascone8d2d1b22018-08-27 18:33:53 -07004693 "false_next" : "FabricEgress.egress_next.egress_vlan"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004694 },
4695 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004696 "name" : "node_49",
4697 "id" : 18,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004698 "source_info" : {
4699 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004700 "line" : 354,
4701 "column" : 16,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004702 "source_fragment" : "!egress_vlan.apply().hit"
4703 },
4704 "expression" : {
4705 "type" : "expression",
4706 "value" : {
4707 "op" : "not",
4708 "left" : null,
4709 "right" : {
4710 "type" : "expression",
4711 "value" : {
4712 "op" : "d2b",
4713 "left" : null,
4714 "right" : {
4715 "type" : "field",
4716 "value" : ["scalars", "egress_next_tmp"]
4717 }
4718 }
4719 }
4720 }
4721 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004722 "true_next" : "node_50",
4723 "false_next" : "node_52"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004724 },
4725 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004726 "name" : "node_50",
4727 "id" : 19,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004728 "source_info" : {
4729 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004730 "line" : 356,
4731 "column" : 20,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004732 "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
4733 },
4734 "expression" : {
4735 "type" : "expression",
4736 "value" : {
4737 "op" : "!=",
4738 "left" : {
4739 "type" : "field",
4740 "value" : ["scalars", "fabric_metadata_t.vlan_id"]
4741 },
4742 "right" : {
4743 "type" : "hexstr",
4744 "value" : "0x0ffe"
4745 }
4746 }
4747 },
4748 "true_next" : "tbl_egress_next_push_vlan",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004749 "false_next" : "node_52"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004750 },
4751 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004752 "name" : "node_52",
4753 "id" : 20,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004754 "source_info" : {
4755 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004756 "line" : 365,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004757 "column" : 12,
4758 "source_fragment" : "hdr.mpls.isValid()"
4759 },
4760 "expression" : {
4761 "type" : "expression",
4762 "value" : {
4763 "op" : "d2b",
4764 "left" : null,
4765 "right" : {
4766 "type" : "field",
4767 "value" : ["mpls", "$valid$"]
4768 }
4769 }
4770 },
Daniele Moro7c3a0022019-07-12 13:38:34 -07004771 "true_next" : "tbl_act_13",
4772 "false_next" : "node_56"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004773 },
4774 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004775 "name" : "node_54",
4776 "id" : 21,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004777 "source_info" : {
4778 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004779 "line" : 367,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004780 "column" : 16,
4781 "source_fragment" : "hdr.mpls.ttl == 0"
4782 },
4783 "expression" : {
4784 "type" : "expression",
4785 "value" : {
4786 "op" : "==",
4787 "left" : {
4788 "type" : "field",
4789 "value" : ["mpls", "ttl"]
4790 },
4791 "right" : {
4792 "type" : "hexstr",
4793 "value" : "0x00"
4794 }
4795 }
4796 },
4797 "false_next" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004798 "true_next" : "tbl_act_14"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004799 },
4800 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004801 "name" : "node_56",
4802 "id" : 22,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004803 "source_info" : {
4804 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004805 "line" : 369,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004806 "column" : 15,
4807 "source_fragment" : "hdr.ipv4.isValid()"
4808 },
4809 "expression" : {
4810 "type" : "expression",
4811 "value" : {
4812 "op" : "d2b",
4813 "left" : null,
4814 "right" : {
4815 "type" : "field",
4816 "value" : ["ipv4", "$valid$"]
4817 }
4818 }
4819 },
4820 "false_next" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004821 "true_next" : "tbl_act_15"
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004822 },
4823 {
Daniele Moro7c3a0022019-07-12 13:38:34 -07004824 "name" : "node_58",
4825 "id" : 23,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004826 "source_info" : {
4827 "filename" : "include/control/next.p4",
Daniele Moro7c3a0022019-07-12 13:38:34 -07004828 "line" : 371,
Carmelo Casconeb5324e72018-11-25 02:26:32 -08004829 "column" : 20,
4830 "source_fragment" : "hdr.ipv4.ttl == 0"
4831 },
4832 "expression" : {
4833 "type" : "expression",
4834 "value" : {
4835 "op" : "==",
4836 "left" : {
4837 "type" : "field",
4838 "value" : ["ipv4", "ttl"]
4839 },
4840 "right" : {
4841 "type" : "hexstr",
4842 "value" : "0x00"
4843 }
4844 }
4845 },
4846 "false_next" : null,
Daniele Moro7c3a0022019-07-12 13:38:34 -07004847 "true_next" : "tbl_act_16"
Yi Tsengbe342052017-11-03 10:21:23 -07004848 }
4849 ]
4850 }
4851 ],
4852 "checksums" : [
4853 {
4854 "name" : "cksum",
4855 "id" : 0,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004856 "source_info" : {
4857 "filename" : "include/checksum.p4",
4858 "line" : 28,
4859 "column" : 8,
4860 "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
4861 },
Yi Tsengbe342052017-11-03 10:21:23 -07004862 "target" : ["ipv4", "hdr_checksum"],
4863 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004864 "calculation" : "calc",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004865 "verify" : false,
4866 "update" : true,
Yi Tsengbd46d052018-01-22 17:18:16 -08004867 "if_cond" : {
4868 "type" : "expression",
4869 "value" : {
4870 "op" : "d2b",
4871 "left" : null,
4872 "right" : {
4873 "type" : "field",
4874 "value" : ["ipv4", "$valid$"]
4875 }
4876 }
4877 }
Yi Tsengbe342052017-11-03 10:21:23 -07004878 },
4879 {
4880 "name" : "cksum_0",
4881 "id" : 1,
Carmelo Cascone03ae0ac2018-10-11 08:31:59 -07004882 "source_info" : {
4883 "filename" : "include/checksum.p4",
4884 "line" : 57,
4885 "column" : 8,
4886 "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
4887 },
Yi Tsengbe342052017-11-03 10:21:23 -07004888 "target" : ["ipv4", "hdr_checksum"],
4889 "type" : "generic",
Yi Tsengbd46d052018-01-22 17:18:16 -08004890 "calculation" : "calc_0",
Carmelo Casconea4dc3c12019-02-12 17:30:00 -08004891 "verify" : true,
4892 "update" : false,
Yi Tsengbd46d052018-01-22 17:18:16 -08004893 "if_cond" : {
4894 "type" : "expression",
4895 "value" : {
4896 "op" : "d2b",
4897 "left" : null,
4898 "right" : {
4899 "type" : "field",
4900 "value" : ["ipv4", "$valid$"]
4901 }
4902 }
4903 }
Yi Tsengbe342052017-11-03 10:21:23 -07004904 }
4905 ],
4906 "force_arith" : [],
4907 "extern_instances" : [],
4908 "field_aliases" : [
4909 [
4910 "queueing_metadata.enq_timestamp",
4911 ["standard_metadata", "enq_timestamp"]
4912 ],
4913 [
4914 "queueing_metadata.enq_qdepth",
4915 ["standard_metadata", "enq_qdepth"]
4916 ],
4917 [
4918 "queueing_metadata.deq_timedelta",
4919 ["standard_metadata", "deq_timedelta"]
4920 ],
4921 [
4922 "queueing_metadata.deq_qdepth",
4923 ["standard_metadata", "deq_qdepth"]
4924 ],
4925 [
4926 "intrinsic_metadata.ingress_global_timestamp",
4927 ["standard_metadata", "ingress_global_timestamp"]
4928 ],
4929 [
Yi Tseng27b9bc02018-04-12 14:52:40 +08004930 "intrinsic_metadata.egress_global_timestamp",
4931 ["standard_metadata", "egress_global_timestamp"]
4932 ],
4933 [
Yi Tsengbe342052017-11-03 10:21:23 -07004934 "intrinsic_metadata.lf_field_list",
4935 ["standard_metadata", "lf_field_list"]
4936 ],
4937 [
4938 "intrinsic_metadata.mcast_grp",
4939 ["standard_metadata", "mcast_grp"]
4940 ],
4941 [
4942 "intrinsic_metadata.resubmit_flag",
4943 ["standard_metadata", "resubmit_flag"]
4944 ],
4945 [
4946 "intrinsic_metadata.egress_rid",
4947 ["standard_metadata", "egress_rid"]
Yi Tseng27b9bc02018-04-12 14:52:40 +08004948 ],
4949 [
4950 "intrinsic_metadata.recirculate_flag",
4951 ["standard_metadata", "recirculate_flag"]
Carmelo Cascone9b607da2019-05-08 14:03:01 -07004952 ],
4953 [
4954 "intrinsic_metadata.priority",
4955 ["standard_metadata", "priority"]
Yi Tsengbe342052017-11-03 10:21:23 -07004956 ]
Carmelo Cascone6af4e172018-06-15 16:01:30 +02004957 ],
4958 "program" : "fabric.p4",
4959 "__meta__" : {
4960 "version" : [2, 18],
4961 "compiler" : "https://github.com/p4lang/p4c"
4962 }
Carmelo Cascone25243d62019-02-21 15:37:31 -08004963}