Initial integration of SPGW in fabric.p4
Change-Id: Idd78399212039e44c982f50d343f824d516f938a
diff --git a/pipelines/fabric/src/main/resources/Makefile b/pipelines/fabric/src/main/resources/Makefile
index f11de1b..e82fd31 100644
--- a/pipelines/fabric/src/main/resources/Makefile
+++ b/pipelines/fabric/src/main/resources/Makefile
@@ -12,6 +12,12 @@
mv p4c-out/bmv2/fabric.p4rt p4c-out/bmv2/fabric.p4info
rm -f p4c-out/bmv2/fabric.p4i
+bmv2-spgw:
+ p4c-bm2-ss -o p4c-out/bmv2/fabric-spgw.json \
+ $(BMV2_OPTIONS) -DWITH_SPGW \
+ --p4runtime-file p4c-out/bmv2/fabric-spgw.p4info \
+ --p4runtime-format text fabric.p4
+
custom:
p4c -v -x p4-16 -b $(BACKEND) \
$(BACKEND_OPTIONS) -o p4c-out/$(BACKEND) \
diff --git a/pipelines/fabric/src/main/resources/fabric.p4 b/pipelines/fabric/src/main/resources/fabric.p4
index 84997ec..89ce975 100644
--- a/pipelines/fabric/src/main/resources/fabric.p4
+++ b/pipelines/fabric/src/main/resources/fabric.p4
@@ -26,6 +26,10 @@
#include "include/checksum.p4"
#include "include/parser.p4"
+#ifdef WITH_SPGW
+#include "include/spgw.p4"
+#endif // WITH_SPGW
+
control FabricIngress (
inout parsed_headers_t hdr,
inout fabric_metadata_t fabric_metadata,
@@ -39,6 +43,12 @@
apply {
packet_io_ingress.apply(hdr, fabric_metadata, standard_metadata);
+#ifdef WITH_SPGW
+ fabric_metadata.spgw.l4_src_port = fabric_metadata.l4_src_port;
+ fabric_metadata.spgw.l4_dst_port = fabric_metadata.l4_dst_port;
+ spgw_ingress.apply(hdr.gtpu_ipv4, hdr.gtpu_udp, hdr.gtpu,
+ fabric_metadata.spgw, hdr.ipv4);
+#endif // WITH_SPGW
filtering.apply(hdr, fabric_metadata, standard_metadata);
forwarding.apply(hdr, fabric_metadata, standard_metadata);
next.apply(hdr, fabric_metadata, standard_metadata);
@@ -53,6 +63,10 @@
PacketIoEgress() pkt_io_egress;
apply {
pkt_io_egress.apply(hdr, fabric_metadata, standard_metadata);
+#ifdef WITH_SPGW
+ spgw_egress.apply(hdr.gtpu_ipv4, hdr.gtpu_udp, hdr.gtpu,
+ fabric_metadata.spgw, standard_metadata);
+#endif // WITH_SPGW
}
}
diff --git a/pipelines/fabric/src/main/resources/include/checksum.p4 b/pipelines/fabric/src/main/resources/include/checksum.p4
index 00b4e70..4d1782d 100644
--- a/pipelines/fabric/src/main/resources/include/checksum.p4
+++ b/pipelines/fabric/src/main/resources/include/checksum.p4
@@ -17,6 +17,10 @@
#ifndef __CHECKSUM__
#define __CHECKSUM__
+#ifdef WITH_SPGW
+#include "spgw.p4"
+#endif // WITH_SPGW
+
control FabricComputeChecksum(inout parsed_headers_t hdr,
inout fabric_metadata_t meta)
{
@@ -38,6 +42,9 @@
hdr.ipv4.hdr_checksum,
HashAlgorithm.csum16
);
+#ifdef WITH_SPGW
+ update_gtpu_checksum.apply(hdr.gtpu_ipv4);
+#endif // WITH_SPGW
}
}
@@ -62,6 +69,9 @@
hdr.ipv4.hdr_checksum,
HashAlgorithm.csum16
);
+#ifdef WITH_SPGW
+ verify_gtpu_checksum.apply(hdr.gtpu_ipv4);
+#endif // WITH_SPGW
}
}
diff --git a/pipelines/fabric/src/main/resources/include/define.p4 b/pipelines/fabric/src/main/resources/include/define.p4
index 4765824..d3a7811 100644
--- a/pipelines/fabric/src/main/resources/include/define.p4
+++ b/pipelines/fabric/src/main/resources/include/define.p4
@@ -44,6 +44,8 @@
const bit<8> PROTO_UDP = 17;
const bit<8> PROTO_ICMPV6 = 58;
+const bit<4> IPV4_MIN_IHL = 5;
+
#ifndef CPU_PORT
const port_num_t CPU_PORT = 255;
#endif
@@ -56,5 +58,29 @@
const fwd_type_t FWD_IPV6_MULTICAST = 5;
const bit<8> DEFAULT_MPLS_TTL = 64;
+const bit<8> DEFAULT_IPV4_TTL = 64;
+
+#define ETH_HDR_SIZE 14
+#define IPV4_HDR_SIZE 20
+#define UDP_HDR_SIZE 8
+
+#define UDP_PORT_GTPU 2152
+#define GTP_GPDU 0xff
+#define GTPU_VERSION 0x01
+#define GTP_PROTOCOL_TYPE_GTP 0x01
+
+typedef bit direction_t;
+typedef bit pcc_gate_status_t;
+typedef bit<32> sdf_rule_id_t;
+typedef bit<32> pcc_rule_id_t;
+
+const sdf_rule_id_t DEFAULT_SDF_RULE_ID = 0;
+const pcc_rule_id_t DEFAULT_PCC_RULE_ID = 0;
+
+const direction_t DIR_UPLINK = 1w0;
+const direction_t DIR_DOWNLINK = 1w1;
+
+const pcc_gate_status_t PCC_GATE_OPEN = 1w0;
+const pcc_gate_status_t PCC_GATE_CLOSED = 1w1;
#endif
diff --git a/pipelines/fabric/src/main/resources/include/header.p4 b/pipelines/fabric/src/main/resources/include/header.p4
index c177ad5..b9f36b1 100644
--- a/pipelines/fabric/src/main/resources/include/header.p4
+++ b/pipelines/fabric/src/main/resources/include/header.p4
@@ -115,6 +115,34 @@
bit<64> timestamp;
}
+#ifdef WITH_SPGW
+// GTPU v1
+header gtpu_t {
+ bit<3> version; /* version */
+ bit<1> pt; /* protocol type */
+ bit<1> spare; /* reserved */
+ bit<1> ex_flag; /* next extension hdr present? */
+ bit<1> seq_flag; /* sequence no. */
+ bit<1> npdu_flag; /* n-pdn number present ? */
+ bit<8> msgtype; /* message type */
+ bit<16> msglen; /* message length */
+ bit<32> teid; /* tunnel endpoint id */
+}
+
+struct spgw_meta_t {
+ bool do_spgw;
+ bit<16> l4_src_port;
+ bit<16> l4_dst_port;
+ direction_t direction;
+ pcc_gate_status_t pcc_gate_status;
+ sdf_rule_id_t sdf_rule_id;
+ pcc_rule_id_t pcc_rule_id;
+ bit<32> dl_sess_teid;
+ bit<32> dl_sess_enb_addr;
+ bit<32> dl_sess_s1u_addr;
+}
+#endif // WITH_SPGW
+
//Custom metadata definition
struct fabric_metadata_t {
fwd_type_t fwd_type;
@@ -124,12 +152,20 @@
bit<16> l4_src_port;
bit<16> l4_dst_port;
bit<16> original_ether_type;
+#ifdef WITH_SPGW
+ spgw_meta_t spgw;
+#endif // WITH_SPGW
}
struct parsed_headers_t {
ethernet_t ethernet;
vlan_tag_t vlan_tag;
mpls_t mpls;
+#ifdef WITH_SPGW
+ ipv4_t gtpu_ipv4;
+ udp_t gtpu_udp;
+ gtpu_t gtpu;
+#endif // WITH_SPGW
ipv4_t ipv4;
ipv6_t ipv6;
arp_t arp;
diff --git a/pipelines/fabric/src/main/resources/include/parser.p4 b/pipelines/fabric/src/main/resources/include/parser.p4
index 67cc443..8355c12 100644
--- a/pipelines/fabric/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/src/main/resources/include/parser.p4
@@ -113,13 +113,46 @@
packet.extract(hdr.udp);
fabric_metadata.l4_src_port = hdr.udp.src_port;
fabric_metadata.l4_dst_port = hdr.udp.dst_port;
+#ifdef WITH_SPGW
+ transition select(hdr.udp.dst_port) {
+ UDP_PORT_GTPU: parse_gtpu;
+ default: accept;
+ }
+#else
transition accept;
+#endif // WITH_SPGW
}
state parse_icmp {
packet.extract(hdr.icmp);
transition accept;
}
+
+#ifdef WITH_SPGW
+ state parse_gtpu {
+ packet.extract(hdr.gtpu);
+ transition parse_ipv4_inner;
+ }
+
+ state parse_ipv4_inner {
+ hdr.gtpu_ipv4 = hdr.ipv4;
+ packet.extract(hdr.ipv4);
+ transition select(hdr.ipv4.protocol) {
+ PROTO_TCP: parse_tcp;
+ PROTO_UDP: parse_udp_inner;
+ PROTO_ICMP: parse_icmp;
+ default: accept;
+ }
+ }
+
+ state parse_udp_inner {
+ hdr.gtpu_udp = hdr.udp;
+ packet.extract(hdr.udp);
+ fabric_metadata.l4_src_port = hdr.udp.src_port;
+ fabric_metadata.l4_dst_port = hdr.udp.dst_port;
+ transition accept;
+ }
+#endif // WITH_SPGW
}
control FabricDeparser(packet_out packet, in parsed_headers_t hdr) {
@@ -129,6 +162,11 @@
packet.emit(hdr.vlan_tag);
packet.emit(hdr.mpls);
packet.emit(hdr.arp);
+#ifdef WITH_SPGW
+ packet.emit(hdr.gtpu_ipv4);
+ packet.emit(hdr.gtpu_udp);
+ packet.emit(hdr.gtpu);
+#endif // WITH_SPGW
packet.emit(hdr.ipv4);
packet.emit(hdr.ipv6);
packet.emit(hdr.tcp);
diff --git a/pipelines/fabric/src/main/resources/include/spgw.p4 b/pipelines/fabric/src/main/resources/include/spgw.p4
new file mode 100644
index 0000000..ce39acb
--- /dev/null
+++ b/pipelines/fabric/src/main/resources/include/spgw.p4
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SPGW__
+#define __SPGW__
+
+
+control spgw_ingress(
+ inout ipv4_t gtpu_ipv4,
+ inout udp_t gtpu_udp,
+ inout gtpu_t gtpu,
+ inout spgw_meta_t spgw_meta,
+ in ipv4_t ipv4
+ ) {
+
+ direct_counter(CounterType.packets_and_bytes) ue_counter;
+
+ action gtpu_decap() {
+ gtpu_ipv4.setInvalid();
+ gtpu_udp.setInvalid();
+ gtpu.setInvalid();
+ }
+
+ action set_sdf_rule_id(sdf_rule_id_t id) {
+ spgw_meta.sdf_rule_id = id;
+ }
+
+ action set_pcc_rule_id(pcc_rule_id_t id) {
+ spgw_meta.pcc_rule_id = id;
+ }
+
+ action set_pcc_info(pcc_gate_status_t gate_status) {
+ spgw_meta.pcc_gate_status = gate_status;
+ }
+
+ action set_dl_sess_info(bit<32> dl_sess_teid,
+ bit<32> dl_sess_enb_addr,
+ bit<32> dl_sess_s1u_addr) {
+ spgw_meta.dl_sess_teid = dl_sess_teid;
+ spgw_meta.dl_sess_enb_addr = dl_sess_enb_addr;
+ spgw_meta.dl_sess_s1u_addr = dl_sess_s1u_addr;
+ }
+
+ action update_ue_cdr() {
+ ue_counter.count();
+ }
+
+ table ue_filter_table {
+ key = {
+ // IP prefixes of the UEs managed by this switch.
+ ipv4.dst_addr : lpm;
+ }
+ actions = {
+ NoAction();
+ }
+ }
+
+ table s1u_filter_table {
+ key = {
+ // IP addresses of the S1U interfaces embodied by this switch.
+ gtpu_ipv4.dst_addr : exact;
+ }
+ actions = {
+ NoAction();
+ }
+ }
+
+ table sdf_rule_lookup {
+ key = {
+ spgw_meta.direction : exact;
+ ipv4.src_addr : ternary;
+ ipv4.dst_addr : ternary;
+ ipv4.protocol : ternary;
+ spgw_meta.l4_src_port : ternary;
+ spgw_meta.l4_dst_port : ternary;
+ }
+ actions = {
+ set_sdf_rule_id();
+ }
+ const default_action = set_sdf_rule_id(DEFAULT_SDF_RULE_ID);
+ }
+
+ table pcc_rule_lookup {
+ key = {
+ spgw_meta.sdf_rule_id : exact;
+ }
+ actions = {
+ set_pcc_rule_id();
+ }
+ const default_action = set_pcc_rule_id(DEFAULT_PCC_RULE_ID);
+ }
+
+ table pcc_info_lookup {
+ key = {
+ spgw_meta.pcc_rule_id : exact;
+ }
+ actions = {
+ set_pcc_info();
+ }
+ const default_action = set_pcc_info(PCC_GATE_OPEN);
+ }
+
+ table dl_sess_lookup {
+ key = {
+ // UE addr for downlink
+ ipv4.dst_addr : exact;
+ }
+ actions = {
+ set_dl_sess_info();
+ }
+ }
+
+ table ue_cdr_table {
+ key = {
+ // UE addr for downlink
+ ipv4.dst_addr : exact;
+ }
+ actions = {
+ update_ue_cdr();
+ }
+ counters = ue_counter;
+ }
+
+ apply {
+ // Admit only packets to known UE/S1U addresses, if so sets direction,
+ // otherwise skip SPGW processing.
+ spgw_meta.do_spgw = false;
+ if (gtpu.isValid() && gtpu.msgtype == GTP_GPDU) {
+ spgw_meta.direction = DIR_UPLINK;
+ if (s1u_filter_table.apply().hit) {
+ spgw_meta.do_spgw = true;
+ }
+ } else {
+ if (ue_filter_table.apply().hit) {
+ spgw_meta.do_spgw = true;
+ }
+ }
+
+ if (!spgw_meta.do_spgw) {
+ // Exit this control block.
+ return;
+ }
+
+ if (spgw_meta.direction == DIR_UPLINK) {
+ gtpu_decap();
+ }
+
+ // Allow all traffic by default.
+ spgw_meta.pcc_gate_status = PCC_GATE_OPEN;
+
+ sdf_rule_lookup.apply();
+ pcc_rule_lookup.apply();
+ pcc_info_lookup.apply();
+
+ if (spgw_meta.pcc_gate_status == PCC_GATE_CLOSED) {
+ mark_to_drop();
+ exit;
+ }
+
+ if (spgw_meta.direction == DIR_DOWNLINK) {
+ if (!dl_sess_lookup.apply().hit) {
+ // We have no other choice than drop, as we miss the session
+ // info necessary to properly GTPU encap the packet.
+ mark_to_drop();
+ exit;
+ }
+ ue_cdr_table.apply();
+ }
+ }
+}
+
+
+control spgw_egress(
+ out ipv4_t gtpu_ipv4,
+ out udp_t gtpu_udp,
+ out gtpu_t gtpu,
+ in spgw_meta_t spgw_meta,
+ in standard_metadata_t std_meta
+ ) {
+
+ action gtpu_encap() {
+ // GTPU
+ gtpu.setValid();
+ gtpu.version = GTPU_VERSION;
+ gtpu.pt = GTP_PROTOCOL_TYPE_GTP;
+ gtpu.spare = 0;
+ gtpu.ex_flag = 0;
+ gtpu.seq_flag = 0;
+ gtpu.npdu_flag = 0;
+ gtpu.msgtype = GTP_GPDU;
+ gtpu.msglen = (bit<16>) (std_meta.packet_length - ETH_HDR_SIZE);
+ gtpu.teid = spgw_meta.dl_sess_teid;
+ // Outer IPv4
+ gtpu_ipv4.setValid();
+ gtpu_ipv4.version = IP_VERSION_4;
+ gtpu_ipv4.ihl = IPV4_MIN_IHL;
+ gtpu_ipv4.diffserv = 0;
+ gtpu_ipv4.total_len = (bit<16>) (std_meta.packet_length
+ - ETH_HDR_SIZE + IPV4_HDR_SIZE + UDP_HDR_SIZE);
+ gtpu_ipv4.identification = 0x1513; /* From NGIC */
+ gtpu_ipv4.flags = 0;
+ gtpu_ipv4.frag_offset = 0;
+ gtpu_ipv4.ttl = DEFAULT_IPV4_TTL;
+ gtpu_ipv4.protocol = PROTO_UDP;
+ gtpu_ipv4.dst_addr = spgw_meta.dl_sess_enb_addr;
+ gtpu_ipv4.src_addr = spgw_meta.dl_sess_s1u_addr;
+ gtpu_ipv4.hdr_checksum = 0; /* Updated later */
+ // Outer UDP
+ gtpu_udp.setValid();
+ gtpu_udp.src_port = UDP_PORT_GTPU;
+ gtpu_udp.dst_port = UDP_PORT_GTPU;
+ gtpu_udp.len = (bit<16>) (std_meta.packet_length
+ - ETH_HDR_SIZE + UDP_HDR_SIZE);
+ gtpu_udp.checksum = 0; /* Ignore, won't be updated */
+ }
+
+ apply {
+ if (spgw_meta.do_spgw && spgw_meta.direction == DIR_DOWNLINK) {
+ gtpu_encap();
+ }
+ }
+}
+
+
+control verify_gtpu_checksum(inout ipv4_t gtpu_ipv4) {
+ apply {
+ verify_checksum(gtpu_ipv4.isValid(),
+ {
+ gtpu_ipv4.version,
+ gtpu_ipv4.ihl,
+ gtpu_ipv4.diffserv,
+ gtpu_ipv4.total_len,
+ gtpu_ipv4.identification,
+ gtpu_ipv4.flags,
+ gtpu_ipv4.frag_offset,
+ gtpu_ipv4.ttl,
+ gtpu_ipv4.protocol,
+ gtpu_ipv4.src_addr,
+ gtpu_ipv4.dst_addr
+ },
+ gtpu_ipv4.hdr_checksum,
+ HashAlgorithm.csum16
+ );
+ }
+}
+
+
+control update_gtpu_checksum(inout ipv4_t gtpu_ipv4) {
+ apply {
+ // Compute outer IPv4 checksum.
+ update_checksum(gtpu_ipv4.isValid(),
+ {
+ gtpu_ipv4.version,
+ gtpu_ipv4.ihl,
+ gtpu_ipv4.diffserv,
+ gtpu_ipv4.total_len,
+ gtpu_ipv4.identification,
+ gtpu_ipv4.flags,
+ gtpu_ipv4.frag_offset,
+ gtpu_ipv4.ttl,
+ gtpu_ipv4.protocol,
+ gtpu_ipv4.src_addr,
+ gtpu_ipv4.dst_addr
+ },
+ gtpu_ipv4.hdr_checksum,
+ HashAlgorithm.csum16
+ );
+ }
+}
+
+#endif
diff --git a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.json b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.json
new file mode 100644
index 0000000..c69de66
--- /dev/null
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.json
@@ -0,0 +1,6932 @@
+{
+ "program" : "fabric.p4",
+ "__meta__" : {
+ "version" : [2, 7],
+ "compiler" : "https://github.com/p4lang/p4c"
+ },
+ "header_types" : [
+ {
+ "name" : "scalars_0",
+ "id" : 0,
+ "fields" : [
+ ["tmp", 4, false],
+ ["tmp_0", 32, false],
+ ["tmp_1", 32, false],
+ ["spgw_ingress_tmp_2", 1, false],
+ ["spgw_ingress_tmp_3", 1, false],
+ ["spgw_ingress_tmp_4", 1, false],
+ ["next_tmp_0", 1, false],
+ ["spgw_ingress_hasReturned_0", 1, false],
+ ["fabric_metadata_t.fwd_type", 3, false],
+ ["fabric_metadata_t.next_id", 32, false],
+ ["fabric_metadata_t.pop_vlan_at_egress", 1, false],
+ ["fabric_metadata_t.ip_proto", 8, false],
+ ["fabric_metadata_t.l4_src_port", 16, false],
+ ["fabric_metadata_t.l4_dst_port", 16, false],
+ ["fabric_metadata_t.original_ether_type", 16, false],
+ ["_padding_1", 3, false]
+ ]
+ },
+ {
+ "name" : "ethernet_t",
+ "id" : 1,
+ "fields" : [
+ ["dst_addr", 48, false],
+ ["src_addr", 48, false],
+ ["ether_type", 16, false]
+ ]
+ },
+ {
+ "name" : "vlan_tag_t",
+ "id" : 2,
+ "fields" : [
+ ["pri", 3, false],
+ ["cfi", 1, false],
+ ["vlan_id", 12, false],
+ ["ether_type", 16, false]
+ ]
+ },
+ {
+ "name" : "mpls_t",
+ "id" : 3,
+ "fields" : [
+ ["label", 20, false],
+ ["tc", 3, false],
+ ["bos", 1, false],
+ ["ttl", 8, false]
+ ]
+ },
+ {
+ "name" : "ipv4_t",
+ "id" : 4,
+ "fields" : [
+ ["version", 4, false],
+ ["ihl", 4, false],
+ ["diffserv", 8, false],
+ ["total_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" : "udp_t",
+ "id" : 5,
+ "fields" : [
+ ["src_port", 16, false],
+ ["dst_port", 16, false],
+ ["len", 16, false],
+ ["checksum", 16, false]
+ ]
+ },
+ {
+ "name" : "gtpu_t",
+ "id" : 6,
+ "fields" : [
+ ["version", 3, false],
+ ["pt", 1, false],
+ ["spare", 1, false],
+ ["ex_flag", 1, false],
+ ["seq_flag", 1, false],
+ ["npdu_flag", 1, false],
+ ["msgtype", 8, false],
+ ["msglen", 16, false],
+ ["teid", 32, false]
+ ]
+ },
+ {
+ "name" : "ipv6_t",
+ "id" : 7,
+ "fields" : [
+ ["version", 4, false],
+ ["traffic_class", 8, false],
+ ["flow_label", 20, false],
+ ["payload_len", 16, false],
+ ["next_hdr", 8, false],
+ ["hop_limit", 8, false],
+ ["src_addr", 128, false],
+ ["dst_addr", 128, false]
+ ]
+ },
+ {
+ "name" : "arp_t",
+ "id" : 8,
+ "fields" : [
+ ["hw_type", 16, false],
+ ["proto_type", 16, false],
+ ["hw_addr_len", 8, false],
+ ["proto_addr_len", 8, false],
+ ["opcode", 16, false]
+ ]
+ },
+ {
+ "name" : "tcp_t",
+ "id" : 9,
+ "fields" : [
+ ["src_port", 16, false],
+ ["dst_port", 16, false],
+ ["seq_no", 32, false],
+ ["ack_no", 32, false],
+ ["data_offset", 4, false],
+ ["res", 3, false],
+ ["ecn", 3, false],
+ ["ctrl", 6, false],
+ ["window", 16, false],
+ ["checksum", 16, false],
+ ["urgent_ptr", 16, false]
+ ]
+ },
+ {
+ "name" : "icmp_t",
+ "id" : 10,
+ "fields" : [
+ ["icmp_type", 8, false],
+ ["icmp_code", 8, false],
+ ["checksum", 16, false],
+ ["identifier", 16, false],
+ ["sequence_number", 16, false],
+ ["timestamp", 64, false]
+ ]
+ },
+ {
+ "name" : "packet_out_header_t",
+ "id" : 11,
+ "fields" : [
+ ["egress_port", 9, false],
+ ["_pad", 7, false]
+ ]
+ },
+ {
+ "name" : "packet_in_header_t",
+ "id" : 12,
+ "fields" : [
+ ["ingress_port", 9, false],
+ ["_pad", 7, false]
+ ]
+ },
+ {
+ "name" : "spgw_meta_t",
+ "id" : 13,
+ "fields" : [
+ ["do_spgw", 1, 0],
+ ["l4_src_port", 16, false],
+ ["l4_dst_port", 16, false],
+ ["direction", 1, false],
+ ["pcc_gate_status", 1, false],
+ ["sdf_rule_id", 32, false],
+ ["pcc_rule_id", 32, false],
+ ["dl_sess_teid", 32, false],
+ ["dl_sess_enb_addr", 32, false],
+ ["dl_sess_s1u_addr", 32, false],
+ ["_padding", 5, false]
+ ]
+ },
+ {
+ "name" : "standard_metadata",
+ "id" : 14,
+ "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],
+ ["checksum_error", 1, false],
+ ["_padding_0", 4, 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" : "vlan_tag",
+ "id" : 3,
+ "header_type" : "vlan_tag_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "mpls",
+ "id" : 4,
+ "header_type" : "mpls_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "gtpu_ipv4",
+ "id" : 5,
+ "header_type" : "ipv4_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "gtpu_udp",
+ "id" : 6,
+ "header_type" : "udp_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "gtpu",
+ "id" : 7,
+ "header_type" : "gtpu_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "ipv4",
+ "id" : 8,
+ "header_type" : "ipv4_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "ipv6",
+ "id" : 9,
+ "header_type" : "ipv6_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "arp",
+ "id" : 10,
+ "header_type" : "arp_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "tcp",
+ "id" : 11,
+ "header_type" : "tcp_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "udp",
+ "id" : 12,
+ "header_type" : "udp_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "icmp",
+ "id" : 13,
+ "header_type" : "icmp_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "packet_out",
+ "id" : 14,
+ "header_type" : "packet_out_header_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "packet_in",
+ "id" : 15,
+ "header_type" : "packet_in_header_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "spgw",
+ "id" : 16,
+ "header_type" : "spgw_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" : "start",
+ "id" : 0,
+ "parser_ops" : [],
+ "transitions" : [
+ {
+ "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"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ethernet", "ether_type"]
+ }
+ ],
+ "op" : "set"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "0x8100",
+ "mask" : null,
+ "next_state" : "parse_vlan_tag"
+ },
+ {
+ "value" : "0x8847",
+ "mask" : null,
+ "next_state" : "parse_mpls"
+ },
+ {
+ "value" : "0x0806",
+ "mask" : null,
+ "next_state" : "parse_arp"
+ },
+ {
+ "value" : "0x0800",
+ "mask" : null,
+ "next_state" : "parse_ipv4"
+ },
+ {
+ "value" : "0x86dd",
+ "mask" : null,
+ "next_state" : "parse_ipv6"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "ether_type"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_vlan_tag",
+ "id" : 3,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "vlan_tag"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "0x0806",
+ "mask" : null,
+ "next_state" : "parse_arp"
+ },
+ {
+ "value" : "0x0800",
+ "mask" : null,
+ "next_state" : "parse_ipv4"
+ },
+ {
+ "value" : "0x86dd",
+ "mask" : null,
+ "next_state" : "parse_ipv6"
+ },
+ {
+ "value" : "0x8847",
+ "mask" : null,
+ "next_state" : "parse_mpls"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "ether_type"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_mpls",
+ "id" : 4,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "mpls"
+ }
+ ],
+ "op" : "extract"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ },
+ {
+ "type" : "lookahead",
+ "value" : [0, 4]
+ }
+ ],
+ "op" : "set"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "0x04",
+ "mask" : null,
+ "next_state" : "parse_ipv4"
+ },
+ {
+ "value" : "0x06",
+ "mask" : null,
+ "next_state" : "parse_ipv6"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_ipv4",
+ "id" : 5,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "ipv4"
+ }
+ ],
+ "op" : "extract"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.ip_proto"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "protocol"]
+ }
+ ],
+ "op" : "set"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "0x06",
+ "mask" : null,
+ "next_state" : "parse_tcp"
+ },
+ {
+ "value" : "0x11",
+ "mask" : null,
+ "next_state" : "parse_udp"
+ },
+ {
+ "value" : "0x01",
+ "mask" : null,
+ "next_state" : "parse_icmp"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["ipv4", "protocol"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_ipv6",
+ "id" : 6,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "ipv6"
+ }
+ ],
+ "op" : "extract"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.ip_proto"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv6", "next_hdr"]
+ }
+ ],
+ "op" : "set"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "0x06",
+ "mask" : null,
+ "next_state" : "parse_tcp"
+ },
+ {
+ "value" : "0x11",
+ "mask" : null,
+ "next_state" : "parse_udp"
+ },
+ {
+ "value" : "0x3a",
+ "mask" : null,
+ "next_state" : "parse_icmp"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["ipv6", "next_hdr"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_arp",
+ "id" : 7,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "arp"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : []
+ },
+ {
+ "name" : "parse_tcp",
+ "id" : 8,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "tcp"
+ }
+ ],
+ "op" : "extract"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["tcp", "src_port"]
+ }
+ ],
+ "op" : "set"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["tcp", "dst_port"]
+ }
+ ],
+ "op" : "set"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : []
+ },
+ {
+ "name" : "parse_udp",
+ "id" : 9,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "udp"
+ }
+ ],
+ "op" : "extract"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["udp", "src_port"]
+ }
+ ],
+ "op" : "set"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["udp", "dst_port"]
+ }
+ ],
+ "op" : "set"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "0x0868",
+ "mask" : null,
+ "next_state" : "parse_gtpu"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["udp", "dst_port"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_icmp",
+ "id" : 10,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "icmp"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : []
+ },
+ {
+ "name" : "parse_gtpu",
+ "id" : 11,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "gtpu"
+ }
+ ],
+ "op" : "extract"
+ },
+ {
+ "op" : "primitive",
+ "parameters" : [
+ {
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_ipv4"
+ },
+ {
+ "type" : "header",
+ "value" : "ipv4"
+ }
+ ],
+ "op" : "assign_header"
+ }
+ ]
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "ipv4"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "0x06",
+ "mask" : null,
+ "next_state" : "parse_tcp"
+ },
+ {
+ "value" : "0x11",
+ "mask" : null,
+ "next_state" : "parse_udp_inner"
+ },
+ {
+ "value" : "0x01",
+ "mask" : null,
+ "next_state" : "parse_icmp"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["ipv4", "protocol"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_udp_inner",
+ "id" : 12,
+ "parser_ops" : [
+ {
+ "op" : "primitive",
+ "parameters" : [
+ {
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_udp"
+ },
+ {
+ "type" : "header",
+ "value" : "udp"
+ }
+ ],
+ "op" : "assign_header"
+ }
+ ]
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "udp"
+ }
+ ],
+ "op" : "extract"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["udp", "src_port"]
+ }
+ ],
+ "op" : "set"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["udp", "dst_port"]
+ }
+ ],
+ "op" : "set"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : null
+ }
+ ],
+ "transition_key" : []
+ }
+ ]
+ }
+ ],
+ "deparsers" : [
+ {
+ "name" : "deparser",
+ "id" : 0,
+ "source_info" : {
+ "filename" : "include/parser.p4",
+ "line" : 158,
+ "column" : 8,
+ "source_fragment" : "FabricDeparser"
+ },
+ "order" : ["packet_in", "ethernet", "vlan_tag", "mpls", "arp", "gtpu_ipv4", "gtpu_udp", "gtpu", "ipv4", "ipv6", "tcp", "udp", "icmp"]
+ }
+ ],
+ "meter_arrays" : [],
+ "counter_arrays" : [
+ {
+ "name" : "spgw_ingress.ue_counter",
+ "id" : 0,
+ "is_direct" : true,
+ "binding" : "spgw_ingress.ue_cdr_table"
+ },
+ {
+ "name" : "filtering.ingress_port_vlan_counter",
+ "id" : 1,
+ "is_direct" : true,
+ "binding" : "filtering.ingress_port_vlan"
+ },
+ {
+ "name" : "filtering.fwd_classifier_counter",
+ "id" : 2,
+ "is_direct" : true,
+ "binding" : "filtering.fwd_classifier"
+ },
+ {
+ "name" : "forwarding.bridging_counter",
+ "id" : 3,
+ "is_direct" : true,
+ "binding" : "forwarding.bridging"
+ },
+ {
+ "name" : "forwarding.mpls_counter",
+ "id" : 4,
+ "is_direct" : true,
+ "binding" : "forwarding.mpls"
+ },
+ {
+ "name" : "forwarding.unicast_v4_counter",
+ "id" : 5,
+ "is_direct" : true,
+ "binding" : "forwarding.unicast_v4"
+ },
+ {
+ "name" : "forwarding.multicast_v4_counter",
+ "id" : 6,
+ "is_direct" : true,
+ "binding" : "forwarding.multicast_v4"
+ },
+ {
+ "name" : "forwarding.unicast_v6_counter",
+ "id" : 7,
+ "is_direct" : true,
+ "binding" : "forwarding.unicast_v6"
+ },
+ {
+ "name" : "forwarding.multicast_v6_counter",
+ "id" : 8,
+ "is_direct" : true,
+ "binding" : "forwarding.multicast_v6"
+ },
+ {
+ "name" : "forwarding.acl_counter",
+ "id" : 9,
+ "is_direct" : true,
+ "binding" : "forwarding.acl"
+ },
+ {
+ "name" : "next.simple_counter",
+ "id" : 10,
+ "is_direct" : true,
+ "binding" : "next.simple"
+ },
+ {
+ "name" : "next.hashed_counter",
+ "id" : 11,
+ "is_direct" : true,
+ "binding" : "next.hashed"
+ },
+ {
+ "name" : "next.broadcast_counter",
+ "id" : 12,
+ "is_direct" : true,
+ "binding" : "next.broadcast"
+ },
+ {
+ "name" : "port_counters_control.egress_port_counter",
+ "id" : 13,
+ "source_info" : {
+ "filename" : "include/control/port_counter.p4",
+ "line" : 23,
+ "column" : 38,
+ "source_fragment" : "egress_port_counter"
+ },
+ "size" : 511,
+ "is_direct" : false
+ },
+ {
+ "name" : "port_counters_control.ingress_port_counter",
+ "id" : 14,
+ "source_info" : {
+ "filename" : "include/control/port_counter.p4",
+ "line" : 24,
+ "column" : 38,
+ "source_fragment" : "ingress_port_counter"
+ },
+ "size" : 511,
+ "is_direct" : false
+ }
+ ],
+ "register_arrays" : [],
+ "calculations" : [
+ {
+ "name" : "calc",
+ "id" : 0,
+ "source_info" : {
+ "filename" : "include/checksum.p4",
+ "line" : 55,
+ "column" : 8,
+ "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
+ },
+ "algo" : "csum16",
+ "input" : [
+ {
+ "type" : "field",
+ "value" : ["ipv4", "version"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "ihl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "diffserv"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "total_len"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "identification"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "flags"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "frag_offset"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "ttl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "protocol"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "src_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "dst_addr"]
+ }
+ ]
+ },
+ {
+ "name" : "calc_0",
+ "id" : 1,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 240,
+ "column" : 8,
+ "source_fragment" : "verify_checksum(gtpu_ipv4.isValid(), ..."
+ },
+ "algo" : "csum16",
+ "input" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "version"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "ihl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "diffserv"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "total_len"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "identification"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "flags"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "frag_offset"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "ttl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "protocol"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "src_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "dst_addr"]
+ }
+ ]
+ },
+ {
+ "name" : "calc_1",
+ "id" : 2,
+ "source_info" : {
+ "filename" : "include/checksum.p4",
+ "line" : 28,
+ "column" : 8,
+ "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
+ },
+ "algo" : "csum16",
+ "input" : [
+ {
+ "type" : "field",
+ "value" : ["ipv4", "version"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "ihl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "diffserv"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "total_len"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "identification"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "flags"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "frag_offset"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "ttl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "protocol"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "src_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ipv4", "dst_addr"]
+ }
+ ]
+ },
+ {
+ "name" : "calc_2",
+ "id" : 3,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 264,
+ "column" : 8,
+ "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
+ },
+ "algo" : "csum16",
+ "input" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "version"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "ihl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "diffserv"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "total_len"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "identification"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "flags"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "frag_offset"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "ttl"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "protocol"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "src_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "dst_addr"]
+ }
+ ]
+ }
+ ],
+ "learn_lists" : [],
+ "actions" : [
+ {
+ "name" : "NoAction",
+ "id" : 0,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 1,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 2,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 3,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 4,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 5,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 6,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 7,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 8,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 9,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 10,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 11,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "NoAction",
+ "id" : 12,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "nop",
+ "id" : 13,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "nop",
+ "id" : 14,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "spgw_ingress.gtpu_decap",
+ "id" : 15,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_ipv4"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 32,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.setInvalid()"
+ }
+ },
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_udp"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "gtpu_udp.setInvalid()"
+ }
+ },
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 34,
+ "column" : 8,
+ "source_fragment" : "gtpu.setInvalid()"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "spgw_ingress.set_sdf_rule_id",
+ "id" : 16,
+ "runtime_data" : [
+ {
+ "name" : "id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "sdf_rule_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 38,
+ "column" : 8,
+ "source_fragment" : "spgw_meta.sdf_rule_id = id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "spgw_ingress.set_pcc_rule_id",
+ "id" : 17,
+ "runtime_data" : [
+ {
+ "name" : "id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "pcc_rule_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 42,
+ "column" : 8,
+ "source_fragment" : "spgw_meta.pcc_rule_id = id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "spgw_ingress.set_pcc_info",
+ "id" : 18,
+ "runtime_data" : [
+ {
+ "name" : "gate_status",
+ "bitwidth" : 1
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "pcc_gate_status"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 46,
+ "column" : 8,
+ "source_fragment" : "spgw_meta.pcc_gate_status = gate_status"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "spgw_ingress.set_dl_sess_info",
+ "id" : 19,
+ "runtime_data" : [
+ {
+ "name" : "dl_sess_teid",
+ "bitwidth" : 32
+ },
+ {
+ "name" : "dl_sess_enb_addr",
+ "bitwidth" : 32
+ },
+ {
+ "name" : "dl_sess_s1u_addr",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "dl_sess_teid"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 52,
+ "column" : 8,
+ "source_fragment" : "spgw_meta.dl_sess_teid = dl_sess_teid"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "dl_sess_enb_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 53,
+ "column" : 8,
+ "source_fragment" : "spgw_meta.dl_sess_enb_addr = dl_sess_enb_addr"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "dl_sess_s1u_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 2
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 54,
+ "column" : 8,
+ "source_fragment" : "spgw_meta.dl_sess_s1u_addr = dl_sess_s1u_addr"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "spgw_ingress.update_ue_cdr",
+ "id" : 20,
+ "runtime_data" : [],
+ "primitives" : []
+ },
+ {
+ "name" : "filtering.drop",
+ "id" : 21,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "drop",
+ "parameters" : [],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 31,
+ "column" : 8,
+ "source_fragment" : "mark_to_drop()"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "filtering.set_vlan",
+ "id" : 22,
+ "runtime_data" : [
+ {
+ "name" : "new_vlan_id",
+ "bitwidth" : 12
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "vlan_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 35,
+ "column" : 8,
+ "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "filtering.push_internal_vlan",
+ "id" : 23,
+ "runtime_data" : [
+ {
+ "name" : "new_vlan_id",
+ "bitwidth" : 12
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "vlan_tag"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 41,
+ "column" : 8,
+ "source_fragment" : "hdr.vlan_tag.setValid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "cfi"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 42,
+ "column" : 8,
+ "source_fragment" : "hdr.vlan_tag.cfi = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "pri"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 43,
+ "column" : 8,
+ "source_fragment" : "hdr.vlan_tag.pri = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "ether_type"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ethernet", "ether_type"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 44,
+ "column" : 8,
+ "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "ether_type"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x8100"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 32,
+ "column" : 31,
+ "source_fragment" : "0x8100; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "vlan_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 35,
+ "column" : 8,
+ "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 49,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "filtering.set_forwarding_type",
+ "id" : 24,
+ "runtime_data" : [
+ {
+ "name" : "fwd_type",
+ "bitwidth" : 3
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 53,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.drop",
+ "id" : 25,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "drop",
+ "parameters" : [],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 39,
+ "column" : 8,
+ "source_fragment" : "mark_to_drop()"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.set_next_id",
+ "id" : 26,
+ "runtime_data" : [
+ {
+ "name" : "next_id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.next_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 43,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.next_id = next_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.set_next_id",
+ "id" : 27,
+ "runtime_data" : [
+ {
+ "name" : "next_id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.next_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 43,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.next_id = next_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.set_next_id",
+ "id" : 28,
+ "runtime_data" : [
+ {
+ "name" : "next_id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.next_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 43,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.next_id = next_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.set_next_id",
+ "id" : 29,
+ "runtime_data" : [
+ {
+ "name" : "next_id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.next_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 43,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.next_id = next_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.set_next_id",
+ "id" : 30,
+ "runtime_data" : [
+ {
+ "name" : "next_id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.next_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 43,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.next_id = next_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.set_next_id",
+ "id" : 31,
+ "runtime_data" : [
+ {
+ "name" : "next_id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.next_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 43,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.next_id = next_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.pop_mpls_and_next",
+ "id" : 32,
+ "runtime_data" : [
+ {
+ "name" : "next_id",
+ "bitwidth" : 32
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "mpls"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 47,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.setInvalid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.next_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 48,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.next_id = next_id"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "forwarding.duplicate_to_controller",
+ "id" : 33,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00ff"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 50,
+ "column" : 28,
+ "source_fragment" : "255; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.output",
+ "id" : 34,
+ "runtime_data" : [
+ {
+ "name" : "port_num",
+ "bitwidth" : 9
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.egress_spec = port_num"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.set_vlan_output",
+ "id" : 35,
+ "runtime_data" : [
+ {
+ "name" : "new_vlan_id",
+ "bitwidth" : 12
+ },
+ {
+ "name" : "port_num",
+ "bitwidth" : 9
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "vlan_id"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 37,
+ "column" : 8,
+ "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : false
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 40,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.l3_routing",
+ "id" : 36,
+ "runtime_data" : [
+ {
+ "name" : "port_num",
+ "bitwidth" : 9
+ },
+ {
+ "name" : "smac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "dmac",
+ "bitwidth" : 48
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "src_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 45,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "dst_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 2
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 49,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.l3_routing",
+ "id" : 37,
+ "runtime_data" : [
+ {
+ "name" : "port_num",
+ "bitwidth" : 9
+ },
+ {
+ "name" : "smac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "dmac",
+ "bitwidth" : 48
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "src_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 45,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "dst_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 2
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 49,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.set_mcast_group",
+ "id" : 38,
+ "runtime_data" : [
+ {
+ "name" : "gid",
+ "bitwidth" : 16
+ },
+ {
+ "name" : "smac",
+ "bitwidth" : 48
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "mcast_grp"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 59,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.mcast_grp = gid"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "src_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 45,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.mpls_routing_v4",
+ "id" : 39,
+ "runtime_data" : [
+ {
+ "name" : "port_num",
+ "bitwidth" : 9
+ },
+ {
+ "name" : "smac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "dmac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "label",
+ "bitwidth" : 20
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "src_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 45,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "dst_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 2
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 49,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
+ }
+ },
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "mpls"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 65,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.setValid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "ether_type"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x8847"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 33,
+ "column" : 31,
+ "source_fragment" : "0x8847; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "label"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 3
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 67,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.label = label; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "tc"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 68,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.tc = tc; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "bos"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 69,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.bos = 1w1"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "ttl"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x40"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 60,
+ "column" : 32,
+ "source_fragment" : "64; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.mpls_routing_v4",
+ "id" : 40,
+ "runtime_data" : [
+ {
+ "name" : "port_num",
+ "bitwidth" : 9
+ },
+ {
+ "name" : "smac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "dmac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "label",
+ "bitwidth" : 20
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "src_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 45,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "dst_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 2
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 49,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
+ }
+ },
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "mpls"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 65,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.setValid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "ether_type"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x8847"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 33,
+ "column" : 31,
+ "source_fragment" : "0x8847; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "label"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 3
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 67,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.label = label; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "tc"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 68,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.tc = tc; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "bos"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 69,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.bos = 1w1"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "ttl"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x40"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 60,
+ "column" : 32,
+ "source_fragment" : "64; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "next.mpls_routing_v6",
+ "id" : 41,
+ "runtime_data" : [
+ {
+ "name" : "port_num",
+ "bitwidth" : 9
+ },
+ {
+ "name" : "smac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "dmac",
+ "bitwidth" : 48
+ },
+ {
+ "name" : "label",
+ "bitwidth" : 20
+ }
+ ],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "src_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 1
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 45,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "dst_addr"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 2
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 49,
+ "column" : 8,
+ "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 0
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
+ }
+ },
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "mpls"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 65,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.setValid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "ether_type"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x8847"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 33,
+ "column" : 31,
+ "source_fragment" : "0x8847; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "label"]
+ },
+ {
+ "type" : "runtime_data",
+ "value" : 3
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 67,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.label = label; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "tc"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 68,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.tc = tc; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "bos"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 69,
+ "column" : 8,
+ "source_fragment" : "hdr.mpls.bos = 1w1"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["mpls", "ttl"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x40"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 60,
+ "column" : 32,
+ "source_fragment" : "64; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act",
+ "id" : 42,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ {
+ "type" : "field",
+ "value" : ["packet_out", "egress_port"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/packetio.p4",
+ "line" : 26,
+ "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" : "include/control/packetio.p4",
+ "line" : 27,
+ "column" : 12,
+ "source_fragment" : "hdr.packet_out.setInvalid()"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_0",
+ "id" : 43,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_2"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_1",
+ "id" : 44,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_2"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : false
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_2",
+ "id" : 45,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "direction"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 80,
+ "column" : 31,
+ "source_fragment" : "1w0; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_3",
+ "id" : 46,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "do_spgw"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 144,
+ "column" : 16,
+ "source_fragment" : "spgw_meta.do_spgw = true"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_4",
+ "id" : 47,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_3"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_5",
+ "id" : 48,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_3"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : false
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_6",
+ "id" : 49,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "do_spgw"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 148,
+ "column" : 16,
+ "source_fragment" : "spgw_meta.do_spgw = true"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_7",
+ "id" : 50,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "l4_src_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "fabric.p4",
+ "line" : 47,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.spgw.l4_src_port = fabric_metadata.l4_src_port"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "l4_dst_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "fabric.p4",
+ "line" : 48,
+ "column" : 8,
+ "source_fragment" : "fabric_metadata.spgw.l4_dst_port = fabric_metadata.l4_dst_port"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_hasReturned_0"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : false
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["spgw", "do_spgw"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : false
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 140,
+ "column" : 8,
+ "source_fragment" : "spgw_meta.do_spgw = false"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_8",
+ "id" : 51,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_hasReturned_0"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 154,
+ "column" : 12,
+ "source_fragment" : "return"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_9",
+ "id" : 52,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "drop",
+ "parameters" : [],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 169,
+ "column" : 12,
+ "source_fragment" : "mark_to_drop()"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_10",
+ "id" : 53,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_4"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_11",
+ "id" : 54,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_4"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : false
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_12",
+ "id" : 55,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "drop",
+ "parameters" : [],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 177,
+ "column" : 16,
+ "source_fragment" : "mark_to_drop()"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_13",
+ "id" : 56,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "ether_type"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x0800"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 35,
+ "column" : 31,
+ "source_fragment" : "0x0800; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.original_ether_type"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x0800"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 35,
+ "column" : 31,
+ "source_fragment" : "0x0800; ..."
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_14",
+ "id" : 57,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "next_tmp_0"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : true
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_15",
+ "id" : 58,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "next_tmp_0"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "b2d",
+ "left" : null,
+ "right" : {
+ "type" : "bool",
+ "value" : false
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name" : "act_16",
+ "id" : 59,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ipv4", "ttl"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "+",
+ "left" : {
+ "type" : "field",
+ "value" : ["ipv4", "ttl"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 140,
+ "column" : 20,
+ "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_17",
+ "id" : 60,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ipv6", "hop_limit"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "+",
+ "left" : {
+ "type" : "field",
+ "value" : ["ipv6", "hop_limit"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 143,
+ "column" : 20,
+ "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_18",
+ "id" : 61,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ },
+ {
+ "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" : "port_counters_control.egress_port_counter"
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/port_counter.p4",
+ "line" : 28,
+ "column" : 12,
+ "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_19",
+ "id" : 62,
+ "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"
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "op" : "count",
+ "parameters" : [
+ {
+ "type" : "counter_array",
+ "value" : "port_counters_control.ingress_port_counter"
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_1"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/port_counter.p4",
+ "line" : 31,
+ "column" : 12,
+ "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_20",
+ "id" : 63,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "ether_type"]
+ },
+ {
+ "type" : "field",
+ "value" : ["vlan_tag", "ether_type"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 160,
+ "column" : 12,
+ "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
+ }
+ },
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "vlan_tag"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 161,
+ "column" : 12,
+ "source_fragment" : "hdr.vlan_tag.setInvalid()"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "spgw_egress.gtpu_encap",
+ "id" : 64,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 196,
+ "column" : 8,
+ "source_fragment" : "gtpu.setValid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "version"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 197,
+ "column" : 8,
+ "source_fragment" : "gtpu.version = 0x01"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "pt"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 198,
+ "column" : 8,
+ "source_fragment" : "gtpu.pt = 0x01"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "spare"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 199,
+ "column" : 8,
+ "source_fragment" : "gtpu.spare = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "ex_flag"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 200,
+ "column" : 8,
+ "source_fragment" : "gtpu.ex_flag = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "seq_flag"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 201,
+ "column" : 8,
+ "source_fragment" : "gtpu.seq_flag = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "npdu_flag"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 202,
+ "column" : 8,
+ "source_fragment" : "gtpu.npdu_flag = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "msgtype"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 203,
+ "column" : 8,
+ "source_fragment" : "gtpu.msgtype = 0xff"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "msglen"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "+",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "packet_length"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xfffffff2"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffff"
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 204,
+ "column" : 8,
+ "source_fragment" : "gtpu.msglen = (bit<16>) (std_meta.packet_length - 14)"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu", "teid"]
+ },
+ {
+ "type" : "field",
+ "value" : ["spgw", "dl_sess_teid"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 205,
+ "column" : 8,
+ "source_fragment" : "gtpu.teid = spgw_meta.dl_sess_teid"
+ }
+ },
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_ipv4"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 207,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.setValid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "version"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x04"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 39,
+ "column" : 28,
+ "source_fragment" : "4; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "ihl"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x05"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 47,
+ "column" : 28,
+ "source_fragment" : "5; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "diffserv"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 210,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.diffserv = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "total_len"]
+ },
+ {
+ "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" : "field",
+ "value" : ["standard_metadata", "packet_length"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xfffffff2"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00000014"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00000008"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffff"
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 211,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.total_len = (bit<16>) (std_meta.packet_length ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "identification"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x1513"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 213,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.identification = 0x1513"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "flags"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 214,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.flags = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "frag_offset"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x0000"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 215,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.frag_offset = 0"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "ttl"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x40"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 70,
+ "column" : 32,
+ "source_fragment" : "64; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "protocol"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x11"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/../define.p4",
+ "line" : 44,
+ "column" : 25,
+ "source_fragment" : "17; ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "dst_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["spgw", "dl_sess_enb_addr"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 218,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.dst_addr = spgw_meta.dl_sess_enb_addr"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "src_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["spgw", "dl_sess_s1u_addr"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 219,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.src_addr = spgw_meta.dl_sess_s1u_addr"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "hdr_checksum"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x0000"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 220,
+ "column" : 8,
+ "source_fragment" : "gtpu_ipv4.hdr_checksum = 0"
+ }
+ },
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_udp"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 222,
+ "column" : 8,
+ "source_fragment" : "gtpu_udp.setValid()"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_udp", "src_port"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x0868"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 223,
+ "column" : 8,
+ "source_fragment" : "gtpu_udp.src_port = 2152"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_udp", "dst_port"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x0868"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 224,
+ "column" : 8,
+ "source_fragment" : "gtpu_udp.dst_port = 2152"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_udp", "len"]
+ },
+ {
+ "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" : "field",
+ "value" : ["standard_metadata", "packet_length"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xfffffff2"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00000008"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffff"
+ }
+ }
+ }
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 225,
+ "column" : 8,
+ "source_fragment" : "gtpu_udp.len = (bit<16>) (std_meta.packet_length ..."
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["gtpu_udp", "checksum"]
+ },
+ {
+ "type" : "hexstr",
+ "value" : "0x0000"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 227,
+ "column" : 8,
+ "source_fragment" : "gtpu_udp.checksum = 0"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_21",
+ "id" : 65,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "packet_in"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/control/packetio.p4",
+ "line" : 39,
+ "column" : 12,
+ "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" : "include/control/packetio.p4",
+ "line" : 40,
+ "column" : 12,
+ "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "act_22",
+ "id" : 66,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_ipv4"
+ }
+ ],
+ "source_info" : {
+ "filename" : "fabric.p4",
+ "line" : 67,
+ "column" : 26,
+ "source_fragment" : "hdr.gtpu_ipv4"
+ }
+ },
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu_udp"
+ }
+ ],
+ "source_info" : {
+ "filename" : "fabric.p4",
+ "line" : 67,
+ "column" : 41,
+ "source_fragment" : "hdr.gtpu_udp"
+ }
+ },
+ {
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "gtpu"
+ }
+ ],
+ "source_info" : {
+ "filename" : "fabric.p4",
+ "line" : 67,
+ "column" : 55,
+ "source_fragment" : "hdr.gtpu"
+ }
+ }
+ ]
+ }
+ ],
+ "pipelines" : [
+ {
+ "name" : "ingress",
+ "id" : 0,
+ "source_info" : {
+ "filename" : "fabric.p4",
+ "line" : 33,
+ "column" : 8,
+ "source_fragment" : "FabricIngress"
+ },
+ "init_table" : "node_2",
+ "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" : [42],
+ "actions" : ["act"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "act" : null
+ },
+ "default_entry" : {
+ "action_id" : 42,
+ "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" : [50],
+ "actions" : ["act_7"],
+ "base_default_next" : "node_5",
+ "next_tables" : {
+ "act_7" : "node_5"
+ },
+ "default_entry" : {
+ "action_id" : 50,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_1",
+ "id" : 2,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [45],
+ "actions" : ["act_2"],
+ "base_default_next" : "spgw_ingress.s1u_filter_table",
+ "next_tables" : {
+ "act_2" : "spgw_ingress.s1u_filter_table"
+ },
+ "default_entry" : {
+ "action_id" : 45,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "spgw_ingress.s1u_filter_table",
+ "id" : 3,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 71,
+ "column" : 10,
+ "source_fragment" : "s1u_filter_table"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["gtpu_ipv4", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [1],
+ "actions" : ["NoAction"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "__HIT__" : "tbl_act_2",
+ "__MISS__" : "tbl_act_3"
+ },
+ "default_entry" : {
+ "action_id" : 1,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "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" : [43],
+ "actions" : ["act_0"],
+ "base_default_next" : "node_10",
+ "next_tables" : {
+ "act_0" : "node_10"
+ },
+ "default_entry" : {
+ "action_id" : 43,
+ "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" : [44],
+ "actions" : ["act_1"],
+ "base_default_next" : "node_10",
+ "next_tables" : {
+ "act_1" : "node_10"
+ },
+ "default_entry" : {
+ "action_id" : 44,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_4",
+ "id" : 6,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [46],
+ "actions" : ["act_3"],
+ "base_default_next" : "node_17",
+ "next_tables" : {
+ "act_3" : "node_17"
+ },
+ "default_entry" : {
+ "action_id" : 46,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "spgw_ingress.ue_filter_table",
+ "id" : 7,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 61,
+ "column" : 10,
+ "source_fragment" : "ue_filter_table"
+ },
+ "key" : [
+ {
+ "match_type" : "lpm",
+ "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" : [0],
+ "actions" : ["NoAction"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "__HIT__" : "tbl_act_5",
+ "__MISS__" : "tbl_act_6"
+ },
+ "default_entry" : {
+ "action_id" : 0,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "tbl_act_5",
+ "id" : 8,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [47],
+ "actions" : ["act_4"],
+ "base_default_next" : "node_15",
+ "next_tables" : {
+ "act_4" : "node_15"
+ },
+ "default_entry" : {
+ "action_id" : 47,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_6",
+ "id" : 9,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [48],
+ "actions" : ["act_5"],
+ "base_default_next" : "node_15",
+ "next_tables" : {
+ "act_5" : "node_15"
+ },
+ "default_entry" : {
+ "action_id" : 48,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_7",
+ "id" : 10,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [49],
+ "actions" : ["act_6"],
+ "base_default_next" : "node_17",
+ "next_tables" : {
+ "act_6" : "node_17"
+ },
+ "default_entry" : {
+ "action_id" : 49,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_8",
+ "id" : 11,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [51],
+ "actions" : ["act_8"],
+ "base_default_next" : "node_19",
+ "next_tables" : {
+ "act_8" : "node_19"
+ },
+ "default_entry" : {
+ "action_id" : 51,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_spgw_ingress_gtpu_decap",
+ "id" : 12,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [15],
+ "actions" : ["spgw_ingress.gtpu_decap"],
+ "base_default_next" : "spgw_ingress.sdf_rule_lookup",
+ "next_tables" : {
+ "spgw_ingress.gtpu_decap" : "spgw_ingress.sdf_rule_lookup"
+ },
+ "default_entry" : {
+ "action_id" : 15,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "spgw_ingress.sdf_rule_lookup",
+ "id" : 13,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 81,
+ "column" : 10,
+ "source_fragment" : "sdf_rule_lookup"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["spgw", "direction"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ipv4", "src_addr"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ipv4", "dst_addr"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ipv4", "protocol"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["spgw", "l4_src_port"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["spgw", "l4_dst_port"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "ternary",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [16],
+ "actions" : ["spgw_ingress.set_sdf_rule_id"],
+ "base_default_next" : "spgw_ingress.pcc_rule_lookup",
+ "next_tables" : {
+ "spgw_ingress.set_sdf_rule_id" : "spgw_ingress.pcc_rule_lookup"
+ },
+ "default_entry" : {
+ "action_id" : 16,
+ "action_const" : true,
+ "action_data" : ["0x0"],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "spgw_ingress.pcc_rule_lookup",
+ "id" : 14,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 96,
+ "column" : 10,
+ "source_fragment" : "pcc_rule_lookup"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["spgw", "sdf_rule_id"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [17],
+ "actions" : ["spgw_ingress.set_pcc_rule_id"],
+ "base_default_next" : "spgw_ingress.pcc_info_lookup",
+ "next_tables" : {
+ "spgw_ingress.set_pcc_rule_id" : "spgw_ingress.pcc_info_lookup"
+ },
+ "default_entry" : {
+ "action_id" : 17,
+ "action_const" : true,
+ "action_data" : ["0x0"],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "spgw_ingress.pcc_info_lookup",
+ "id" : 15,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 106,
+ "column" : 10,
+ "source_fragment" : "pcc_info_lookup"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["spgw", "pcc_rule_id"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [18],
+ "actions" : ["spgw_ingress.set_pcc_info"],
+ "base_default_next" : "node_25",
+ "next_tables" : {
+ "spgw_ingress.set_pcc_info" : "node_25"
+ },
+ "default_entry" : {
+ "action_id" : 18,
+ "action_const" : true,
+ "action_data" : ["0x0"],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_9",
+ "id" : 16,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [52],
+ "actions" : ["act_9"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "act_9" : null
+ },
+ "default_entry" : {
+ "action_id" : 52,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "spgw_ingress.dl_sess_lookup",
+ "id" : 17,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 116,
+ "column" : 10,
+ "source_fragment" : "dl_sess_lookup"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["ipv4", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [19, 2],
+ "actions" : ["spgw_ingress.set_dl_sess_info", "NoAction"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "__HIT__" : "tbl_act_10",
+ "__MISS__" : "tbl_act_11"
+ },
+ "default_entry" : {
+ "action_id" : 2,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "tbl_act_10",
+ "id" : 18,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [53],
+ "actions" : ["act_10"],
+ "base_default_next" : "node_32",
+ "next_tables" : {
+ "act_10" : "node_32"
+ },
+ "default_entry" : {
+ "action_id" : 53,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_11",
+ "id" : 19,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [54],
+ "actions" : ["act_11"],
+ "base_default_next" : "node_32",
+ "next_tables" : {
+ "act_11" : "node_32"
+ },
+ "default_entry" : {
+ "action_id" : 54,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_12",
+ "id" : 20,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [55],
+ "actions" : ["act_12"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "act_12" : null
+ },
+ "default_entry" : {
+ "action_id" : 55,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "spgw_ingress.ue_cdr_table",
+ "id" : 21,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 126,
+ "column" : 10,
+ "source_fragment" : "ue_cdr_table"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["ipv4", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [20, 3],
+ "actions" : ["spgw_ingress.update_ue_cdr", "NoAction"],
+ "base_default_next" : "filtering.ingress_port_vlan",
+ "next_tables" : {
+ "spgw_ingress.update_ue_cdr" : "filtering.ingress_port_vlan",
+ "NoAction" : "filtering.ingress_port_vlan"
+ },
+ "default_entry" : {
+ "action_id" : 3,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "filtering.ingress_port_vlan",
+ "id" : 22,
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 57,
+ "column" : 10,
+ "source_fragment" : "ingress_port_vlan"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["standard_metadata", "ingress_port"],
+ "mask" : null
+ },
+ {
+ "match_type" : "exact",
+ "target" : ["vlan_tag", "$valid$"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["vlan_tag", "vlan_id"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "ternary",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [23, 22, 13, 21],
+ "actions" : ["filtering.push_internal_vlan", "filtering.set_vlan", "nop", "filtering.drop"],
+ "base_default_next" : "filtering.fwd_classifier",
+ "next_tables" : {
+ "filtering.push_internal_vlan" : "filtering.fwd_classifier",
+ "filtering.set_vlan" : "filtering.fwd_classifier",
+ "nop" : "filtering.fwd_classifier",
+ "filtering.drop" : "filtering.fwd_classifier"
+ },
+ "default_entry" : {
+ "action_id" : 13,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "filtering.fwd_classifier",
+ "id" : 23,
+ "source_info" : {
+ "filename" : "include/control/filtering.p4",
+ "line" : 76,
+ "column" : 10,
+ "source_fragment" : "fwd_classifier"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["standard_metadata", "ingress_port"],
+ "mask" : null
+ },
+ {
+ "match_type" : "exact",
+ "target" : ["ethernet", "dst_addr"],
+ "mask" : null
+ },
+ {
+ "match_type" : "exact",
+ "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [24],
+ "actions" : ["filtering.set_forwarding_type"],
+ "base_default_next" : "node_38",
+ "next_tables" : {
+ "filtering.set_forwarding_type" : "node_38"
+ },
+ "default_entry" : {
+ "action_id" : 24,
+ "action_const" : true,
+ "action_data" : ["0x0"],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "forwarding.bridging",
+ "id" : 24,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 55,
+ "column" : 10,
+ "source_fragment" : "bridging"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["vlan_tag", "vlan_id"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ethernet", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "ternary",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [26, 4],
+ "actions" : ["forwarding.set_next_id", "NoAction"],
+ "base_default_next" : "forwarding.acl",
+ "next_tables" : {
+ "forwarding.set_next_id" : "forwarding.acl",
+ "NoAction" : "forwarding.acl"
+ },
+ "default_entry" : {
+ "action_id" : 4,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "forwarding.mpls",
+ "id" : 25,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 67,
+ "column" : 10,
+ "source_fragment" : "mpls"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["mpls", "label"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [32, 5],
+ "actions" : ["forwarding.pop_mpls_and_next", "NoAction"],
+ "base_default_next" : "tbl_act_13",
+ "next_tables" : {
+ "forwarding.pop_mpls_and_next" : "tbl_act_13",
+ "NoAction" : "tbl_act_13"
+ },
+ "default_entry" : {
+ "action_id" : 5,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "tbl_act_13",
+ "id" : 26,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [56],
+ "actions" : ["act_13"],
+ "base_default_next" : "forwarding.acl",
+ "next_tables" : {
+ "act_13" : "forwarding.acl"
+ },
+ "default_entry" : {
+ "action_id" : 56,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "forwarding.unicast_v4",
+ "id" : 27,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 78,
+ "column" : 10,
+ "source_fragment" : "unicast_v4"
+ },
+ "key" : [
+ {
+ "match_type" : "lpm",
+ "target" : ["ipv4", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "lpm",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [27, 6],
+ "actions" : ["forwarding.set_next_id", "NoAction"],
+ "base_default_next" : "forwarding.acl",
+ "next_tables" : {
+ "forwarding.set_next_id" : "forwarding.acl",
+ "NoAction" : "forwarding.acl"
+ },
+ "default_entry" : {
+ "action_id" : 6,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "forwarding.multicast_v4",
+ "id" : 28,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 89,
+ "column" : 10,
+ "source_fragment" : "multicast_v4"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["vlan_tag", "vlan_id"],
+ "mask" : null
+ },
+ {
+ "match_type" : "lpm",
+ "target" : ["ipv4", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "lpm",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [28, 7],
+ "actions" : ["forwarding.set_next_id", "NoAction"],
+ "base_default_next" : "forwarding.acl",
+ "next_tables" : {
+ "forwarding.set_next_id" : "forwarding.acl",
+ "NoAction" : "forwarding.acl"
+ },
+ "default_entry" : {
+ "action_id" : 7,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "forwarding.unicast_v6",
+ "id" : 29,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 101,
+ "column" : 10,
+ "source_fragment" : "unicast_v6"
+ },
+ "key" : [
+ {
+ "match_type" : "lpm",
+ "target" : ["ipv6", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "lpm",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [29, 8],
+ "actions" : ["forwarding.set_next_id", "NoAction"],
+ "base_default_next" : "forwarding.acl",
+ "next_tables" : {
+ "forwarding.set_next_id" : "forwarding.acl",
+ "NoAction" : "forwarding.acl"
+ },
+ "default_entry" : {
+ "action_id" : 8,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "forwarding.multicast_v6",
+ "id" : 30,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 112,
+ "column" : 10,
+ "source_fragment" : "multicast_v6"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["vlan_tag", "vlan_id"],
+ "mask" : null
+ },
+ {
+ "match_type" : "lpm",
+ "target" : ["ipv6", "dst_addr"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "lpm",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [30, 9],
+ "actions" : ["forwarding.set_next_id", "NoAction"],
+ "base_default_next" : "forwarding.acl",
+ "next_tables" : {
+ "forwarding.set_next_id" : "forwarding.acl",
+ "NoAction" : "forwarding.acl"
+ },
+ "default_entry" : {
+ "action_id" : 9,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "forwarding.acl",
+ "id" : 31,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 124,
+ "column" : 10,
+ "source_fragment" : "acl"
+ },
+ "key" : [
+ {
+ "match_type" : "ternary",
+ "target" : ["standard_metadata", "ingress_port"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["scalars", "fabric_metadata_t.ip_proto"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["scalars", "fabric_metadata_t.l4_src_port"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["scalars", "fabric_metadata_t.l4_dst_port"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["scalars", "fabric_metadata_t.original_ether_type"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ethernet", "dst_addr"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ethernet", "src_addr"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["vlan_tag", "vlan_id"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ipv4", "src_addr"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["ipv4", "dst_addr"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["icmp", "icmp_type"],
+ "mask" : null
+ },
+ {
+ "match_type" : "ternary",
+ "target" : ["icmp", "icmp_code"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "ternary",
+ "type" : "simple",
+ "max_size" : 256,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [31, 33, 25, 14],
+ "actions" : ["forwarding.set_next_id", "forwarding.duplicate_to_controller", "forwarding.drop", "nop"],
+ "base_default_next" : "next.simple",
+ "next_tables" : {
+ "forwarding.set_next_id" : "next.simple",
+ "forwarding.duplicate_to_controller" : "next.simple",
+ "forwarding.drop" : "next.simple",
+ "nop" : "next.simple"
+ },
+ "default_entry" : {
+ "action_id" : 14,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "next.simple",
+ "id" : 32,
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 89,
+ "column" : 10,
+ "source_fragment" : "simple"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["scalars", "fabric_metadata_t.next_id"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [34, 35, 36, 39, 10],
+ "actions" : ["next.output", "next.set_vlan_output", "next.l3_routing", "next.mpls_routing_v4", "NoAction"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "__HIT__" : "tbl_act_14",
+ "__MISS__" : "tbl_act_15"
+ },
+ "default_entry" : {
+ "action_id" : 10,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "tbl_act_14",
+ "id" : 33,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [57],
+ "actions" : ["act_14"],
+ "base_default_next" : "node_55",
+ "next_tables" : {
+ "act_14" : "node_55"
+ },
+ "default_entry" : {
+ "action_id" : 57,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_15",
+ "id" : 34,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [58],
+ "actions" : ["act_15"],
+ "base_default_next" : "node_55",
+ "next_tables" : {
+ "act_15" : "node_55"
+ },
+ "default_entry" : {
+ "action_id" : 58,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_16",
+ "id" : 35,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [59],
+ "actions" : ["act_16"],
+ "base_default_next" : "next.hashed",
+ "next_tables" : {
+ "act_16" : "next.hashed"
+ },
+ "default_entry" : {
+ "action_id" : 59,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_17",
+ "id" : 36,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [60],
+ "actions" : ["act_17"],
+ "base_default_next" : "next.hashed",
+ "next_tables" : {
+ "act_17" : "next.hashed"
+ },
+ "default_entry" : {
+ "action_id" : 60,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "next.hashed",
+ "id" : 37,
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 103,
+ "column" : 10,
+ "source_fragment" : "hashed"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["scalars", "fabric_metadata_t.next_id"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "indirect_ws",
+ "action_profile" : "next.ecmp_selector",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [37, 40, 41, 11],
+ "actions" : ["next.l3_routing", "next.mpls_routing_v4", "next.mpls_routing_v6", "NoAction"],
+ "base_default_next" : "next.broadcast",
+ "next_tables" : {
+ "next.l3_routing" : "next.broadcast",
+ "next.mpls_routing_v4" : "next.broadcast",
+ "next.mpls_routing_v6" : "next.broadcast",
+ "NoAction" : "next.broadcast"
+ }
+ },
+ {
+ "name" : "next.broadcast",
+ "id" : 38,
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 126,
+ "column" : 10,
+ "source_fragment" : "broadcast"
+ },
+ "key" : [
+ {
+ "match_type" : "exact",
+ "target" : ["scalars", "fabric_metadata_t.next_id"],
+ "mask" : null
+ }
+ ],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : true,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [38, 12],
+ "actions" : ["next.set_mcast_group", "NoAction"],
+ "base_default_next" : "node_63",
+ "next_tables" : {
+ "next.set_mcast_group" : "node_63",
+ "NoAction" : "node_63"
+ },
+ "default_entry" : {
+ "action_id" : 12,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "tbl_act_18",
+ "id" : 39,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [61],
+ "actions" : ["act_18"],
+ "base_default_next" : "node_65",
+ "next_tables" : {
+ "act_18" : "node_65"
+ },
+ "default_entry" : {
+ "action_id" : 61,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_19",
+ "id" : 40,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [62],
+ "actions" : ["act_19"],
+ "base_default_next" : "node_67",
+ "next_tables" : {
+ "act_19" : "node_67"
+ },
+ "default_entry" : {
+ "action_id" : 62,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_20",
+ "id" : 41,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [63],
+ "actions" : ["act_20"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "act_20" : null
+ },
+ "default_entry" : {
+ "action_id" : 63,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ }
+ ],
+ "action_profiles" : [
+ {
+ "name" : "next.ecmp_selector",
+ "id" : 0,
+ "max_size" : 64,
+ "selector" : {
+ "algo" : "crc16",
+ "input" : [
+ {
+ "type" : "field",
+ "value" : ["ethernet", "dst_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["ethernet", "src_addr"]
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.ip_proto"]
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_src_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.l4_dst_port"]
+ }
+ ]
+ }
+ }
+ ],
+ "conditionals" : [
+ {
+ "name" : "node_2",
+ "id" : 0,
+ "source_info" : {
+ "filename" : "include/control/packetio.p4",
+ "line" : 25,
+ "column" : 12,
+ "source_fragment" : "hdr.packet_out.isValid()"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["packet_out", "$valid$"]
+ }
+ }
+ },
+ "true_next" : "tbl_act",
+ "false_next" : "tbl_act_0"
+ },
+ {
+ "name" : "node_5",
+ "id" : 1,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 141,
+ "column" : 12,
+ "source_fragment" : "gtpu.isValid() && gtpu.msgtype == 0xff"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "and",
+ "left" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["gtpu", "$valid$"]
+ }
+ }
+ },
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["gtpu", "msgtype"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ }
+ }
+ },
+ "true_next" : "tbl_act_1",
+ "false_next" : "spgw_ingress.ue_filter_table"
+ },
+ {
+ "name" : "node_10",
+ "id" : 2,
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_2"]
+ }
+ }
+ },
+ "true_next" : "tbl_act_4",
+ "false_next" : "node_17"
+ },
+ {
+ "name" : "node_15",
+ "id" : 3,
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_3"]
+ }
+ }
+ },
+ "true_next" : "tbl_act_7",
+ "false_next" : "node_17"
+ },
+ {
+ "name" : "node_17",
+ "id" : 4,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 152,
+ "column" : 12,
+ "source_fragment" : "!spgw_meta.do_spgw"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "not",
+ "left" : null,
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["spgw", "do_spgw"]
+ }
+ }
+ }
+ }
+ },
+ "true_next" : "tbl_act_8",
+ "false_next" : "node_19"
+ },
+ {
+ "name" : "node_19",
+ "id" : 5,
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "not",
+ "left" : null,
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_hasReturned_0"]
+ }
+ }
+ }
+ }
+ },
+ "true_next" : "node_20",
+ "false_next" : "node_27"
+ },
+ {
+ "name" : "node_20",
+ "id" : 6,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 157,
+ "column" : 12,
+ "source_fragment" : "spgw_meta.direction == DIR_UPLINK"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["spgw", "direction"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ }
+ },
+ "true_next" : "tbl_spgw_ingress_gtpu_decap",
+ "false_next" : "spgw_ingress.sdf_rule_lookup"
+ },
+ {
+ "name" : "node_25",
+ "id" : 7,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 168,
+ "column" : 12,
+ "source_fragment" : "spgw_meta.pcc_gate_status == PCC_GATE_CLOSED"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["spgw", "pcc_gate_status"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "tbl_act_9",
+ "false_next" : "node_27"
+ },
+ {
+ "name" : "node_27",
+ "id" : 8,
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "not",
+ "left" : null,
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_hasReturned_0"]
+ }
+ }
+ }
+ }
+ },
+ "true_next" : "node_28",
+ "false_next" : "filtering.ingress_port_vlan"
+ },
+ {
+ "name" : "node_28",
+ "id" : 9,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 173,
+ "column" : 12,
+ "source_fragment" : "spgw_meta.direction == DIR_DOWNLINK"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["spgw", "direction"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "spgw_ingress.dl_sess_lookup",
+ "false_next" : "filtering.ingress_port_vlan"
+ },
+ {
+ "name" : "node_32",
+ "id" : 10,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 174,
+ "column" : 16,
+ "source_fragment" : "!dl_sess_lookup.apply().hit"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "not",
+ "left" : null,
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_tmp_4"]
+ }
+ }
+ }
+ }
+ },
+ "true_next" : "tbl_act_12",
+ "false_next" : "node_34"
+ },
+ {
+ "name" : "node_34",
+ "id" : 11,
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "not",
+ "left" : null,
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "spgw_ingress_hasReturned_0"]
+ }
+ }
+ }
+ }
+ },
+ "true_next" : "spgw_ingress.ue_cdr_table",
+ "false_next" : "filtering.ingress_port_vlan"
+ },
+ {
+ "name" : "node_38",
+ "id" : 12,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 154,
+ "column" : 11,
+ "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00"
+ }
+ }
+ },
+ "true_next" : "forwarding.bridging",
+ "false_next" : "node_40"
+ },
+ {
+ "name" : "node_40",
+ "id" : 13,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 155,
+ "column" : 17,
+ "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "forwarding.mpls",
+ "false_next" : "node_43"
+ },
+ {
+ "name" : "node_43",
+ "id" : 14,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 162,
+ "column" : 17,
+ "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x02"
+ }
+ }
+ },
+ "true_next" : "forwarding.unicast_v4",
+ "false_next" : "node_45"
+ },
+ {
+ "name" : "node_45",
+ "id" : 15,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 163,
+ "column" : 17,
+ "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x03"
+ }
+ }
+ },
+ "true_next" : "forwarding.multicast_v4",
+ "false_next" : "node_47"
+ },
+ {
+ "name" : "node_47",
+ "id" : 16,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 164,
+ "column" : 17,
+ "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x04"
+ }
+ }
+ },
+ "true_next" : "forwarding.unicast_v6",
+ "false_next" : "node_49"
+ },
+ {
+ "name" : "node_49",
+ "id" : 17,
+ "source_info" : {
+ "filename" : "include/control/forwarding.p4",
+ "line" : 165,
+ "column" : 17,
+ "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x05"
+ }
+ }
+ },
+ "true_next" : "forwarding.multicast_v6",
+ "false_next" : "forwarding.acl"
+ },
+ {
+ "name" : "node_55",
+ "id" : 18,
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "next_tmp_0"]
+ }
+ }
+ },
+ "true_next" : "node_56",
+ "false_next" : "next.hashed"
+ },
+ {
+ "name" : "node_56",
+ "id" : 19,
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 138,
+ "column" : 16,
+ "source_fragment" : "!hdr.mpls.isValid()"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "not",
+ "left" : null,
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["mpls", "$valid$"]
+ }
+ }
+ }
+ }
+ },
+ "true_next" : "node_57",
+ "false_next" : "next.hashed"
+ },
+ {
+ "name" : "node_57",
+ "id" : 20,
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 139,
+ "column" : 19,
+ "source_fragment" : "hdr.ipv4.isValid()"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["ipv4", "$valid$"]
+ }
+ }
+ },
+ "true_next" : "tbl_act_16",
+ "false_next" : "node_59"
+ },
+ {
+ "name" : "node_59",
+ "id" : 21,
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 142,
+ "column" : 25,
+ "source_fragment" : "hdr.ipv6.isValid()"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["ipv6", "$valid$"]
+ }
+ }
+ },
+ "true_next" : "tbl_act_17",
+ "false_next" : "next.hashed"
+ },
+ {
+ "name" : "node_63",
+ "id" : 22,
+ "source_info" : {
+ "filename" : "include/control/port_counter.p4",
+ "line" : 27,
+ "column" : 12,
+ "source_fragment" : "standard_metadata.egress_spec < 511"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "<",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_spec"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01ff"
+ }
+ }
+ },
+ "true_next" : "tbl_act_18",
+ "false_next" : "node_65"
+ },
+ {
+ "name" : "node_65",
+ "id" : 23,
+ "source_info" : {
+ "filename" : "include/control/port_counter.p4",
+ "line" : 30,
+ "column" : 12,
+ "source_fragment" : "standard_metadata.ingress_port < 511"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "<",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01ff"
+ }
+ }
+ },
+ "true_next" : "tbl_act_19",
+ "false_next" : "node_67"
+ },
+ {
+ "name" : "node_67",
+ "id" : 24,
+ "source_info" : {
+ "filename" : "include/control/next.p4",
+ "line" : 159,
+ "column" : 12,
+ "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["scalars", "fabric_metadata_t.pop_vlan_at_egress"]
+ }
+ }
+ },
+ "false_next" : null,
+ "true_next" : "tbl_act_20"
+ }
+ ]
+ },
+ {
+ "name" : "egress",
+ "id" : 1,
+ "source_info" : {
+ "filename" : "fabric.p4",
+ "line" : 60,
+ "column" : 8,
+ "source_fragment" : "FabricEgress"
+ },
+ "init_table" : "node_71",
+ "tables" : [
+ {
+ "name" : "tbl_act_21",
+ "id" : 42,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [65],
+ "actions" : ["act_21"],
+ "base_default_next" : "tbl_act_22",
+ "next_tables" : {
+ "act_21" : "tbl_act_22"
+ },
+ "default_entry" : {
+ "action_id" : 65,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_act_22",
+ "id" : 43,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [66],
+ "actions" : ["act_22"],
+ "base_default_next" : "node_74",
+ "next_tables" : {
+ "act_22" : "node_74"
+ },
+ "default_entry" : {
+ "action_id" : 66,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ },
+ {
+ "name" : "tbl_spgw_egress_gtpu_encap",
+ "id" : 44,
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [64],
+ "actions" : ["spgw_egress.gtpu_encap"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "spgw_egress.gtpu_encap" : null
+ },
+ "default_entry" : {
+ "action_id" : 64,
+ "action_const" : true,
+ "action_data" : [],
+ "action_entry_const" : true
+ }
+ }
+ ],
+ "action_profiles" : [],
+ "conditionals" : [
+ {
+ "name" : "node_71",
+ "id" : 25,
+ "source_info" : {
+ "filename" : "include/control/packetio.p4",
+ "line" : 38,
+ "column" : 12,
+ "source_fragment" : "standard_metadata.egress_port == CPU_PORT"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "egress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00ff"
+ }
+ }
+ },
+ "true_next" : "tbl_act_21",
+ "false_next" : "tbl_act_22"
+ },
+ {
+ "name" : "node_74",
+ "id" : 26,
+ "source_info" : {
+ "filename" : "include/spgw.p4",
+ "line" : 231,
+ "column" : 12,
+ "source_fragment" : "spgw_meta.do_spgw && spgw_meta.direction == DIR_DOWNLINK"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "and",
+ "left" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["spgw", "do_spgw"]
+ }
+ }
+ },
+ "right" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["spgw", "direction"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ }
+ }
+ },
+ "false_next" : null,
+ "true_next" : "tbl_spgw_egress_gtpu_encap"
+ }
+ ]
+ }
+ ],
+ "checksums" : [
+ {
+ "name" : "cksum",
+ "id" : 0,
+ "target" : ["ipv4", "hdr_checksum"],
+ "type" : "generic",
+ "calculation" : "calc",
+ "if_cond" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["ipv4", "$valid$"]
+ }
+ }
+ }
+ },
+ {
+ "name" : "cksum_0",
+ "id" : 1,
+ "target" : ["gtpu_ipv4", "hdr_checksum"],
+ "type" : "generic",
+ "calculation" : "calc_0",
+ "if_cond" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "$valid$"]
+ }
+ }
+ }
+ },
+ {
+ "name" : "cksum_1",
+ "id" : 2,
+ "target" : ["ipv4", "hdr_checksum"],
+ "type" : "generic",
+ "calculation" : "calc_1",
+ "if_cond" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["ipv4", "$valid$"]
+ }
+ }
+ }
+ },
+ {
+ "name" : "cksum_2",
+ "id" : 3,
+ "target" : ["gtpu_ipv4", "hdr_checksum"],
+ "type" : "generic",
+ "calculation" : "calc_2",
+ "if_cond" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "d2b",
+ "left" : null,
+ "right" : {
+ "type" : "field",
+ "value" : ["gtpu_ipv4", "$valid$"]
+ }
+ }
+ }
+ }
+ ],
+ "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"]
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.p4info b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.p4info
new file mode 100644
index 0000000..03118ad
--- /dev/null
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.p4info
@@ -0,0 +1,1063 @@
+tables {
+ preamble {
+ id: 33574964
+ name: "spgw_ingress.ue_filter_table"
+ alias: "ue_filter_table"
+ }
+ match_fields {
+ id: 1
+ name: "ipv4.dst_addr"
+ bitwidth: 32
+ match_type: LPM
+ }
+ action_refs {
+ id: 16800567
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33570382
+ name: "spgw_ingress.s1u_filter_table"
+ alias: "s1u_filter_table"
+ }
+ match_fields {
+ id: 1
+ name: "gtpu_ipv4.dst_addr"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16800567
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33588697
+ name: "spgw_ingress.sdf_rule_lookup"
+ alias: "sdf_rule_lookup"
+ }
+ match_fields {
+ id: 1
+ name: "spgw_meta.direction"
+ bitwidth: 1
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "ipv4.src_addr"
+ bitwidth: 32
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 3
+ name: "ipv4.dst_addr"
+ bitwidth: 32
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 4
+ name: "ipv4.protocol"
+ bitwidth: 8
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 5
+ name: "spgw_meta.l4_src_port"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 6
+ name: "spgw_meta.l4_dst_port"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16828302
+ }
+ const_default_action_id: 16828302
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33560573
+ name: "spgw_ingress.pcc_rule_lookup"
+ alias: "pcc_rule_lookup"
+ }
+ match_fields {
+ id: 1
+ name: "spgw_meta.sdf_rule_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16834409
+ }
+ const_default_action_id: 16834409
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33618268
+ name: "spgw_ingress.pcc_info_lookup"
+ alias: "pcc_info_lookup"
+ }
+ match_fields {
+ id: 1
+ name: "spgw_meta.pcc_rule_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16827998
+ }
+ const_default_action_id: 16827998
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33590421
+ name: "spgw_ingress.dl_sess_lookup"
+ alias: "dl_sess_lookup"
+ }
+ match_fields {
+ id: 1
+ name: "ipv4.dst_addr"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16784665
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33594626
+ name: "spgw_ingress.ue_cdr_table"
+ alias: "ue_cdr_table"
+ }
+ match_fields {
+ id: 1
+ name: "ipv4.dst_addr"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16800269
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302053240
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33578399
+ name: "filtering.ingress_port_vlan"
+ alias: "ingress_port_vlan"
+ }
+ match_fields {
+ id: 1
+ name: "standard_metadata.ingress_port"
+ bitwidth: 9
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "hdr.vlan_tag.is_valid"
+ bitwidth: 1
+ match_type: EXACT
+ }
+ match_fields {
+ id: 3
+ name: "hdr.vlan_tag.vlan_id"
+ bitwidth: 12
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16794505
+ }
+ action_refs {
+ id: 16782367
+ }
+ action_refs {
+ id: 16819938
+ }
+ action_refs {
+ id: 16826365
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 302015144
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33619540
+ name: "filtering.fwd_classifier"
+ alias: "fwd_classifier"
+ }
+ match_fields {
+ id: 1
+ name: "standard_metadata.ingress_port"
+ bitwidth: 9
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "hdr.ethernet.dst_addr"
+ bitwidth: 48
+ match_type: EXACT
+ }
+ match_fields {
+ id: 3
+ name: "fabric_metadata.original_ether_type"
+ bitwidth: 16
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16838162
+ }
+ const_default_action_id: 16838162
+ direct_resource_ids: 302033694
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33569146
+ name: "forwarding.bridging"
+ alias: "bridging"
+ }
+ match_fields {
+ id: 1
+ name: "hdr.vlan_tag.vlan_id"
+ bitwidth: 12
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "hdr.ethernet.dst_addr"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16829931
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302047449
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33565386
+ name: "forwarding.mpls"
+ alias: "mpls"
+ }
+ match_fields {
+ id: 1
+ name: "hdr.mpls.label"
+ bitwidth: 20
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16842717
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302001577
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33589684
+ name: "forwarding.unicast_v4"
+ alias: "unicast_v4"
+ }
+ match_fields {
+ id: 1
+ name: "hdr.ipv4.dst_addr"
+ bitwidth: 32
+ match_type: LPM
+ }
+ action_refs {
+ id: 16829931
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302038636
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33615204
+ name: "forwarding.multicast_v4"
+ alias: "multicast_v4"
+ }
+ match_fields {
+ id: 1
+ name: "hdr.vlan_tag.vlan_id"
+ bitwidth: 12
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "hdr.ipv4.dst_addr"
+ bitwidth: 32
+ match_type: LPM
+ }
+ action_refs {
+ id: 16829931
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302009236
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33608345
+ name: "forwarding.unicast_v6"
+ alias: "unicast_v6"
+ }
+ match_fields {
+ id: 1
+ name: "hdr.ipv6.dst_addr"
+ bitwidth: 128
+ match_type: LPM
+ }
+ action_refs {
+ id: 16829931
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 301998193
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33592333
+ name: "forwarding.multicast_v6"
+ alias: "multicast_v6"
+ }
+ match_fields {
+ id: 1
+ name: "hdr.vlan_tag.vlan_id"
+ bitwidth: 12
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "hdr.ipv6.dst_addr"
+ bitwidth: 128
+ match_type: LPM
+ }
+ action_refs {
+ id: 16829931
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302003792
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33587782
+ name: "forwarding.acl"
+ alias: "acl"
+ }
+ match_fields {
+ id: 1
+ name: "standard_metadata.ingress_port"
+ bitwidth: 9
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 2
+ name: "fabric_metadata.ip_proto"
+ bitwidth: 8
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 3
+ name: "fabric_metadata.l4_src_port"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 4
+ name: "fabric_metadata.l4_dst_port"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 5
+ name: "fabric_metadata.original_ether_type"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 6
+ name: "hdr.ethernet.dst_addr"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 7
+ name: "hdr.ethernet.src_addr"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 8
+ name: "hdr.vlan_tag.vlan_id"
+ bitwidth: 12
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 9
+ name: "hdr.ipv4.src_addr"
+ bitwidth: 32
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 10
+ name: "hdr.ipv4.dst_addr"
+ bitwidth: 32
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 11
+ name: "hdr.icmp.icmp_type"
+ bitwidth: 8
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 12
+ name: "hdr.icmp.icmp_code"
+ bitwidth: 8
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16829931
+ }
+ action_refs {
+ id: 16805452
+ }
+ action_refs {
+ id: 16815978
+ }
+ action_refs {
+ id: 16819938
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 302000008
+ size: 256
+}
+tables {
+ preamble {
+ id: 33615740
+ name: "next.simple"
+ alias: "simple"
+ }
+ match_fields {
+ id: 1
+ name: "fabric_metadata.next_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16818315
+ }
+ action_refs {
+ id: 16837690
+ }
+ action_refs {
+ id: 16804266
+ }
+ action_refs {
+ id: 16841192
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 301991179
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33569488
+ name: "next.hashed"
+ alias: "hashed"
+ }
+ match_fields {
+ id: 1
+ name: "fabric_metadata.next_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16804266
+ }
+ action_refs {
+ id: 16841192
+ }
+ action_refs {
+ id: 16788519
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ implementation_id: 285225078
+ direct_resource_ids: 301993193
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33608545
+ name: "next.broadcast"
+ alias: "broadcast"
+ }
+ match_fields {
+ id: 1
+ name: "fabric_metadata.next_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16778974
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 301995093
+ size: 1024
+}
+actions {
+ preamble {
+ id: 16800567
+ name: "NoAction"
+ alias: "NoAction"
+ }
+}
+actions {
+ preamble {
+ id: 16819938
+ name: "nop"
+ alias: "nop"
+ }
+}
+actions {
+ preamble {
+ id: 16808035
+ name: "spgw_ingress.gtpu_decap"
+ alias: "gtpu_decap"
+ }
+}
+actions {
+ preamble {
+ id: 16828302
+ name: "spgw_ingress.set_sdf_rule_id"
+ alias: "set_sdf_rule_id"
+ }
+ params {
+ id: 1
+ name: "id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16834409
+ name: "spgw_ingress.set_pcc_rule_id"
+ alias: "set_pcc_rule_id"
+ }
+ params {
+ id: 1
+ name: "id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16827998
+ name: "spgw_ingress.set_pcc_info"
+ alias: "set_pcc_info"
+ }
+ params {
+ id: 1
+ name: "gate_status"
+ bitwidth: 1
+ }
+}
+actions {
+ preamble {
+ id: 16784665
+ name: "spgw_ingress.set_dl_sess_info"
+ alias: "set_dl_sess_info"
+ }
+ params {
+ id: 1
+ name: "dl_sess_teid"
+ bitwidth: 32
+ }
+ params {
+ id: 2
+ name: "dl_sess_enb_addr"
+ bitwidth: 32
+ }
+ params {
+ id: 3
+ name: "dl_sess_s1u_addr"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16800269
+ name: "spgw_ingress.update_ue_cdr"
+ alias: "update_ue_cdr"
+ }
+}
+actions {
+ preamble {
+ id: 16826365
+ name: "filtering.drop"
+ alias: "filtering.drop"
+ }
+}
+actions {
+ preamble {
+ id: 16782367
+ name: "filtering.set_vlan"
+ alias: "set_vlan"
+ }
+ params {
+ id: 1
+ name: "new_vlan_id"
+ bitwidth: 12
+ }
+}
+actions {
+ preamble {
+ id: 16794505
+ name: "filtering.push_internal_vlan"
+ alias: "push_internal_vlan"
+ }
+ params {
+ id: 1
+ name: "new_vlan_id"
+ bitwidth: 12
+ }
+}
+actions {
+ preamble {
+ id: 16838162
+ name: "filtering.set_forwarding_type"
+ alias: "set_forwarding_type"
+ }
+ params {
+ id: 1
+ name: "fwd_type"
+ bitwidth: 3
+ }
+}
+actions {
+ preamble {
+ id: 16815978
+ name: "forwarding.drop"
+ alias: "forwarding.drop"
+ }
+}
+actions {
+ preamble {
+ id: 16829931
+ name: "forwarding.set_next_id"
+ alias: "set_next_id"
+ }
+ params {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16842717
+ name: "forwarding.pop_mpls_and_next"
+ alias: "pop_mpls_and_next"
+ }
+ params {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16805452
+ name: "forwarding.duplicate_to_controller"
+ alias: "duplicate_to_controller"
+ }
+}
+actions {
+ preamble {
+ id: 16818315
+ name: "next.output"
+ alias: "output"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+}
+actions {
+ preamble {
+ id: 16837690
+ name: "next.set_vlan_output"
+ alias: "set_vlan_output"
+ }
+ params {
+ id: 1
+ name: "new_vlan_id"
+ bitwidth: 12
+ }
+ params {
+ id: 2
+ name: "port_num"
+ bitwidth: 9
+ }
+}
+actions {
+ preamble {
+ id: 16804266
+ name: "next.l3_routing"
+ alias: "l3_routing"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+ params {
+ id: 2
+ name: "smac"
+ bitwidth: 48
+ }
+ params {
+ id: 3
+ name: "dmac"
+ bitwidth: 48
+ }
+}
+actions {
+ preamble {
+ id: 16778974
+ name: "next.set_mcast_group"
+ alias: "set_mcast_group"
+ }
+ params {
+ id: 1
+ name: "gid"
+ bitwidth: 16
+ }
+ params {
+ id: 2
+ name: "smac"
+ bitwidth: 48
+ }
+}
+actions {
+ preamble {
+ id: 16841192
+ name: "next.mpls_routing_v4"
+ alias: "mpls_routing_v4"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+ params {
+ id: 2
+ name: "smac"
+ bitwidth: 48
+ }
+ params {
+ id: 3
+ name: "dmac"
+ bitwidth: 48
+ }
+ params {
+ id: 4
+ name: "label"
+ bitwidth: 20
+ }
+}
+actions {
+ preamble {
+ id: 16788519
+ name: "next.mpls_routing_v6"
+ alias: "mpls_routing_v6"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+ params {
+ id: 2
+ name: "smac"
+ bitwidth: 48
+ }
+ params {
+ id: 3
+ name: "dmac"
+ bitwidth: 48
+ }
+ params {
+ id: 4
+ name: "label"
+ bitwidth: 20
+ }
+}
+actions {
+ preamble {
+ id: 16839213
+ name: "spgw_egress.gtpu_encap"
+ alias: "gtpu_encap"
+ }
+}
+action_profiles {
+ preamble {
+ id: 285225078
+ name: "next.ecmp_selector"
+ alias: "ecmp_selector"
+ }
+ table_ids: 33569488
+ with_selector: true
+ size: 64
+}
+counters {
+ preamble {
+ id: 302025528
+ name: "port_counters_control.egress_port_counter"
+ alias: "egress_port_counter"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 511
+}
+counters {
+ preamble {
+ id: 301999025
+ name: "port_counters_control.ingress_port_counter"
+ alias: "ingress_port_counter"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 511
+}
+direct_counters {
+ preamble {
+ id: 302053240
+ name: "spgw_ingress.ue_counter"
+ alias: "ue_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33594626
+}
+direct_counters {
+ preamble {
+ id: 302015144
+ name: "filtering.ingress_port_vlan_counter"
+ alias: "ingress_port_vlan_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33578399
+}
+direct_counters {
+ preamble {
+ id: 302033694
+ name: "filtering.fwd_classifier_counter"
+ alias: "fwd_classifier_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33619540
+}
+direct_counters {
+ preamble {
+ id: 302047449
+ name: "forwarding.bridging_counter"
+ alias: "bridging_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33569146
+}
+direct_counters {
+ preamble {
+ id: 302001577
+ name: "forwarding.mpls_counter"
+ alias: "mpls_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33565386
+}
+direct_counters {
+ preamble {
+ id: 302038636
+ name: "forwarding.unicast_v4_counter"
+ alias: "unicast_v4_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33589684
+}
+direct_counters {
+ preamble {
+ id: 302009236
+ name: "forwarding.multicast_v4_counter"
+ alias: "multicast_v4_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33615204
+}
+direct_counters {
+ preamble {
+ id: 301998193
+ name: "forwarding.unicast_v6_counter"
+ alias: "unicast_v6_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33608345
+}
+direct_counters {
+ preamble {
+ id: 302003792
+ name: "forwarding.multicast_v6_counter"
+ alias: "multicast_v6_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33592333
+}
+direct_counters {
+ preamble {
+ id: 302000008
+ name: "forwarding.acl_counter"
+ alias: "acl_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33587782
+}
+direct_counters {
+ preamble {
+ id: 301991179
+ name: "next.simple_counter"
+ alias: "simple_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33615740
+}
+direct_counters {
+ preamble {
+ id: 301993193
+ name: "next.hashed_counter"
+ alias: "hashed_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33569488
+}
+direct_counters {
+ preamble {
+ id: 301995093
+ name: "next.broadcast_counter"
+ alias: "broadcast_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33608545
+}
+controller_packet_metadata {
+ preamble {
+ id: 2868941301
+ name: "packet_in"
+ annotations: "@controller_header(\"packet_in\")"
+ }
+ metadata {
+ id: 1
+ name: "ingress_port"
+ bitwidth: 9
+ }
+ metadata {
+ id: 2
+ name: "_pad"
+ bitwidth: 7
+ }
+}
+controller_packet_metadata {
+ preamble {
+ id: 2868916615
+ name: "packet_out"
+ annotations: "@controller_header(\"packet_out\")"
+ }
+ metadata {
+ id: 1
+ name: "egress_port"
+ bitwidth: 9
+ }
+ metadata {
+ id: 2
+ name: "_pad"
+ bitwidth: 7
+ }
+}
diff --git a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
index 24aeb25..d6f4899 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
@@ -275,12 +275,12 @@
"header_union_stacks" : [],
"field_lists" : [],
"errors" : [
- ["NoError", 0],
- ["PacketTooShort", 1],
- ["NoMatch", 2],
- ["StackOutOfBounds", 3],
- ["HeaderTooShort", 4],
- ["ParserTimeout", 5]
+ ["NoError", 1],
+ ["PacketTooShort", 2],
+ ["NoMatch", 3],
+ ["StackOutOfBounds", 4],
+ ["HeaderTooShort", 5],
+ ["ParserTimeout", 6]
],
"enums" : [],
"parsers" : [
@@ -764,8 +764,8 @@
"name" : "deparser",
"id" : 0,
"source_info" : {
- "filename" : "./include/parser.p4",
- "line" : 125,
+ "filename" : "include/parser.p4",
+ "line" : 158,
"column" : 8,
"source_fragment" : "FabricDeparser"
},
@@ -850,7 +850,7 @@
"name" : "port_counters_control.egress_port_counter",
"id" : 12,
"source_info" : {
- "filename" : "./include/control/port_counter.p4",
+ "filename" : "include/control/port_counter.p4",
"line" : 23,
"column" : 38,
"source_fragment" : "egress_port_counter"
@@ -862,7 +862,7 @@
"name" : "port_counters_control.ingress_port_counter",
"id" : 13,
"source_info" : {
- "filename" : "./include/control/port_counter.p4",
+ "filename" : "include/control/port_counter.p4",
"line" : 24,
"column" : 38,
"source_fragment" : "ingress_port_counter"
@@ -877,8 +877,8 @@
"name" : "calc",
"id" : 0,
"source_info" : {
- "filename" : "./include/checksum.p4",
- "line" : 48,
+ "filename" : "include/checksum.p4",
+ "line" : 55,
"column" : 8,
"source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
},
@@ -934,8 +934,8 @@
"name" : "calc_0",
"id" : 1,
"source_info" : {
- "filename" : "./include/checksum.p4",
- "line" : 24,
+ "filename" : "include/checksum.p4",
+ "line" : 28,
"column" : 8,
"source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
},
@@ -1065,7 +1065,7 @@
"op" : "drop",
"parameters" : [],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 31,
"column" : 8,
"source_fragment" : "mark_to_drop()"
@@ -1096,7 +1096,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 35,
"column" : 8,
"source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
@@ -1123,7 +1123,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 41,
"column" : 8,
"source_fragment" : "hdr.vlan_tag.setValid()"
@@ -1142,7 +1142,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 42,
"column" : 8,
"source_fragment" : "hdr.vlan_tag.cfi = 0"
@@ -1161,7 +1161,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 43,
"column" : 8,
"source_fragment" : "hdr.vlan_tag.pri = 0"
@@ -1180,7 +1180,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 44,
"column" : 8,
"source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
@@ -1199,7 +1199,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/../define.p4",
+ "filename" : "include/control/../define.p4",
"line" : 32,
"column" : 31,
"source_fragment" : "0x8100; ..."
@@ -1218,7 +1218,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 35,
"column" : 8,
"source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
@@ -1247,7 +1247,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 49,
"column" : 8,
"source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
@@ -1278,7 +1278,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 53,
"column" : 8,
"source_fragment" : "fabric_metadata.fwd_type = fwd_type"
@@ -1295,7 +1295,7 @@
"op" : "drop",
"parameters" : [],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 39,
"column" : 8,
"source_fragment" : "mark_to_drop()"
@@ -1326,7 +1326,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 43,
"column" : 8,
"source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1357,7 +1357,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 43,
"column" : 8,
"source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1388,7 +1388,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 43,
"column" : 8,
"source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1419,7 +1419,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 43,
"column" : 8,
"source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1450,7 +1450,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 43,
"column" : 8,
"source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1481,7 +1481,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 43,
"column" : 8,
"source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1508,7 +1508,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 47,
"column" : 8,
"source_fragment" : "hdr.mpls.setInvalid()"
@@ -1527,7 +1527,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 48,
"column" : 8,
"source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1553,8 +1553,8 @@
}
],
"source_info" : {
- "filename" : "./include/control/../define.p4",
- "line" : 48,
+ "filename" : "include/control/../define.p4",
+ "line" : 50,
"column" : 28,
"source_fragment" : "255; ..."
}
@@ -1584,7 +1584,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 33,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port_num"
@@ -1619,7 +1619,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 37,
"column" : 8,
"source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
@@ -1648,7 +1648,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 40,
"column" : 8,
"source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
@@ -1667,7 +1667,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 33,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1706,7 +1706,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 45,
"column" : 8,
"source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1725,7 +1725,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 49,
"column" : 8,
"source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -1744,7 +1744,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 33,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1783,7 +1783,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 45,
"column" : 8,
"source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1802,7 +1802,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 49,
"column" : 8,
"source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -1821,7 +1821,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 33,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1856,7 +1856,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 59,
"column" : 8,
"source_fragment" : "standard_metadata.mcast_grp = gid"
@@ -1875,7 +1875,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 45,
"column" : 8,
"source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1918,7 +1918,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 45,
"column" : 8,
"source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1937,7 +1937,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 49,
"column" : 8,
"source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -1956,7 +1956,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 33,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1971,7 +1971,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 65,
"column" : 8,
"source_fragment" : "hdr.mpls.setValid()"
@@ -1990,7 +1990,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/../define.p4",
+ "filename" : "include/control/../define.p4",
"line" : 33,
"column" : 31,
"source_fragment" : "0x8847; ..."
@@ -2009,7 +2009,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 67,
"column" : 8,
"source_fragment" : "hdr.mpls.label = label; ..."
@@ -2028,7 +2028,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 68,
"column" : 8,
"source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2047,7 +2047,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 69,
"column" : 8,
"source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2066,8 +2066,8 @@
}
],
"source_info" : {
- "filename" : "./include/control/../header.p4",
- "line" : 19,
+ "filename" : "include/control/../define.p4",
+ "line" : 60,
"column" : 32,
"source_fragment" : "64; ..."
}
@@ -2109,7 +2109,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 45,
"column" : 8,
"source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2128,7 +2128,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 49,
"column" : 8,
"source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2147,7 +2147,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 33,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2162,7 +2162,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 65,
"column" : 8,
"source_fragment" : "hdr.mpls.setValid()"
@@ -2181,7 +2181,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/../define.p4",
+ "filename" : "include/control/../define.p4",
"line" : 33,
"column" : 31,
"source_fragment" : "0x8847; ..."
@@ -2200,7 +2200,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 67,
"column" : 8,
"source_fragment" : "hdr.mpls.label = label; ..."
@@ -2219,7 +2219,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 68,
"column" : 8,
"source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2238,7 +2238,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 69,
"column" : 8,
"source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2257,8 +2257,8 @@
}
],
"source_info" : {
- "filename" : "./include/control/../header.p4",
- "line" : 19,
+ "filename" : "include/control/../define.p4",
+ "line" : 60,
"column" : 32,
"source_fragment" : "64; ..."
}
@@ -2300,7 +2300,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 45,
"column" : 8,
"source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2319,7 +2319,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 49,
"column" : 8,
"source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2338,7 +2338,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 33,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2353,7 +2353,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 65,
"column" : 8,
"source_fragment" : "hdr.mpls.setValid()"
@@ -2372,7 +2372,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/../define.p4",
+ "filename" : "include/control/../define.p4",
"line" : 33,
"column" : 31,
"source_fragment" : "0x8847; ..."
@@ -2391,7 +2391,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 67,
"column" : 8,
"source_fragment" : "hdr.mpls.label = label; ..."
@@ -2410,7 +2410,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 68,
"column" : 8,
"source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2429,7 +2429,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 69,
"column" : 8,
"source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2448,8 +2448,8 @@
}
],
"source_info" : {
- "filename" : "./include/control/../header.p4",
- "line" : 19,
+ "filename" : "include/control/../define.p4",
+ "line" : 60,
"column" : 32,
"source_fragment" : "64; ..."
}
@@ -2474,7 +2474,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/packetio.p4",
+ "filename" : "include/control/packetio.p4",
"line" : 26,
"column" : 12,
"source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
@@ -2489,7 +2489,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/packetio.p4",
+ "filename" : "include/control/packetio.p4",
"line" : 27,
"column" : 12,
"source_fragment" : "hdr.packet_out.setInvalid()"
@@ -2515,7 +2515,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/../define.p4",
+ "filename" : "include/control/../define.p4",
"line" : 35,
"column" : 31,
"source_fragment" : "0x0800; ..."
@@ -2534,7 +2534,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/../define.p4",
+ "filename" : "include/control/../define.p4",
"line" : 35,
"column" : 31,
"source_fragment" : "0x0800; ..."
@@ -2643,7 +2643,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 140,
"column" : 20,
"source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
@@ -2692,7 +2692,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 143,
"column" : 20,
"source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
@@ -2744,7 +2744,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/port_counter.p4",
+ "filename" : "include/control/port_counter.p4",
"line" : 28,
"column" : 12,
"source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
@@ -2796,7 +2796,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/port_counter.p4",
+ "filename" : "include/control/port_counter.p4",
"line" : 31,
"column" : 12,
"source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
@@ -2822,7 +2822,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 160,
"column" : 12,
"source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
@@ -2837,7 +2837,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 161,
"column" : 12,
"source_fragment" : "hdr.vlan_tag.setInvalid()"
@@ -2859,7 +2859,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/packetio.p4",
+ "filename" : "include/control/packetio.p4",
"line" : 39,
"column" : 12,
"source_fragment" : "hdr.packet_in.setValid()"
@@ -2878,7 +2878,7 @@
}
],
"source_info" : {
- "filename" : "./include/control/packetio.p4",
+ "filename" : "include/control/packetio.p4",
"line" : 40,
"column" : 12,
"source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
@@ -2893,7 +2893,7 @@
"id" : 0,
"source_info" : {
"filename" : "fabric.p4",
- "line" : 29,
+ "line" : 33,
"column" : 8,
"source_fragment" : "FabricIngress"
},
@@ -2926,7 +2926,7 @@
"name" : "filtering.ingress_port_vlan",
"id" : 1,
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 57,
"column" : 10,
"source_fragment" : "ingress_port_vlan"
@@ -2974,7 +2974,7 @@
"name" : "filtering.fwd_classifier",
"id" : 2,
"source_info" : {
- "filename" : "./include/control/filtering.p4",
+ "filename" : "include/control/filtering.p4",
"line" : 76,
"column" : 10,
"source_fragment" : "fwd_classifier"
@@ -3019,7 +3019,7 @@
"name" : "forwarding.bridging",
"id" : 3,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 55,
"column" : 10,
"source_fragment" : "bridging"
@@ -3060,7 +3060,7 @@
"name" : "forwarding.mpls",
"id" : 4,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 67,
"column" : 10,
"source_fragment" : "mpls"
@@ -3119,7 +3119,7 @@
"name" : "forwarding.unicast_v4",
"id" : 6,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 78,
"column" : 10,
"source_fragment" : "unicast_v4"
@@ -3155,7 +3155,7 @@
"name" : "forwarding.multicast_v4",
"id" : 7,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 89,
"column" : 10,
"source_fragment" : "multicast_v4"
@@ -3196,7 +3196,7 @@
"name" : "forwarding.unicast_v6",
"id" : 8,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 101,
"column" : 10,
"source_fragment" : "unicast_v6"
@@ -3232,7 +3232,7 @@
"name" : "forwarding.multicast_v6",
"id" : 9,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 112,
"column" : 10,
"source_fragment" : "multicast_v6"
@@ -3273,7 +3273,7 @@
"name" : "forwarding.acl",
"id" : 10,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 124,
"column" : 10,
"source_fragment" : "acl"
@@ -3366,7 +3366,7 @@
"name" : "next.simple",
"id" : 11,
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 89,
"column" : 10,
"source_fragment" : "simple"
@@ -3494,7 +3494,7 @@
"name" : "next.hashed",
"id" : 16,
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 103,
"column" : 10,
"source_fragment" : "hashed"
@@ -3527,7 +3527,7 @@
"name" : "next.broadcast",
"id" : 17,
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 126,
"column" : 10,
"source_fragment" : "broadcast"
@@ -3666,7 +3666,7 @@
"name" : "node_2",
"id" : 0,
"source_info" : {
- "filename" : "./include/control/packetio.p4",
+ "filename" : "include/control/packetio.p4",
"line" : 25,
"column" : 12,
"source_fragment" : "hdr.packet_out.isValid()"
@@ -3689,7 +3689,7 @@
"name" : "node_6",
"id" : 1,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 154,
"column" : 11,
"source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
@@ -3715,7 +3715,7 @@
"name" : "node_8",
"id" : 2,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 155,
"column" : 17,
"source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
@@ -3741,7 +3741,7 @@
"name" : "node_11",
"id" : 3,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 162,
"column" : 17,
"source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
@@ -3767,7 +3767,7 @@
"name" : "node_13",
"id" : 4,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 163,
"column" : 17,
"source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
@@ -3793,7 +3793,7 @@
"name" : "node_15",
"id" : 5,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 164,
"column" : 17,
"source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_UNICAST"
@@ -3819,7 +3819,7 @@
"name" : "node_17",
"id" : 6,
"source_info" : {
- "filename" : "./include/control/forwarding.p4",
+ "filename" : "include/control/forwarding.p4",
"line" : 165,
"column" : 17,
"source_fragment" : "fabric_metadata.fwd_type == FWD_IPV6_MULTICAST"
@@ -3862,7 +3862,7 @@
"name" : "node_24",
"id" : 8,
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 138,
"column" : 16,
"source_fragment" : "!hdr.mpls.isValid()"
@@ -3892,7 +3892,7 @@
"name" : "node_25",
"id" : 9,
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 139,
"column" : 19,
"source_fragment" : "hdr.ipv4.isValid()"
@@ -3915,7 +3915,7 @@
"name" : "node_27",
"id" : 10,
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 142,
"column" : 25,
"source_fragment" : "hdr.ipv6.isValid()"
@@ -3938,7 +3938,7 @@
"name" : "node_31",
"id" : 11,
"source_info" : {
- "filename" : "./include/control/port_counter.p4",
+ "filename" : "include/control/port_counter.p4",
"line" : 27,
"column" : 12,
"source_fragment" : "standard_metadata.egress_spec < 511"
@@ -3964,7 +3964,7 @@
"name" : "node_33",
"id" : 12,
"source_info" : {
- "filename" : "./include/control/port_counter.p4",
+ "filename" : "include/control/port_counter.p4",
"line" : 30,
"column" : 12,
"source_fragment" : "standard_metadata.ingress_port < 511"
@@ -3990,7 +3990,7 @@
"name" : "node_35",
"id" : 13,
"source_info" : {
- "filename" : "./include/control/next.p4",
+ "filename" : "include/control/next.p4",
"line" : 159,
"column" : 12,
"source_fragment" : "fabric_metadata.pop_vlan_at_egress"
@@ -4016,7 +4016,7 @@
"id" : 1,
"source_info" : {
"filename" : "fabric.p4",
- "line" : 50,
+ "line" : 60,
"column" : 8,
"source_fragment" : "FabricEgress"
},
@@ -4052,7 +4052,7 @@
"name" : "node_39",
"id" : 14,
"source_info" : {
- "filename" : "./include/control/packetio.p4",
+ "filename" : "include/control/packetio.p4",
"line" : 38,
"column" : 12,
"source_fragment" : "standard_metadata.egress_port == CPU_PORT"