{ "header_types": [ { "name": "standard_metadata_t", "id": 0, "fields": [ [ "ingress_port", 9 ], [ "packet_length", 32 ], [ "egress_spec", 9 ], [ "egress_port", 9 ], [ "egress_instance", 32 ], [ "instance_type", 32 ], [ "clone_spec", 32 ], [ "_padding", 5 ] ], "length_exp": null, "max_length": null }, { "name": "ethernet_t", "id": 1, "fields": [ [ "dstAddr", 48 ], [ "srcAddr", 48 ], [ "etherType", 16 ] ], "length_exp": null, "max_length": null }, { "name": "ipv4_t", "id": 2, "fields": [ [ "version", 4 ], [ "ihl", 4 ], [ "diffserv", 8 ], [ "totalLen", 16 ], [ "identification", 16 ], [ "flags", 3 ], [ "fragOffset", 13 ], [ "ttl", 8 ], [ "protocol", 8 ], [ "hdrChecksum", 16 ], [ "srcAddr", 32 ], [ "dstAddr", 32 ] ], "length_exp": null, "max_length": null }, { "name": "routing_metadata_t", "id": 3, "fields": [ [ "nhop_ipv4", 32 ] ], "length_exp": null, "max_length": null } ], "headers": [ { "name": "standard_metadata", "id": 0, "header_type": "standard_metadata_t", "metadata": true }, { "name": "ethernet", "id": 1, "header_type": "ethernet_t", "metadata": false }, { "name": "ipv4", "id": 2, "header_type": "ipv4_t", "metadata": false }, { "name": "routing_metadata", "id": 3, "header_type": "routing_metadata_t", "metadata": true } ], "header_stacks": [], "parsers": [ { "name": "parser", "id": 0, "init_state": "start", "parse_states": [ { "name": "start", "id": 0, "parser_ops": [], "transition_key": [], "transitions": [ { "value": "default", "mask": null, "next_state": "parse_ethernet" } ] }, { "name": "parse_ethernet", "id": 1, "parser_ops": [ { "op": "extract", "parameters": [ { "type": "regular", "value": "ethernet" } ] } ], "transition_key": [ { "type": "field", "value": [ "ethernet", "etherType" ] } ], "transitions": [ { "value": "0x0800", "mask": null, "next_state": "parse_ipv4" }, { "value": "default", "mask": null, "next_state": null } ] }, { "name": "parse_ipv4", "id": 2, "parser_ops": [ { "op": "extract", "parameters": [ { "type": "regular", "value": "ipv4" } ] } ], "transition_key": [], "transitions": [ { "value": "default", "mask": null, "next_state": null } ] } ] } ], "deparsers": [ { "name": "deparser", "id": 0, "order": [ "ethernet", "ipv4" ] } ], "meter_arrays": [], "actions": [ { "name": "set_nhop", "id": 0, "runtime_data": [ { "name": "nhop_ipv4", "bitwidth": 32 }, { "name": "port", "bitwidth": 9 } ], "primitives": [ { "op": "modify_field", "parameters": [ { "type": "field", "value": [ "routing_metadata", "nhop_ipv4" ] }, { "type": "runtime_data", "value": 0 } ] }, { "op": "modify_field", "parameters": [ { "type": "field", "value": [ "standard_metadata", "egress_spec" ] }, { "type": "runtime_data", "value": 1 } ] }, { "op": "modify_field", "parameters": [ { "type": "field", "value": [ "ipv4", "ttl" ] }, { "type": "expression", "value": { "type": "expression", "value": { "op": "-", "left": { "type": "field", "value": [ "ipv4", "ttl" ] }, "right": { "type": "hexstr", "value": "0x1" } } } } ] } ] }, { "name": "set_dmac", "id": 1, "runtime_data": [ { "name": "dmac", "bitwidth": 48 } ], "primitives": [ { "op": "modify_field", "parameters": [ { "type": "field", "value": [ "ethernet", "dstAddr" ] }, { "type": "runtime_data", "value": 0 } ] } ] }, { "name": "rewrite_mac", "id": 2, "runtime_data": [ { "name": "smac", "bitwidth": 48 } ], "primitives": [ { "op": "modify_field", "parameters": [ { "type": "field", "value": [ "ethernet", "srcAddr" ] }, { "type": "runtime_data", "value": 0 } ] } ] }, { "name": "do_drop_expired", "id": 3, "runtime_data": [ { "name": "testp", "bitwidth": 2 } ], "primitives": [ { "op": "modify_field", "parameters": [ { "type": "register", "value": [ "drops_register", { "type": "hexstr", "value": "0x0" } ] }, { "type": "expression", "value": { "type": "expression", "value": { "op": "+", "left": { "type": "register", "value": [ "drops_register", { "type": "hexstr", "value": "0x0" } ] }, "right": { "type": "expression", "value": { "op": "?", "cond": { "type": "expression", "value": { "op": "==", "left": { "type": "runtime_data", "value": 0 }, "right": { "type": "hexstr", "value": "0x1" } } }, "left": { "type": "hexstr", "value": "0x1" }, "right": { "type": "hexstr", "value": "0x0" } } } } } } ] }, { "op": "drop", "parameters": [] } ] }, { "name": "_drop", "id": 4, "runtime_data": [], "primitives": [ { "op": "drop", "parameters": [] } ] } ], "pipelines": [ { "name": "ingress", "id": 0, "init_table": "_condition_0", "tables": [ { "name": "drop_expired", "id": 0, "match_type": "exact", "type": "simple", "max_size": 16384, "with_counters": false, "direct_meters": null, "support_timeout": false, "key": [], "actions": [ "do_drop_expired" ], "next_tables": { "do_drop_expired": null }, "base_default_next": null }, { "name": "ipv4_lpm", "id": 1, "match_type": "lpm", "type": "simple", "max_size": 1024, "with_counters": false, "direct_meters": null, "support_timeout": false, "key": [ { "match_type": "lpm", "target": [ "ipv4", "dstAddr" ], "mask": null } ], "actions": [ "set_nhop", "_drop" ], "next_tables": { "set_nhop": "forward", "_drop": "forward" }, "base_default_next": "forward" }, { "name": "forward", "id": 2, "match_type": "exact", "type": "simple", "max_size": 512, "with_counters": false, "direct_meters": null, "support_timeout": false, "key": [ { "match_type": "exact", "target": [ "routing_metadata", "nhop_ipv4" ], "mask": null } ], "actions": [ "set_dmac", "_drop" ], "next_tables": { "set_dmac": null, "_drop": null }, "base_default_next": null } ], "conditionals": [ { "name": "_condition_0", "id": 0, "expression": { "type": "expression", "value": { "op": "valid", "left": null, "right": { "type": "header", "value": "ipv4" } } }, "true_next": "_condition_1", "false_next": null }, { "name": "_condition_1", "id": 1, "expression": { "type": "expression", "value": { "op": ">", "left": { "type": "field", "value": [ "ipv4", "ttl" ] }, "right": { "type": "hexstr", "value": "0x1" } } }, "true_next": "ipv4_lpm", "false_next": "drop_expired" } ] }, { "name": "egress", "id": 1, "init_table": "send_frame", "tables": [ { "name": "send_frame", "id": 3, "match_type": "exact", "type": "simple", "max_size": 256, "with_counters": false, "direct_meters": null, "support_timeout": false, "key": [ { "match_type": "exact", "target": [ "standard_metadata", "egress_port" ], "mask": null } ], "actions": [ "rewrite_mac", "_drop" ], "next_tables": { "rewrite_mac": null, "_drop": null }, "base_default_next": null } ], "conditionals": [] } ], "calculations": [ { "name": "ipv4_checksum", "id": 0, "input": [ { "type": "field", "value": [ "ipv4", "version" ] }, { "type": "field", "value": [ "ipv4", "ihl" ] }, { "type": "field", "value": [ "ipv4", "diffserv" ] }, { "type": "field", "value": [ "ipv4", "totalLen" ] }, { "type": "field", "value": [ "ipv4", "identification" ] }, { "type": "field", "value": [ "ipv4", "flags" ] }, { "type": "field", "value": [ "ipv4", "fragOffset" ] }, { "type": "field", "value": [ "ipv4", "ttl" ] }, { "type": "field", "value": [ "ipv4", "protocol" ] }, { "type": "field", "value": [ "ipv4", "srcAddr" ] }, { "type": "field", "value": [ "ipv4", "dstAddr" ] } ], "algo": "csum16" } ], "checksums": [ { "name": "ipv4.hdrChecksum|ipv4_checksum", "id": 0, "target": [ "ipv4", "hdrChecksum" ], "type": "generic", "calculation": "ipv4_checksum", "if_cond": null } ], "learn_lists": [], "field_lists": [], "counter_arrays": [], "register_arrays": [ { "name": "drops_register", "id": 0, "bitwidth": 32, "size": 16 } ], "force_arith": [ [ "standard_metadata", "ingress_port" ], [ "standard_metadata", "packet_length" ], [ "standard_metadata", "egress_spec" ], [ "standard_metadata", "egress_port" ], [ "standard_metadata", "egress_instance" ], [ "standard_metadata", "instance_type" ], [ "standard_metadata", "clone_spec" ], [ "standard_metadata", "_padding" ] ] }