| { |
| "program" : "wcmp.p4", |
| "__meta__" : { |
| "version" : [2, 7], |
| "compiler" : "https://github.com/p4lang/p4c" |
| }, |
| "header_types" : [ |
| { |
| "name" : "scalars_0", |
| "id" : 0, |
| "fields" : [ |
| ["tmp_0", 104, false], |
| ["tmp", 8, false], |
| ["tmp_1", 32, false], |
| ["tmp_2", 32, false] |
| ] |
| }, |
| { |
| "name" : "ethernet_t", |
| "id" : 1, |
| "fields" : [ |
| ["dstAddr", 48, false], |
| ["srcAddr", 48, false], |
| ["etherType", 16, false] |
| ] |
| }, |
| { |
| "name" : "ipv4_t", |
| "id" : 2, |
| "fields" : [ |
| ["version", 4, false], |
| ["ihl", 4, false], |
| ["diffserv", 8, false], |
| ["totalLen", 16, false], |
| ["identification", 16, false], |
| ["flags", 3, false], |
| ["fragOffset", 13, false], |
| ["ttl", 8, false], |
| ["protocol", 8, false], |
| ["hdrChecksum", 16, false], |
| ["srcAddr", 32, false], |
| ["dstAddr", 32, false] |
| ] |
| }, |
| { |
| "name" : "packet_in_t", |
| "id" : 3, |
| "fields" : [ |
| ["ingress_port", 9, false], |
| ["_padding", 7, false] |
| ] |
| }, |
| { |
| "name" : "packet_out_t", |
| "id" : 4, |
| "fields" : [ |
| ["egress_port", 9, false], |
| ["_padding_0", 7, false] |
| ] |
| }, |
| { |
| "name" : "tcp_t", |
| "id" : 5, |
| "fields" : [ |
| ["srcPort", 16, false], |
| ["dstPort", 16, false], |
| ["seqNo", 32, false], |
| ["ackNo", 32, false], |
| ["dataOffset", 4, false], |
| ["res", 3, false], |
| ["ecn", 3, false], |
| ["ctrl", 6, false], |
| ["window", 16, false], |
| ["checksum", 16, false], |
| ["urgentPtr", 16, false] |
| ] |
| }, |
| { |
| "name" : "udp_t", |
| "id" : 6, |
| "fields" : [ |
| ["srcPort", 16, false], |
| ["dstPort", 16, false], |
| ["length_", 16, false], |
| ["checksum", 16, false] |
| ] |
| }, |
| { |
| "name" : "wcmp_meta_t", |
| "id" : 7, |
| "fields" : [ |
| ["groupId", 16, false], |
| ["numBits", 8, false], |
| ["selector", 32, false] |
| ] |
| }, |
| { |
| "name" : "standard_metadata", |
| "id" : 8, |
| "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], |
| ["lf_field_list", 32, false], |
| ["mcast_grp", 16, false], |
| ["resubmit_flag", 1, false], |
| ["egress_rid", 16, false], |
| ["_padding_1", 5, 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" : "ipv4", |
| "id" : 3, |
| "header_type" : "ipv4_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "packet_in_hdr", |
| "id" : 4, |
| "header_type" : "packet_in_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "packet_out_hdr", |
| "id" : 5, |
| "header_type" : "packet_out_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "tcp", |
| "id" : 6, |
| "header_type" : "tcp_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "udp", |
| "id" : 7, |
| "header_type" : "udp_t", |
| "metadata" : false, |
| "pi_omit" : true |
| }, |
| { |
| "name" : "wcmp_meta", |
| "id" : 8, |
| "header_type" : "wcmp_meta_t", |
| "metadata" : true, |
| "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" : "default_parser", |
| "id" : 0, |
| "parser_ops" : [], |
| "transitions" : [ |
| { |
| "value" : "0x00ff", |
| "mask" : null, |
| "next_state" : "parse_pkt_out" |
| }, |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : "parse_ethernet" |
| } |
| ], |
| "transition_key" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| } |
| ] |
| }, |
| { |
| "name" : "parse_ethernet", |
| "id" : 1, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "ethernet" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "0x0800", |
| "mask" : null, |
| "next_state" : "parse_ipv4" |
| }, |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : null |
| } |
| ], |
| "transition_key" : [ |
| { |
| "type" : "field", |
| "value" : ["ethernet", "etherType"] |
| } |
| ] |
| }, |
| { |
| "name" : "parse_ipv4", |
| "id" : 2, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "ipv4" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "0x000006", |
| "mask" : null, |
| "next_state" : "parse_tcp" |
| }, |
| { |
| "value" : "0x000011", |
| "mask" : null, |
| "next_state" : "parse_udp" |
| }, |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : null |
| } |
| ], |
| "transition_key" : [ |
| { |
| "type" : "field", |
| "value" : ["ipv4", "fragOffset"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["ipv4", "protocol"] |
| } |
| ] |
| }, |
| { |
| "name" : "parse_pkt_in", |
| "id" : 3, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "packet_in_hdr" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : "parse_ethernet" |
| } |
| ], |
| "transition_key" : [] |
| }, |
| { |
| "name" : "parse_pkt_out", |
| "id" : 4, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "packet_out_hdr" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : "parse_ethernet" |
| } |
| ], |
| "transition_key" : [] |
| }, |
| { |
| "name" : "parse_tcp", |
| "id" : 5, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "tcp" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : null |
| } |
| ], |
| "transition_key" : [] |
| }, |
| { |
| "name" : "parse_udp", |
| "id" : 6, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "regular", |
| "value" : "udp" |
| } |
| ], |
| "op" : "extract" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : null |
| } |
| ], |
| "transition_key" : [] |
| }, |
| { |
| "name" : "start", |
| "id" : 7, |
| "parser_ops" : [ |
| { |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_0"] |
| }, |
| { |
| "type" : "lookahead", |
| "value" : [0, 104] |
| } |
| ], |
| "op" : "set" |
| }, |
| { |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "field", |
| "value" : ["scalars", "tmp_0"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xff" |
| } |
| } |
| } |
| } |
| ], |
| "op" : "set" |
| } |
| ], |
| "transitions" : [ |
| { |
| "value" : "0x00", |
| "mask" : null, |
| "next_state" : "parse_pkt_in" |
| }, |
| { |
| "value" : "default", |
| "mask" : null, |
| "next_state" : "default_parser" |
| } |
| ], |
| "transition_key" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp"] |
| } |
| ] |
| } |
| ] |
| } |
| ], |
| "deparsers" : [ |
| { |
| "name" : "deparser", |
| "id" : 0, |
| "order" : ["packet_out_hdr", "packet_in_hdr", "ethernet", "ipv4", "udp", "tcp"] |
| } |
| ], |
| "meter_arrays" : [], |
| "counter_arrays" : [ |
| { |
| "name" : "table0_counter", |
| "id" : 0, |
| "is_direct" : true, |
| "binding" : "table0" |
| }, |
| { |
| "name" : "wcmp_group_table_counter", |
| "id" : 1, |
| "is_direct" : true, |
| "binding" : "wcmp_group_table" |
| }, |
| { |
| "name" : "egress_port_counter", |
| "id" : 2, |
| "size" : 254, |
| "is_direct" : false |
| }, |
| { |
| "name" : "ingress_port_counter", |
| "id" : 3, |
| "size" : 254, |
| "is_direct" : false |
| } |
| ], |
| "register_arrays" : [], |
| "calculations" : [ |
| { |
| "name" : "calc", |
| "id" : 0, |
| "algo" : "crc32", |
| "input" : [ |
| { |
| "type" : "field", |
| "value" : ["ipv4", "srcAddr"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["ipv4", "dstAddr"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["ipv4", "protocol"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["tcp", "srcPort"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["tcp", "dstPort"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["udp", "srcPort"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["udp", "dstPort"] |
| } |
| ] |
| } |
| ], |
| "learn_lists" : [], |
| "actions" : [ |
| { |
| "name" : "add_packet_in_hdr", |
| "id" : 0, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "add_header", |
| "parameters" : [ |
| { |
| "type" : "header", |
| "value" : "packet_in_hdr" |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 25, |
| "column" : 4, |
| "source_fragment" : "add_header(packet_in_hdr)" |
| } |
| }, |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["packet_in_hdr", "ingress_port"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 26, |
| "column" : 4, |
| "source_fragment" : "modify_field(packet_in_hdr.ingress_port, standard_metadata.ingress_port)" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "NoAction", |
| "id" : 1, |
| "runtime_data" : [], |
| "primitives" : [] |
| }, |
| { |
| "name" : "NoAction", |
| "id" : 2, |
| "runtime_data" : [], |
| "primitives" : [] |
| }, |
| { |
| "name" : "NoAction", |
| "id" : 3, |
| "runtime_data" : [], |
| "primitives" : [] |
| }, |
| { |
| "name" : "wcmp_set_selector", |
| "id" : 4, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["wcmp_meta", "selector"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "<<", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "+", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "<<", |
| "left" : { |
| "type" : "hexstr", |
| "value" : "0x01" |
| }, |
| "right" : { |
| "type" : "field", |
| "value" : ["wcmp_meta", "numBits"] |
| } |
| } |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xff" |
| } |
| } |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xff" |
| } |
| } |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xff" |
| } |
| } |
| }, |
| "right" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "-", |
| "left" : { |
| "type" : "hexstr", |
| "value" : "0x20" |
| }, |
| "right" : { |
| "type" : "field", |
| "value" : ["wcmp_meta", "numBits"] |
| } |
| } |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xff" |
| } |
| } |
| } |
| } |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xff" |
| } |
| } |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xffffffff" |
| } |
| } |
| } |
| } |
| ], |
| "source_info" : { |
| "filename" : "wcmp.p4", |
| "line" : 44, |
| "column" : 4, |
| "source_fragment" : "modify_field(wcmp_meta.selector, ..." |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "set_egress_port", |
| "id" : 5, |
| "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" : "include/actions.p4", |
| "line" : 5, |
| "column" : 23, |
| "source_fragment" : "port) { ..." |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "wcmp_group", |
| "id" : 6, |
| "runtime_data" : [ |
| { |
| "name" : "groupId", |
| "bitwidth" : 16 |
| } |
| ], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["wcmp_meta", "groupId"] |
| }, |
| { |
| "type" : "runtime_data", |
| "value" : 0 |
| } |
| ], |
| "source_info" : { |
| "filename" : "wcmp.p4", |
| "line" : 38, |
| "column" : 18, |
| "source_fragment" : "groupId) { ..." |
| } |
| }, |
| { |
| "op" : "modify_field_with_hash_based_offset", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["wcmp_meta", "numBits"] |
| }, |
| { |
| "type" : "hexstr", |
| "value" : "0x00000002" |
| }, |
| { |
| "type" : "calculation", |
| "value" : "calc" |
| }, |
| { |
| "type" : "hexstr", |
| "value" : "0x000000000000001e" |
| } |
| ], |
| "source_info" : { |
| "filename" : "wcmp.p4", |
| "line" : 40, |
| "column" : 4, |
| "source_fragment" : "modify_field_with_hash_based_offset(wcmp_meta.numBits, 2, wcmp_hash, (32 - 2))" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "send_to_cpu", |
| "id" : 7, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "hexstr", |
| "value" : "0x00ff" |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/actions.p4", |
| "line" : 21, |
| "column" : 4, |
| "source_fragment" : "modify_field(standard_metadata.egress_spec, 255)" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "_drop", |
| "id" : 8, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "hexstr", |
| "value" : "0x01ff" |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/actions.p4", |
| "line" : 13, |
| "column" : 4, |
| "source_fragment" : "modify_field(standard_metadata.egress_spec, 511)" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "set_egress_port", |
| "id" : 9, |
| "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" : "include/actions.p4", |
| "line" : 5, |
| "column" : 23, |
| "source_fragment" : "port) { ..." |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "_packet_out", |
| "id" : 10, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| { |
| "type" : "field", |
| "value" : ["packet_out_hdr", "egress_port"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 7, |
| "column" : 4, |
| "source_fragment" : "modify_field(standard_metadata.egress_spec, packet_out_hdr.egress_port)" |
| } |
| }, |
| { |
| "op" : "remove_header", |
| "parameters" : [ |
| { |
| "type" : "header", |
| "value" : "packet_out_hdr" |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 8, |
| "column" : 4, |
| "source_fragment" : "remove_header(packet_out_hdr)" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "count_egress", |
| "id" : 11, |
| "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", "egress_spec"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xffffffff" |
| } |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "op" : "count", |
| "parameters" : [ |
| { |
| "type" : "counter_array", |
| "value" : "egress_port_counter" |
| }, |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_1"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/port_counters.p4", |
| "line" : 22, |
| "column" : 4, |
| "source_fragment" : "count(egress_port_counter, standard_metadata.egress_spec)" |
| } |
| } |
| ] |
| }, |
| { |
| "name" : "count_ingress", |
| "id" : 12, |
| "runtime_data" : [], |
| "primitives" : [ |
| { |
| "op" : "assign", |
| "parameters" : [ |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_2"] |
| }, |
| { |
| "type" : "expression", |
| "value" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "&", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0xffffffff" |
| } |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "op" : "count", |
| "parameters" : [ |
| { |
| "type" : "counter_array", |
| "value" : "ingress_port_counter" |
| }, |
| { |
| "type" : "field", |
| "value" : ["scalars", "tmp_2"] |
| } |
| ], |
| "source_info" : { |
| "filename" : "include/port_counters.p4", |
| "line" : 18, |
| "column" : 4, |
| "source_fragment" : "count(ingress_port_counter, standard_metadata.ingress_port)" |
| } |
| } |
| ] |
| } |
| ], |
| "pipelines" : [ |
| { |
| "name" : "ingress", |
| "id" : 0, |
| "init_table" : "node_2", |
| "tables" : [ |
| { |
| "name" : "ingress_pkt", |
| "id" : 0, |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 11, |
| "column" : 0, |
| "source_fragment" : "table ingress_pkt { ..." |
| }, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [10], |
| "actions" : ["_packet_out"], |
| "base_default_next" : "node_4", |
| "next_tables" : { |
| "_packet_out" : "node_4" |
| }, |
| "default_entry" : { |
| "action_id" : 10, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "table0", |
| "id" : 1, |
| "source_info" : { |
| "filename" : "wcmp.p4", |
| "line" : 48, |
| "column" : 0, |
| "source_fragment" : "table table0 { ..." |
| }, |
| "key" : [ |
| { |
| "match_type" : "ternary", |
| "target" : ["standard_metadata", "ingress_port"], |
| "mask" : null |
| }, |
| { |
| "match_type" : "ternary", |
| "target" : ["ethernet", "dstAddr"], |
| "mask" : null |
| }, |
| { |
| "match_type" : "ternary", |
| "target" : ["ethernet", "srcAddr"], |
| "mask" : null |
| }, |
| { |
| "match_type" : "ternary", |
| "target" : ["ethernet", "etherType"], |
| "mask" : null |
| } |
| ], |
| "match_type" : "ternary", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : true, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [5, 6, 7, 8, 1], |
| "actions" : ["set_egress_port", "wcmp_group", "send_to_cpu", "_drop", "NoAction"], |
| "base_default_next" : "node_8", |
| "next_tables" : { |
| "wcmp_group" : "wcmp_set_selector_table", |
| "set_egress_port" : "node_8", |
| "send_to_cpu" : "node_8", |
| "_drop" : "node_8", |
| "NoAction" : "node_8" |
| }, |
| "default_entry" : { |
| "action_id" : 1, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "wcmp_set_selector_table", |
| "id" : 2, |
| "source_info" : { |
| "filename" : "wcmp.p4", |
| "line" : 64, |
| "column" : 0, |
| "source_fragment" : "table wcmp_set_selector_table { ..." |
| }, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [4, 3], |
| "actions" : ["wcmp_set_selector", "NoAction"], |
| "base_default_next" : "node_8", |
| "next_tables" : { |
| "wcmp_set_selector" : "wcmp_group_table", |
| "NoAction" : "node_8" |
| }, |
| "default_entry" : { |
| "action_id" : 3, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "wcmp_group_table", |
| "id" : 3, |
| "source_info" : { |
| "filename" : "wcmp.p4", |
| "line" : 70, |
| "column" : 0, |
| "source_fragment" : "table wcmp_group_table { ..." |
| }, |
| "key" : [ |
| { |
| "match_type" : "exact", |
| "target" : ["wcmp_meta", "groupId"], |
| "mask" : null |
| }, |
| { |
| "match_type" : "lpm", |
| "target" : ["wcmp_meta", "selector"], |
| "mask" : null |
| } |
| ], |
| "match_type" : "lpm", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : true, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [9, 2], |
| "actions" : ["set_egress_port", "NoAction"], |
| "base_default_next" : "node_8", |
| "next_tables" : { |
| "set_egress_port" : "node_8", |
| "NoAction" : "node_8" |
| }, |
| "default_entry" : { |
| "action_id" : 2, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "ingress_port_count_table", |
| "id" : 4, |
| "source_info" : { |
| "filename" : "include/port_counters.p4", |
| "line" : 25, |
| "column" : 0, |
| "source_fragment" : "table ingress_port_count_table { ..." |
| }, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [12], |
| "actions" : ["count_ingress"], |
| "base_default_next" : "egress_port_count_table", |
| "next_tables" : { |
| "count_ingress" : "egress_port_count_table" |
| }, |
| "default_entry" : { |
| "action_id" : 12, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| }, |
| { |
| "name" : "egress_port_count_table", |
| "id" : 5, |
| "source_info" : { |
| "filename" : "include/port_counters.p4", |
| "line" : 30, |
| "column" : 0, |
| "source_fragment" : "table egress_port_count_table { ..." |
| }, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [11], |
| "actions" : ["count_egress"], |
| "base_default_next" : null, |
| "next_tables" : { |
| "count_egress" : null |
| }, |
| "default_entry" : { |
| "action_id" : 11, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| } |
| ], |
| "action_profiles" : [], |
| "conditionals" : [ |
| { |
| "name" : "node_2", |
| "id" : 0, |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 19, |
| "column" : 8, |
| "source_fragment" : "valid(packet_out_hdr)" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "==", |
| "left" : { |
| "type" : "field", |
| "value" : ["packet_out_hdr", "$valid$"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0x01" |
| } |
| } |
| }, |
| "true_next" : "ingress_pkt", |
| "false_next" : "node_4" |
| }, |
| { |
| "name" : "node_4", |
| "id" : 1, |
| "source_info" : { |
| "filename" : "wcmp.p4", |
| "line" : 94, |
| "column" : 12, |
| "source_fragment" : "valid(packet_out_hdr)" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "!=", |
| "left" : { |
| "type" : "field", |
| "value" : ["packet_out_hdr", "$valid$"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0x01" |
| } |
| } |
| }, |
| "true_next" : "table0", |
| "false_next" : "node_8" |
| }, |
| { |
| "name" : "node_8", |
| "id" : 2, |
| "source_info" : { |
| "filename" : "include/port_counters.p4", |
| "line" : 36, |
| "column" : 38, |
| "source_fragment" : "<" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "<", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "egress_spec"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0x00fe" |
| } |
| } |
| }, |
| "false_next" : null, |
| "true_next" : "ingress_port_count_table" |
| } |
| ] |
| }, |
| { |
| "name" : "egress", |
| "id" : 1, |
| "init_table" : "node_13", |
| "tables" : [ |
| { |
| "name" : "egress_pkt", |
| "id" : 6, |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 29, |
| "column" : 0, |
| "source_fragment" : "table egress_pkt { ..." |
| }, |
| "key" : [], |
| "match_type" : "exact", |
| "type" : "simple", |
| "max_size" : 1024, |
| "with_counters" : false, |
| "support_timeout" : false, |
| "direct_meters" : null, |
| "action_ids" : [0], |
| "actions" : ["add_packet_in_hdr"], |
| "base_default_next" : null, |
| "next_tables" : { |
| "add_packet_in_hdr" : null |
| }, |
| "default_entry" : { |
| "action_id" : 0, |
| "action_const" : false, |
| "action_data" : [], |
| "action_entry_const" : false |
| } |
| } |
| ], |
| "action_profiles" : [], |
| "conditionals" : [ |
| { |
| "name" : "node_13", |
| "id" : 3, |
| "source_info" : { |
| "filename" : "include/packet_io.p4", |
| "line" : 40, |
| "column" : 39, |
| "source_fragment" : "==" |
| }, |
| "expression" : { |
| "type" : "expression", |
| "value" : { |
| "op" : "==", |
| "left" : { |
| "type" : "field", |
| "value" : ["standard_metadata", "ingress_port"] |
| }, |
| "right" : { |
| "type" : "hexstr", |
| "value" : "0x00ff" |
| } |
| } |
| }, |
| "false_next" : null, |
| "true_next" : "egress_pkt" |
| } |
| ] |
| } |
| ], |
| "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.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"] |
| ] |
| ] |
| } |