| { |
| "header_types" : [ |
| { |
| "name" : "scalars_0", |
| "id" : 0, |
| "fields" : [ |
| ["tmp", 32, false], |
| ["tmp_1", 32, false], |
| ["tmp_0", 1, false], |
| ["hasReturned_0", 1, false], |
| ["_padding_2", 6, false] |
| ] |
| }, |
| { |
| "name" : "standard_metadata", |
| "id" : 1, |
| "fields" : [ |
| ["ingress_port", 9, false], |
| ["egress_spec", 9, false], |
| ["egress_port", 9, false], |
| ["clone_spec", 32, false], |
| ["instance_type", 32, false], |
| ["drop", 1, false], |
| ["recirculate_port", 16, false], |
| ["packet_length", 32, false], |
| ["enq_timestamp", 32, false], |
| ["enq_qdepth", 19, false], |
| ["deq_timedelta", 32, false], |
| ["deq_qdepth", 19, false], |
| ["ingress_global_timestamp", 48, false], |
| ["egress_global_timestamp", 48, false], |
| ["lf_field_list", 32, false], |
| ["mcast_grp", 16, false], |
| ["resubmit_flag", 32, false], |
| ["egress_rid", 16, false], |
| ["checksum_error", 1, false], |
| ["recirculate_flag", 32, false], |
| ["parser_error", 32, false], |
| ["_padding", 5, false] |
| ] |
| }, |
| { |
| "name" : "ethernet_t", |
| "id" : 2, |
| "fields" : [ |
| ["dst_addr", 48, false], |
| ["src_addr", 48, false], |
| ["ether_type", 16, false] |
| ] |
| }, |
| { |
| "name" : "my_tunnel_t", |
| "id" : 3, |
| "fields" : [ |
| ["proto_id", 16, false], |
| ["tun_id", 32, false] |
| ] |
| }, |
| { |
| "name" : "ipv4_t", |
| "id" : 4, |
| "fields" : [ |
| ["version", 4, false], |
| ["ihl", 4, false], |
| ["diffserv", 8, false], |
| ["len", 16, false], |
| ["identification", 16, false], |
| ["flags", 3, false], |
| ["frag_offset", 13, false], |
| ["ttl", 8, false], |
| ["protocol", 8, false], |
| ["hdr_checksum", 16, false], |
| ["src_addr", 32, false], |
| ["dst_addr", 32, false] |
| ] |
| }, |
| { |
| "name" : "packet_out_header_t", |
| "id" : 5, |
| "fields" : [ |
| ["egress_port", 9, false], |
| ["_padding_0", 7, false] |
| ] |
| }, |
| { |
| "name" : "packet_in_header_t", |
| "id" : 6, |
| "fields" : [ |
| ["ingress_port", 9, false], |
| ["_padding_1", 7, false] |
| ] |
| } |
| ], |
| "headers" : [ |
| { |
| "name" : "scalars", |
| "id" : 0, |
| "header_type" : "scalars_0", |
| "metadata" : true, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "standard_metadata", |
| "id" : 1, |
| "header_type" : "standard_metadata", |
| "metadata" : true, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "ethernet", |
| "id" : 2, |
| "header_type" : "ethernet_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "my_tunnel", |
| "id" : 3, |
| "header_type" : "my_tunnel_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "ipv4", |
| "id" : 4, |
| "header_type" : "ipv4_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "packet_out", |
| "id" : 5, |
| "header_type" : "packet_out_header_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "packet_in", |
| "id" : 6, |
| "header_type" : "packet_in_header_t", |
| "metadata" : false, |
| "pi_omit" : true |
| } |
| ], |
| "header_stacks" : [], |
| "header_union_types" : [], |
| "header_unions" : [], |
| "header_union_stacks" : [], |
| "field_lists" : [], |
| "errors" : [ |
| ["NoError", 1], |
| ["PacketTooShort", 2], |
| ["NoMatch", 3], |
| ["StackOutOfBounds", 4], |
| ["HeaderTooShort", 5], |
| ["ParserTimeout", 6] |
| ], |
| "enums" : [], |
| "parsers" : [ |
| { |
| "name" : "parser", |
| "id" : 0, |
| "init_state" : "start", |
| "parse_states" : [ |
| { |
| "name" : "start", |
| "id" : 0, |
| "parser_ops" : [], |
| "transitions" : [ |
| { |
| "type" : "hexstr", |
| "value" : "0x00ff", |
| "mask" : null, |
| "next_state" : "parse_packet_out" |
| }, |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : "parse_ethernet" |
| } |
| ], |
| "transition_key" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| } |
| ] |
| }, |
| { |
| "name" : "parse_packet_out", |
| "id" : 1, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "packet_out" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : "parse_ethernet" |
| } |
| ], |
| "transition_key" : [] |
| }, |
| { |
| "name" : "parse_ethernet", |
| "id" : 2, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "ethernet" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "type" : "hexstr", |
| "value" : "0x1212", |
| "mask" : null, |
| "next_state" : "parse_my_tunnel" |
| }, |
| { |
| "type" : "hexstr", |
| "value" : "0x0800", |
| "mask" : null, |
| "next_state" : "parse_ipv4" |
| }, |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : null |
| } |
| ], |
| "transition_key" : [ |
| { |
| "type" : "field", |
| "value" : ["ethernet", "ether_type"] |
| } |
| ] |
| }, |
| { |
| "name" : "parse_my_tunnel", |
| "id" : 3, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "my_tunnel" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "type" : "hexstr", |
| "value" : "0x0800", |
| "mask" : null, |
| "next_state" : "parse_ipv4" |
| }, |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : null |
| } |
| ], |
| "transition_key" : [ |
| { |
| "type" : "field", |
| "value" : ["my_tunnel", "proto_id"] |
| } |
| ] |
| }, |
| { |
| "name" : "parse_ipv4", |
| "id" : 4, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "ipv4" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : null |
| } |
| ], |
| "transition_key" : [] |
| } |
| ] |
| } |
| ], |
| "parse_vsets" : [], |
| "deparsers" : [ |
| { |
| "name" : "deparser", |
| "id" : 0, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 304, |
| "column" : 8, |
| "source_fragment" : "c_deparser" |
| }, |
| "order" : ["packet_in", "ethernet", "my_tunnel", "ipv4"] |
| } |
| ], |
| "meter_arrays" : [], |
| "counter_arrays" : [ |
| { |
| "name" : "c_ingress.tx_port_counter", |
| "id" : 0, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 152, |
| "column" : 48, |
| "source_fragment" : "tx_port_counter" |
| }, |
| "size" : 255, |
| "is_direct" : false |
| }, |
| { |
| "name" : "c_ingress.rx_port_counter", |
| "id" : 1, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 153, |
| "column" : 48, |
| "source_fragment" : "rx_port_counter" |
| }, |
| "size" : 255, |
| "is_direct" : false |
| }, |
| { |
| "name" : "c_ingress.l2_fwd_counter", |
| "id" : 2, |
| "is_direct" : true, |
| "binding" : "c_ingress.t_l2_fwd", |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 189, |
| "column" : 50, |
| "source_fragment" : "l2_fwd_counter" |
| } |
| } |
| ], |
| "register_arrays" : [], |
| "calculations" : [], |
| "learn_lists" : [], |
| "actions" : [ |
| { |
| "name" : "NoAction", |
| "id" : 0, |
| "runtime_data" : [], |
| "primitives" : [] |
| }, |
| { |
| "name" : "c_ingress.send_to_cpu", |
| "id" : 1, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "hexstr", |
| "value" : "0x00ff" |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 35, |
| "column" : 24, |
| "source_fragment" : "255; ..." |
| } |
| }, |
| { |
| "op" : "add_header", |
| "parameters" : [ |
| { |
| "type" : "header", |
| "value" : "packet_in" |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 160, |
| "column" : 8, |
| "source_fragment" : "hdr.packet_in.setValid()" |
| } |
| }, |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["packet_in", "ingress_port"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 161, |
| "column" : 8, |
| "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "c_ingress.set_out_port", |
| "id" : 2, |
| "runtime_data" : [ |
| { |
| "name" : "port", |
| "bitwidth" : 9 |
| } |
| ], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "runtime_data", |
| "value" : 0 |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 167, |
| "column" : 8, |
| "source_fragment" : "standard_metadata.egress_spec = port" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "c_ingress.set_out_port", |
| "id" : 3, |
| "runtime_data" : [ |
| { |
| "name" : "port", |
| "bitwidth" : 9 |
| } |
| ], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "runtime_data", |
| "value" : 0 |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 167, |
| "column" : 8, |
| "source_fragment" : "standard_metadata.egress_spec = port" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "c_ingress._drop", |
| "id" : 4, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "drop", |
| "parameters" : [], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 171, |
| "column" : 8, |
| "source_fragment" : "mark_to_drop()" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "c_ingress._drop", |
| "id" : 5, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "drop", |
| "parameters" : [], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 171, |
| "column" : 8, |
| "source_fragment" : "mark_to_drop()" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "c_ingress._drop", |
| "id" : 6, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "drop", |
| "parameters" : [], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 171, |
| "column" : 8, |
| "source_fragment" : "mark_to_drop()" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "c_ingress.my_tunnel_ingress", |
| "id" : 7, |
| "runtime_data" : [ |
| { |
| "name" : "tun_id", |
| "bitwidth" : 32 |
| } |
| ], |
| "primitives" : [ |
| { |
| "op" : "add_header", |
| "parameters" : [ |
| { |
| "type" : "header", |
| "value" : "my_tunnel" |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 175, |
| "column" : 8, |
| "source_fragment" : "hdr.my_tunnel.setValid()" |
| } |
| }, |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["my_tunnel", "tun_id"] |
| }, |
| { |
| "type" : "runtime_data", |
| "value" : 0 |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 176, |
| "column" : 8, |
| "source_fragment" : "hdr.my_tunnel.tun_id = tun_id" |
| } |
| }, |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["my_tunnel", "proto_id"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["ethernet", "ether_type"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 177, |
| "column" : 8, |
| "source_fragment" : "hdr.my_tunnel.proto_id = hdr.ethernet.ether_type" |
| } |
| }, |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["ethernet", "ether_type"] |
| }, |
| { |
| "type" : "hexstr", |
| "value" : "0x1212" |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 31, |
| "column" : 34, |
| "source_fragment" : "0x1212; ..." |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "c_ingress.my_tunnel_egress", |
| "id" : 8, |
| "runtime_data" : [ |
| { |
| "name" : "port", |
| "bitwidth" : 9 |
| } |
| ], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "runtime_data", |
| "value" : 0 |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 182, |
| "column" : 8, |
| "source_fragment" : "standard_metadata.egress_spec = port" |
| } |
| }, |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["ethernet", "ether_type"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["my_tunnel", "proto_id"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 183, |
| "column" : 8, |
| "source_fragment" : "hdr.ethernet.ether_type = hdr.my_tunnel.proto_id" |
| } |
| }, |
| { |
| "op" : "remove_header", |
| "parameters" : [ |
| { |
| "type" : "header", |
| "value" : "my_tunnel" |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 184, |
| "column" : 8, |
| "source_fragment" : "hdr.my_tunnel.setInvalid()" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "act", |
| "id" : 9, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["packet_out", "egress_port"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 239, |
| "column" : 12, |
| "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port" |
| } |
| }, |
| { |
| "op" : "remove_header", |
| "parameters" : [ |
| { |
| "type" : "header", |
| "value" : "packet_out" |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 240, |
| "column" : 12, |
| "source_fragment" : "hdr.packet_out.setInvalid()" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "act_0", |
| "id" : 10, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_0"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "b2d", |
| "left" : null, |
| "right" : { |
| "type" : "bool", |
| "value" : true |
| } |
| } |
| } |
| } |
| ] |
| } |
| ] |
| }, |
| { |
| "name" : "act_1", |
| "id" : 11, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_0"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "b2d", |
| "left" : null, |
| "right" : { |
| "type" : "bool", |
| "value" : false |
| } |
| } |
| } |
| } |
| ] |
| } |
| ] |
| }, |
| { |
| "name" : "act_2", |
| "id" : 12, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "hasReturned_0"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "b2d", |
| "left" : null, |
| "right" : { |
| "type" : "bool", |
| "value" : true |
| } |
| } |
| } |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 248, |
| "column" : 16, |
| "source_fragment" : "return" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "act_3", |
| "id" : 13, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "hasReturned_0"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "b2d", |
| "left" : null, |
| "right" : { |
| "type" : "bool", |
| "value" : false |
| } |
| } |
| } |
| } |
| ] |
| } |
| ] |
| }, |
| { |
| "name" : "act_4", |
| "id" : 14, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xffffffff" |
| } |
| } |
| } |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 264, |
| "column" : 34, |
| "source_fragment" : "(bit<32>) standard_metadata.egress_spec" |
| } |
| }, |
| { |
| "op" : "count", |
| "parameters" : [ |
| { |
| "type" : "counter_array", |
| "value" : "c_ingress.tx_port_counter" |
| }, |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 264, |
| "column" : 12, |
| "source_fragment" : "tx_port_counter.count((bit<32>) standard_metadata.egress_spec)" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "act_5", |
| "id" : 15, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_1"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xffffffff" |
| } |
| } |
| } |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 267, |
| "column" : 34, |
| "source_fragment" : "(bit<32>) standard_metadata.ingress_port" |
| } |
| }, |
| { |
| "op" : "count", |
| "parameters" : [ |
| { |
| "type" : "counter_array", |
| "value" : "c_ingress.rx_port_counter" |
| }, |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_1"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 267, |
| "column" : 12, |
| "source_fragment" : "rx_port_counter.count((bit<32>) standard_metadata.ingress_port)" |
| } |
| } |
| ] |
| } |
| ], |
| "pipelines" : [ |
| { |
| "name" : "ingress", |
| "id" : 0, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 146, |
| "column" : 8, |
| "source_fragment" : "c_ingress" |
| }, |
| "init_table" : "tbl_act", |
| "tables" : [ |
| { |
| "name" : "tbl_act", |
| "id" : 0, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [13], |
| "actions" : ["act_3"], |
| "base_default_next" : "node_3", |
| "next_tables" : { |
| "act_3" : "node_3" |
| }, |
| "default_entry" : { |
| "action_id" : 13, |
| "action_const" : true, |
| "action_data" : [], |
| "action_entry_const" : true |
| } |
| }, |
| { |
| "name" : "tbl_act_0", |
| "id" : 1, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [9], |
| "actions" : ["act"], |
| "base_default_next" : "node_15", |
| "next_tables" : { |
| "act" : "node_15" |
| }, |
| "default_entry" : { |
| "action_id" : 9, |
| "action_const" : true, |
| "action_data" : [], |
| "action_entry_const" : true |
| } |
| }, |
| { |
| "name" : "c_ingress.t_l2_fwd", |
| "id" : 2, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 191, |
| "column" : 10, |
| "source_fragment" : "t_l2_fwd" |
| }, |
| "key" : [ |
| { |
| "match_type" : "ternary", |
| "name" : "standard_metadata.ingress_port", |
| "target" : ["standard_metadata", "ingress_port"], |
| "mask" : null |
| }, |
| { |
| "match_type" : "ternary", |
| "name" : "hdr.ethernet.dst_addr", |
| "target" : ["ethernet", "dst_addr"], |
| "mask" : null |
| }, |
| { |
| "match_type" : "ternary", |
| "name" : "hdr.ethernet.src_addr", |
| "target" : ["ethernet", "src_addr"], |
| "mask" : null |
| }, |
| { |
| "match_type" : "ternary", |
| "name" : "hdr.ethernet.ether_type", |
| "target" : ["ethernet", "ether_type"], |
| "mask" : null |
| } |
| ], |
| "match_type" : "ternary", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : true, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [2, 1, 4, 0], |
| "actions" : ["c_ingress.set_out_port", "c_ingress.send_to_cpu", "c_ingress._drop", "NoAction"], |
| "base_default_next" : null, |
| "next_tables" : { |
| "__HIT__" : "tbl_act_1", |
| "__MISS__" : "tbl_act_2" |
| }, |
| "default_entry" : { |
| "action_id" : 0, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "tbl_act_1", |
| "id" : 3, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [10], |
| "actions" : ["act_0"], |
| "base_default_next" : "node_8", |
| "next_tables" : { |
| "act_0" : "node_8" |
| }, |
| "default_entry" : { |
| "action_id" : 10, |
| "action_const" : true, |
| "action_data" : [], |
| "action_entry_const" : true |
| } |
| }, |
| { |
| "name" : "tbl_act_2", |
| "id" : 4, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [11], |
| "actions" : ["act_1"], |
| "base_default_next" : "node_8", |
| "next_tables" : { |
| "act_1" : "node_8" |
| }, |
| "default_entry" : { |
| "action_id" : 11, |
| "action_const" : true, |
| "action_data" : [], |
| "action_entry_const" : true |
| } |
| }, |
| { |
| "name" : "tbl_act_3", |
| "id" : 5, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [12], |
| "actions" : ["act_2"], |
| "base_default_next" : "node_10", |
| "next_tables" : { |
| "act_2" : "node_10" |
| }, |
| "default_entry" : { |
| "action_id" : 12, |
| "action_const" : true, |
| "action_data" : [], |
| "action_entry_const" : true |
| } |
| }, |
| { |
| "name" : "c_ingress.t_tunnel_ingress", |
| "id" : 6, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 208, |
| "column" : 10, |
| "source_fragment" : "t_tunnel_ingress" |
| }, |
| "key" : [ |
| { |
| "match_type" : "lpm", |
| "name" : "hdr.ipv4.dst_addr", |
| "target" : ["ipv4", "dst_addr"], |
| "mask" : null |
| } |
| ], |
| "match_type" : "lpm", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [7, 5], |
| "actions" : ["c_ingress.my_tunnel_ingress", "c_ingress._drop"], |
| "base_default_next" : "node_13", |
| "next_tables" : { |
| "c_ingress.my_tunnel_ingress" : "node_13", |
| "c_ingress._drop" : "node_13" |
| }, |
| "default_entry" : { |
| "action_id" : 5, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "c_ingress.t_tunnel_fwd", |
| "id" : 7, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 219, |
| "column" : 10, |
| "source_fragment" : "t_tunnel_fwd" |
| }, |
| "key" : [ |
| { |
| "match_type" : "exact", |
| "name" : "hdr.my_tunnel.tun_id", |
| "target" : ["my_tunnel", "tun_id"], |
| "mask" : null |
| } |
| ], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [3, 8, 6], |
| "actions" : ["c_ingress.set_out_port", "c_ingress.my_tunnel_egress", "c_ingress._drop"], |
| "base_default_next" : "node_15", |
| "next_tables" : { |
| "c_ingress.set_out_port" : "node_15", |
| "c_ingress.my_tunnel_egress" : "node_15", |
| "c_ingress._drop" : "node_15" |
| }, |
| "default_entry" : { |
| "action_id" : 6, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "tbl_act_4", |
| "id" : 8, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [14], |
| "actions" : ["act_4"], |
| "base_default_next" : "node_18", |
| "next_tables" : { |
| "act_4" : "node_18" |
| }, |
| "default_entry" : { |
| "action_id" : 14, |
| "action_const" : true, |
| "action_data" : [], |
| "action_entry_const" : true |
| } |
| }, |
| { |
| "name" : "tbl_act_5", |
| "id" : 9, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [15], |
| "actions" : ["act_5"], |
| "base_default_next" : null, |
| "next_tables" : { |
| "act_5" : null |
| }, |
| "default_entry" : { |
| "action_id" : 15, |
| "action_const" : true, |
| "action_data" : [], |
| "action_entry_const" : true |
| } |
| } |
| ], |
| "action_profiles" : [], |
| "conditionals" : [ |
| { |
| "name" : "node_3", |
| "id" : 0, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 234, |
| "column" : 12, |
| "source_fragment" : "standard_metadata.ingress_port == CPU_PORT" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "==", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0x00ff" |
| } |
| } |
| }, |
| "true_next" : "tbl_act_0", |
| "false_next" : "c_ingress.t_l2_fwd" |
| }, |
| { |
| "name" : "node_8", |
| "id" : 1, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "d2b", |
| "left" : null, |
| "right" : { |
| "type" : "field", |
| "value" : ["scalars", "tmp_0"] |
| } |
| } |
| }, |
| "true_next" : "tbl_act_3", |
| "false_next" : "node_10" |
| }, |
| { |
| "name" : "node_10", |
| "id" : 2, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "not", |
| "left" : null, |
| "right" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "d2b", |
| "left" : null, |
| "right" : { |
| "type" : "field", |
| "value" : ["scalars", "hasReturned_0"] |
| } |
| } |
| } |
| } |
| }, |
| "true_next" : "node_11", |
| "false_next" : "node_15" |
| }, |
| { |
| "name" : "node_11", |
| "id" : 3, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 251, |
| "column" : 16, |
| "source_fragment" : "hdr.ipv4.isValid() && !hdr.my_tunnel.isValid()" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "and", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "d2b", |
| "left" : null, |
| "right" : { |
| "type" : "field", |
| "value" : ["ipv4", "$valid$"] |
| } |
| } |
| }, |
| "right" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "not", |
| "left" : null, |
| "right" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "d2b", |
| "left" : null, |
| "right" : { |
| "type" : "field", |
| "value" : ["my_tunnel", "$valid$"] |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "true_next" : "c_ingress.t_tunnel_ingress", |
| "false_next" : "node_13" |
| }, |
| { |
| "name" : "node_13", |
| "id" : 4, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 256, |
| "column" : 16, |
| "source_fragment" : "hdr.my_tunnel.isValid()" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "d2b", |
| "left" : null, |
| "right" : { |
| "type" : "field", |
| "value" : ["my_tunnel", "$valid$"] |
| } |
| } |
| }, |
| "true_next" : "c_ingress.t_tunnel_fwd", |
| "false_next" : "node_15" |
| }, |
| { |
| "name" : "node_15", |
| "id" : 5, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "not", |
| "left" : null, |
| "right" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "d2b", |
| "left" : null, |
| "right" : { |
| "type" : "field", |
| "value" : ["scalars", "hasReturned_0"] |
| } |
| } |
| } |
| } |
| }, |
| "false_next" : null, |
| "true_next" : "node_16" |
| }, |
| { |
| "name" : "node_16", |
| "id" : 6, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 263, |
| "column" : 12, |
| "source_fragment" : "standard_metadata.egress_spec < 255" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "<", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0x00ff" |
| } |
| } |
| }, |
| "true_next" : "tbl_act_4", |
| "false_next" : "node_18" |
| }, |
| { |
| "name" : "node_18", |
| "id" : 7, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 266, |
| "column" : 12, |
| "source_fragment" : "standard_metadata.ingress_port < 255" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "<", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0x00ff" |
| } |
| } |
| }, |
| "false_next" : null, |
| "true_next" : "tbl_act_5" |
| } |
| ] |
| }, |
| { |
| "name" : "egress", |
| "id" : 1, |
| "source_info" : { |
| "filename" : "mytunnel.p4", |
| "line" : 276, |
| "column" : 8, |
| "source_fragment" : "c_egress" |
| }, |
| "init_table" : null, |
| "tables" : [], |
| "action_profiles" : [], |
| "conditionals" : [] |
| } |
| ], |
| "checksums" : [], |
| "force_arith" : [], |
| "extern_instances" : [], |
| "field_aliases" : [ |
| [ |
| "queueing_metadata.enq_timestamp", |
| ["standard_metadata", "enq_timestamp"] |
| ], |
| [ |
| "queueing_metadata.enq_qdepth", |
| ["standard_metadata", "enq_qdepth"] |
| ], |
| [ |
| "queueing_metadata.deq_timedelta", |
| ["standard_metadata", "deq_timedelta"] |
| ], |
| [ |
| "queueing_metadata.deq_qdepth", |
| ["standard_metadata", "deq_qdepth"] |
| ], |
| [ |
| "intrinsic_metadata.ingress_global_timestamp", |
| ["standard_metadata", "ingress_global_timestamp"] |
| ], |
| [ |
| "intrinsic_metadata.egress_global_timestamp", |
| ["standard_metadata", "egress_global_timestamp"] |
| ], |
| [ |
| "intrinsic_metadata.lf_field_list", |
| ["standard_metadata", "lf_field_list"] |
| ], |
| [ |
| "intrinsic_metadata.mcast_grp", |
| ["standard_metadata", "mcast_grp"] |
| ], |
| [ |
| "intrinsic_metadata.resubmit_flag", |
| ["standard_metadata", "resubmit_flag"] |
| ], |
| [ |
| "intrinsic_metadata.egress_rid", |
| ["standard_metadata", "egress_rid"] |
| ], |
| [ |
| "intrinsic_metadata.recirculate_flag", |
| ["standard_metadata", "recirculate_flag"] |
| ] |
| ], |
| "program" : "mytunnel.p4", |
| "__meta__" : { |
| "version" : [2, 18], |
| "compiler" : "https://github.com/p4lang/p4c" |
| } |
| } |