Merge remote-tracking branch 'origin/master' into dev/murrelet
diff --git a/.gitreview b/.gitreview
index 328aec6..28ab9cf 100644
--- a/.gitreview
+++ b/.gitreview
@@ -3,4 +3,4 @@
port=29418
project=onos.git
defaultremote=origin
-defaultbranch=master
+defaultbranch=dev/murrelet
diff --git a/apps/p4runtime-test/src/test/java/org/onosproject/p4runtime/test/P4RuntimeTest.java b/apps/p4runtime-test/src/test/java/org/onosproject/p4runtime/test/P4RuntimeTest.java
index 74e6845..18b6bc6 100644
--- a/apps/p4runtime-test/src/test/java/org/onosproject/p4runtime/test/P4RuntimeTest.java
+++ b/apps/p4runtime-test/src/test/java/org/onosproject/p4runtime/test/P4RuntimeTest.java
@@ -49,7 +49,9 @@
import java.net.URL;
import java.util.concurrent.ExecutionException;
-import static org.onlab.util.ImmutableByteSequence.*;
+import static org.onlab.util.ImmutableByteSequence.copyFrom;
+import static org.onlab.util.ImmutableByteSequence.fit;
+import static org.onlab.util.ImmutableByteSequence.ofZeros;
import static org.onosproject.net.pi.model.PiPipeconf.ExtensionType.BMV2_JSON;
import static org.onosproject.net.pi.runtime.PiPacketOperation.Type.PACKET_OUT;
import static p4.P4RuntimeOuterClass.ActionProfileGroup.Type.SELECT;
diff --git a/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java b/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java
index f77763e..04cfc7a 100644
--- a/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java
+++ b/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java
@@ -89,6 +89,7 @@
private static final int NUM_LEAFS = 2;
private static final int NUM_SPINES = 2;
+ protected static final int HASHED_LINKS = 2;
private static final int FLOW_PRIORITY = 100;
private static final int CLEANUP_SLEEP = 2000;
@@ -416,7 +417,7 @@
newFlowRules.addAll(generateSpineRules(deviceId, hosts, topo));
}
} catch (FlowRuleGeneratorException e) {
- log.warn("Exception while executing flow rule generator: {}", e.toString());
+ log.warn("Exception while executing flow rule generator: {}", e.getMessage());
return;
}
diff --git a/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpFabricApp.java b/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpFabricApp.java
index 1b6d48b..4cac11b 100644
--- a/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpFabricApp.java
+++ b/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpFabricApp.java
@@ -59,6 +59,7 @@
import java.util.Set;
import java.util.stream.Collectors;
+import static java.lang.String.format;
import static java.util.stream.Collectors.toSet;
import static org.onlab.packet.EthType.EtherType.IPV4;
import static org.onosproject.net.pi.model.PiPipeconf.ExtensionType.BMV2_JSON;
@@ -74,8 +75,8 @@
private static final String APP_NAME = "org.onosproject.pi-ecmp-fabric";
private static final String PIPECONF_ID = "pi-demo-ecmp";
- private static final URL P4INFO_URL = EcmpFabricApp.class.getResource("/ecmp.p4info");
- private static final URL JSON_URL = EcmpFabricApp.class.getResource("/ecmp.json");
+ private static final URL P4INFO_URL = EcmpFabricApp.class.getResource("/ecmp_14.p4info");
+ private static final URL JSON_URL = EcmpFabricApp.class.getResource("/ecmp_14.json");
private static final PiPipeconf ECMP_PIPECONF = DefaultPiPipeconf.builder()
.withId(new PiPipeconfId(PIPECONF_ID))
@@ -220,15 +221,19 @@
}
private Pair<PiTableAction, List<FlowRule>> provisionEcmpPiTableAction(DeviceId deviceId,
- Set<PortNumber> fabricPorts)
+ Set<PortNumber> fabricPorts)
throws FlowRuleGeneratorException {
// Install ECMP group table entries that map from hash values to actual fabric ports...
int groupId = groupIdOf(deviceId, fabricPorts);
- int groupSize = fabricPorts.size();
+ if (fabricPorts.size() != HASHED_LINKS) {
+ throw new FlowRuleGeneratorException(format(
+ "Invalid number of fabric ports for %s, expected %d but found %d",
+ deviceId, HASHED_LINKS, fabricPorts.size()));
+ }
Iterator<PortNumber> portIterator = fabricPorts.iterator();
List<FlowRule> rules = Lists.newArrayList();
- for (short i = 0; i < groupSize; i++) {
+ for (short i = 0; i < HASHED_LINKS; i++) {
FlowRule rule = flowRuleBuilder(deviceId, EcmpInterpreter.ECMP_GROUP_TABLE)
.withSelector(
buildEcmpTrafficSelector(groupId, i))
@@ -240,19 +245,17 @@
rules.add(rule);
}
- PiTableAction piTableAction = buildEcmpPiTableAction(groupId, groupSize);
+ PiTableAction piTableAction = buildEcmpPiTableAction(groupId);
return Pair.of(piTableAction, rules);
}
- private PiTableAction buildEcmpPiTableAction(int groupId, int groupSize) {
+ private PiTableAction buildEcmpPiTableAction(int groupId) {
return PiAction.builder()
.withId(PiActionId.of(ECMP_GROUP_ACTION_NAME))
.withParameter(new PiActionParam(PiActionParamId.of(GROUP_ID),
ImmutableByteSequence.copyFrom(groupId)))
- .withParameter(new PiActionParam(PiActionParamId.of(GROUP_SIZE),
- ImmutableByteSequence.copyFrom(groupSize)))
.build();
}
diff --git a/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpInterpreter.java b/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpInterpreter.java
index 6b302f6..0781f52 100644
--- a/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpInterpreter.java
+++ b/apps/pi-demo/ecmp/src/main/java/org/onosproject/pi/demo/app/ecmp/EcmpInterpreter.java
@@ -31,7 +31,6 @@
protected static final String ECMP_GROUP_ACTION_NAME = "ecmp_group";
protected static final String GROUP_ID = "group_id";
protected static final String SELECTOR = "selector";
- protected static final String GROUP_SIZE = "groupSize";
protected static final String ECMP_GROUP_TABLE = "ecmp_group_table";
private static final ImmutableBiMap<Integer, PiTableId> TABLE_MAP = new ImmutableBiMap.Builder<Integer, PiTableId>()
diff --git a/apps/pi-demo/ecmp/src/main/resources/ecmp.json b/apps/pi-demo/ecmp/src/main/resources/ecmp_14.json
similarity index 100%
rename from apps/pi-demo/ecmp/src/main/resources/ecmp.json
rename to apps/pi-demo/ecmp/src/main/resources/ecmp_14.json
diff --git a/apps/pi-demo/ecmp/src/main/resources/ecmp.p4info b/apps/pi-demo/ecmp/src/main/resources/ecmp_14.p4info
similarity index 100%
rename from apps/pi-demo/ecmp/src/main/resources/ecmp.p4info
rename to apps/pi-demo/ecmp/src/main/resources/ecmp_14.p4info
diff --git a/apps/pi-demo/ecmp/src/main/resources/ecmp_16.json b/apps/pi-demo/ecmp/src/main/resources/ecmp_16.json
new file mode 120000
index 0000000..5b1b6d9
--- /dev/null
+++ b/apps/pi-demo/ecmp/src/main/resources/ecmp_16.json
@@ -0,0 +1 @@
+../../../../../../tools/test/p4src/p4-14/p4c-out/ecmp.json
\ No newline at end of file
diff --git a/apps/pi-demo/ecmp/src/main/resources/ecmp_16.p4info b/apps/pi-demo/ecmp/src/main/resources/ecmp_16.p4info
new file mode 120000
index 0000000..7fe1b6c
--- /dev/null
+++ b/apps/pi-demo/ecmp/src/main/resources/ecmp_16.p4info
@@ -0,0 +1 @@
+../../../../../../tools/test/p4src/p4-14/p4c-out/ecmp.p4info
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/net/pi/model/DefaultPiPipeconf.java b/core/api/src/main/java/org/onosproject/net/pi/model/DefaultPiPipeconf.java
index b6cea63..ecbd950 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/model/DefaultPiPipeconf.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/model/DefaultPiPipeconf.java
@@ -175,7 +175,8 @@
public PiPipeconf build() {
checkNotNull(id);
checkNotNull(pipelineModel);
- return new DefaultPiPipeconf(id, pipelineModel, behaviourMapBuilder.build(), extensionMapBuilder.build());
+ return new DefaultPiPipeconf(id, pipelineModel, behaviourMapBuilder.build(),
+ extensionMapBuilder.build());
}
}
diff --git a/core/api/src/main/java/org/onosproject/net/pi/model/PiPipeconf.java b/core/api/src/main/java/org/onosproject/net/pi/model/PiPipeconf.java
index f56fef3..a168ad3 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/model/PiPipeconf.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/model/PiPipeconf.java
@@ -95,6 +95,11 @@
/**
* Barefoot's Tofino configuration binary.
*/
- TOFINO_BIN
+ TOFINO_BIN,
+
+ /**
+ * Barefoot's Tofino Context configuration.
+ */
+ TOFINO_CONTEXT_JSON,
}
}
diff --git a/core/net/src/test/java/org/onosproject/net/pi/impl/MockInterpreter.java b/core/net/src/test/java/org/onosproject/net/pi/impl/MockInterpreter.java
index 2dff2f1..794e7f8 100644
--- a/core/net/src/test/java/org/onosproject/net/pi/impl/MockInterpreter.java
+++ b/core/net/src/test/java/org/onosproject/net/pi/impl/MockInterpreter.java
@@ -50,7 +50,7 @@
static final String TABLE0 = "table0";
static final String SEND_TO_CPU = "send_to_cpu";
static final String PORT = "port";
- static final String DROP = "drop";
+ static final String DROP = "_drop";
static final String SET_EGRESS_PORT = "set_egress_port";
static final PiHeaderFieldId IN_PORT_ID = PiHeaderFieldId.of("standard_metadata", "ingress_port");
diff --git a/drivers/barefoot/BUCK b/drivers/barefoot/BUCK
new file mode 100644
index 0000000..fada65d
--- /dev/null
+++ b/drivers/barefoot/BUCK
@@ -0,0 +1,35 @@
+GRPC_VER = '1.3.0'
+
+COMPILE_DEPS = [
+ '//lib:CORE_DEPS',
+ '//lib:minimal-json',
+ '//incubator/bmv2/model:onos-incubator-bmv2-model',
+ '//protocols/p4runtime/api:onos-protocols-p4runtime-api',
+ '//drivers/default:onos-drivers-default',
+ '//incubator/grpc-dependencies:grpc-core-repkg-' + GRPC_VER,
+ '//lib:grpc-netty-' + GRPC_VER,
+]
+
+BUNDLES = [
+ ':onos-drivers-barefoot',
+ '//incubator/bmv2/model:onos-incubator-bmv2-model',
+ '//drivers/default:onos-drivers-default',
+]
+
+osgi_jar(
+ deps = COMPILE_DEPS,
+)
+
+onos_app (
+ app_name = 'org.onosproject.drivers.barefoot',
+ title = 'Barefoot Device Drivers',
+ category = 'Drivers',
+ url = 'http://onosproject.org',
+ description = 'ONOS Barefoot device drivers application.',
+ included_bundles = BUNDLES,
+ required_apps = [
+ 'org.onosproject.generaldeviceprovider',
+ 'org.onosproject.protocols.p4runtime',
+ 'org.onosproject.drivers.p4runtime'
+ ],
+)
diff --git a/drivers/barefoot/features.xml b/drivers/barefoot/features.xml
new file mode 100644
index 0000000..1741897
--- /dev/null
+++ b/drivers/barefoot/features.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ ~ Copyright 2017-present Open Networking Laboratory
+ ~
+ ~ 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.
+ -->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}">
+ <feature name="${project.artifactId}" version="${project.version}"
+ description="${project.description}">
+ <feature>onos-api</feature>
+ <bundle>mvn:${project.groupId}/${project.artifactId}/${project.version}</bundle>
+
+ </feature>
+</features>
diff --git a/drivers/barefoot/pom.xml b/drivers/barefoot/pom.xml
new file mode 100644
index 0000000..cc19685
--- /dev/null
+++ b/drivers/barefoot/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright 2017-present Open Networking Laboratory
+ ~
+ ~ 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>onos-drivers-general</artifactId>
+ <groupId>org.onosproject</groupId>
+ <version>1.11.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>onos-drivers-bmv2</artifactId>
+ <packaging>bundle</packaging>
+
+ <description>BMv2 device drivers</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-grpc-protocol-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-netty</artifactId>
+ <version>1.3.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-incubator-bmv2-model</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-drivers</artifactId>
+ <version>1.11.0-SNAPSHOT</version>
+ </dependency>
+
+ <!-- protocols/p4runtime/api missing -->
+
+ </dependencies>
+
+ <properties>
+ <onos.app.name>org.onosproject.drivers.barefoot</onos.app.name>
+ <onos.app.origin>ON.Lab</onos.app.origin>
+ <onos.app.title>BMv2 Device Drivers</onos.app.title>
+ <onos.app.category>Drivers</onos.app.category>
+ <onos.app.url>http://onosproject.org</onos.app.url>
+ <onos.app.requires>
+ org.onosproject.generaldeviceprovider
+ </onos.app.requires>
+ </properties>
+
+</project>
diff --git a/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/BarefootDriversLoader.java b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/BarefootDriversLoader.java
new file mode 100644
index 0000000..f00b5ac
--- /dev/null
+++ b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/BarefootDriversLoader.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+
+package org.onosproject.drivers.barefoot;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onosproject.net.driver.AbstractDriverLoader;
+import org.onosproject.net.pi.runtime.PiPipeconfService;
+
+/**
+ * Loader for P4Runtime device drivers.
+ */
+@Component(immediate = true)
+public class BarefootDriversLoader extends AbstractDriverLoader {
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected PiPipeconfService pipeconfService;
+
+ public BarefootDriversLoader() {
+ super("/barefoot-drivers.xml");
+ }
+
+ @Override
+ public void activate() {
+ pipeconfService.register(TofinoDefaultPipeconfFactory.get());
+ super.activate();
+ }
+
+ @Override
+ public void deactivate() {
+ pipeconfService.remove(TofinoDefaultPipeconfFactory.get().id());
+ super.deactivate();
+ }
+}
diff --git a/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoDefaultInterpreter.java b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoDefaultInterpreter.java
new file mode 100644
index 0000000..ea3dfe0
--- /dev/null
+++ b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoDefaultInterpreter.java
@@ -0,0 +1,244 @@
+/*
+ * 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.
+ */
+
+package org.onosproject.drivers.barefoot;
+
+import com.google.common.collect.ImmutableBiMap;
+import com.google.common.collect.ImmutableList;
+import org.onlab.packet.Ethernet;
+import org.onlab.util.ImmutableByteSequence;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.Port;
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.driver.AbstractHandlerBehaviour;
+import org.onosproject.net.flow.TrafficTreatment;
+import org.onosproject.net.flow.criteria.Criterion;
+import org.onosproject.net.flow.instructions.Instruction;
+import org.onosproject.net.flow.instructions.Instructions;
+import org.onosproject.net.packet.DefaultInboundPacket;
+import org.onosproject.net.packet.InboundPacket;
+import org.onosproject.net.packet.OutboundPacket;
+import org.onosproject.net.pi.model.PiPipelineInterpreter;
+import org.onosproject.net.pi.runtime.PiAction;
+import org.onosproject.net.pi.runtime.PiActionId;
+import org.onosproject.net.pi.runtime.PiActionParam;
+import org.onosproject.net.pi.runtime.PiActionParamId;
+import org.onosproject.net.pi.runtime.PiHeaderFieldId;
+import org.onosproject.net.pi.runtime.PiPacketMetadata;
+import org.onosproject.net.pi.runtime.PiPacketMetadataId;
+import org.onosproject.net.pi.runtime.PiPacketOperation;
+import org.onosproject.net.pi.runtime.PiTableId;
+
+import java.nio.ByteBuffer;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+
+import static java.util.stream.Collectors.toList;
+import static org.onosproject.net.PortNumber.CONTROLLER;
+import static org.onosproject.net.PortNumber.FLOOD;
+import static org.onosproject.net.flow.instructions.Instruction.Type.OUTPUT;
+import static org.onosproject.net.pi.runtime.PiPacketOperation.Type.PACKET_OUT;
+
+/**
+ * Interpreter implementation for the default pipeconf.
+ */
+public class TofinoDefaultInterpreter extends AbstractHandlerBehaviour implements PiPipelineInterpreter {
+ private static final String TABLE0 = "table0";
+ private static final String SEND_TO_CPU = "send_to_cpu";
+ private static final String PORT = "port";
+ private static final String DROP = "_drop";
+ private static final String SET_EGRESS_PORT = "set_egress_port";
+ private static final String EGRESS_PORT = "egress_port";
+ private static final int PORT_NUMBER_BIT_WIDTH = 9;
+
+ private static final PiHeaderFieldId IN_PORT_ID = PiHeaderFieldId.of("ig_intr_md", "ingress_port");
+ private static final PiHeaderFieldId ETH_DST_ID = PiHeaderFieldId.of("ethernet", "dstAddr");
+ private static final PiHeaderFieldId ETH_SRC_ID = PiHeaderFieldId.of("ethernet", "srcAddr");
+ private static final PiHeaderFieldId ETH_TYPE_ID = PiHeaderFieldId.of("ethernet", "etherType");
+
+ private static final ImmutableBiMap<Criterion.Type, PiHeaderFieldId> CRITERION_MAP =
+ new ImmutableBiMap.Builder<Criterion.Type, PiHeaderFieldId>()
+ .put(Criterion.Type.IN_PORT, IN_PORT_ID)
+ .put(Criterion.Type.ETH_DST, ETH_DST_ID)
+ .put(Criterion.Type.ETH_SRC, ETH_SRC_ID)
+ .put(Criterion.Type.ETH_TYPE, ETH_TYPE_ID)
+ .build();
+
+ private static final ImmutableBiMap<Integer, PiTableId> TABLE_MAP = ImmutableBiMap.of(
+ 0, PiTableId.of(TABLE0));
+ public static final String INGRESS_PORT = "ingress_port";
+
+
+ @Override
+ public PiAction mapTreatment(TrafficTreatment treatment, PiTableId piTableId) throws PiInterpreterException {
+
+ if (treatment.allInstructions().size() == 0) {
+ // No instructions means drop for us.
+ return actionWithName(DROP);
+ } else if (treatment.allInstructions().size() > 1) {
+ // Otherwise, we understand treatments with only 1 instruction.
+ throw new PiPipelineInterpreter.PiInterpreterException("Treatment has multiple instructions");
+ }
+
+ Instruction instruction = treatment.allInstructions().get(0);
+
+ switch (instruction.type()) {
+ case OUTPUT:
+ Instructions.OutputInstruction outInstruction = (Instructions.OutputInstruction) instruction;
+ PortNumber port = outInstruction.port();
+ if (!port.isLogical()) {
+ return PiAction.builder()
+ .withId(PiActionId.of(SET_EGRESS_PORT))
+ .withParameter(new PiActionParam(PiActionParamId.of(PORT),
+ ImmutableByteSequence.copyFrom(port.toLong())))
+ .build();
+ } else if (port.equals(CONTROLLER)) {
+ return actionWithName(SEND_TO_CPU);
+ } else {
+ throw new PiInterpreterException("Egress on logical port not supported: " + port);
+ }
+ case NOACTION:
+ return actionWithName(DROP);
+ default:
+ throw new PiInterpreterException("Instruction type not supported: " + instruction.type().name());
+ }
+ }
+
+ @Override
+ public Collection<PiPacketOperation> mapOutboundPacket(OutboundPacket packet)
+ throws PiInterpreterException {
+ TrafficTreatment treatment = packet.treatment();
+
+ // default.p4 supports only OUTPUT instructions.
+ List<Instructions.OutputInstruction> outInstructions = treatment.allInstructions()
+ .stream()
+ .filter(i -> i.type().equals(OUTPUT))
+ .map(i -> (Instructions.OutputInstruction) i)
+ .collect(toList());
+
+ if (treatment.allInstructions().size() != outInstructions.size()) {
+ // There are other instructions that are not of type OUTPUT
+ throw new PiInterpreterException("Treatment not supported: " + treatment);
+ }
+
+ ImmutableList.Builder<PiPacketOperation> builder = ImmutableList.builder();
+ for (Instructions.OutputInstruction outInst : outInstructions) {
+ if (outInst.port().isLogical() && !outInst.port().equals(FLOOD)) {
+ throw new PiInterpreterException("Logical port not supported: " +
+ outInst.port());
+ } else if (outInst.port().equals(FLOOD)) {
+ //Since default.p4 does not support flood for each port of the device
+ // create a packet operation to send the packet out of that specific port
+ for (Port port : handler().get(DeviceService.class).getPorts(packet.sendThrough())) {
+ builder.add(createPiPacketOperation(packet.data(), port.number().toLong()));
+ }
+ } else {
+ builder.add(createPiPacketOperation(packet.data(), outInst.port().toLong()));
+ }
+ }
+ return builder.build();
+ }
+
+ @Override
+ public InboundPacket mapInboundPacket(DeviceId deviceId, PiPacketOperation packetIn)
+ throws PiInterpreterException {
+
+ //We are assuming that the packet is ethernet type
+ Ethernet ethPkt = new Ethernet();
+
+ ethPkt.deserialize(packetIn.data().asArray(), 0, packetIn.data().size());
+
+ //Returns the ingress port packet metadata
+ Optional<PiPacketMetadata> packetMetadata = packetIn.metadatas()
+ .stream().filter(metadata -> metadata.id().name().equals(INGRESS_PORT))
+ .findFirst();
+
+ if (packetMetadata.isPresent()) {
+
+ //Obtaining the ingress port as an immutable byte sequence
+ ImmutableByteSequence portByteSequence = packetMetadata.get().value();
+
+ //Converting immutableByteSequence to short
+ short s = portByteSequence.asReadOnlyBuffer().getShort();
+
+ ConnectPoint receivedFrom = new ConnectPoint(deviceId, PortNumber.portNumber(s));
+
+ //FIXME should be optimizable with .asReadOnlyBytebuffer
+ ByteBuffer rawData = ByteBuffer.wrap(packetIn.data().asArray());
+ return new DefaultInboundPacket(receivedFrom, ethPkt, rawData);
+
+ } else {
+ throw new PiInterpreterException("Can't get packet metadata for" + INGRESS_PORT);
+ }
+ }
+
+ private PiPacketOperation createPiPacketOperation(ByteBuffer data, long portNumber) throws PiInterpreterException {
+ //create the metadata
+ PiPacketMetadata metadata = createPacketMetadata(portNumber);
+
+ //Create the Packet operation
+ return PiPacketOperation.builder()
+ .withType(PACKET_OUT)
+ .withData(ImmutableByteSequence.copyFrom(data))
+ .withMetadatas(ImmutableList.of(metadata))
+ .build();
+ }
+
+ private PiPacketMetadata createPacketMetadata(long portNumber) throws PiInterpreterException {
+ ImmutableByteSequence portValue = ImmutableByteSequence.copyFrom(portNumber);
+ //FIXME remove hardcoded bitWidth and retrieve it from pipelineModel
+ try {
+ portValue = ImmutableByteSequence.fit(portValue, PORT_NUMBER_BIT_WIDTH);
+ } catch (ImmutableByteSequence.ByteSequenceTrimException e) {
+ throw new PiInterpreterException("Port number too big: {}" +
+ portNumber + " causes " + e.getMessage());
+ }
+ return PiPacketMetadata.builder()
+ .withId(PiPacketMetadataId.of(EGRESS_PORT))
+ .withValue(portValue)
+ .build();
+ }
+
+ /**
+ * Returns an action instance with no runtime parameters.
+ */
+ private PiAction actionWithName(String name) {
+ return PiAction.builder().withId(PiActionId.of(name)).build();
+ }
+
+ @Override
+ public Optional<PiHeaderFieldId> mapCriterionType(Criterion.Type type) {
+ return Optional.ofNullable(CRITERION_MAP.get(type));
+ }
+
+ @Override
+ public Optional<Criterion.Type> mapPiHeaderFieldId(PiHeaderFieldId headerFieldId) {
+ return Optional.ofNullable(CRITERION_MAP.inverse().get(headerFieldId));
+ }
+
+ @Override
+ public Optional<PiTableId> mapFlowRuleTableId(int flowRuleTableId) {
+ return Optional.ofNullable(TABLE_MAP.get(flowRuleTableId));
+ }
+
+ @Override
+ public Optional<Integer> mapPiTableId(PiTableId piTableId) {
+ return Optional.ofNullable(TABLE_MAP.inverse().get(piTableId));
+ }
+}
diff --git a/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoDefaultPipeconfFactory.java b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoDefaultPipeconfFactory.java
new file mode 100644
index 0000000..0de3adc
--- /dev/null
+++ b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoDefaultPipeconfFactory.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+
+package org.onosproject.drivers.barefoot;
+
+import org.onosproject.bmv2.model.Bmv2PipelineModelParser;
+import org.onosproject.driver.pipeline.DefaultSingleTablePipeline;
+import org.onosproject.net.behaviour.Pipeliner;
+import org.onosproject.net.pi.model.DefaultPiPipeconf;
+import org.onosproject.net.pi.model.PiPipeconf;
+import org.onosproject.net.pi.model.PiPipeconfId;
+import org.onosproject.net.pi.model.PiPipelineInterpreter;
+
+import java.net.URL;
+
+import static org.onosproject.net.pi.model.PiPipeconf.ExtensionType.BMV2_JSON;
+import static org.onosproject.net.pi.model.PiPipeconf.ExtensionType.TOFINO_CONTEXT_JSON;
+import static org.onosproject.net.pi.model.PiPipeconf.ExtensionType.P4_INFO_TEXT;
+import static org.onosproject.net.pi.model.PiPipeconf.ExtensionType.TOFINO_BIN;
+
+/**
+ * Factory of pipeconf implementation for the default.p4 program on Tofino.
+ */
+final class TofinoDefaultPipeconfFactory {
+
+ private static final String PIPECONF_ID = "tofino-default-pipeconf";
+ private static final String JSON_PATH = "/default.json";
+ private static final String CONTEXT_JSON_PATH = "/context.json";
+ private static final String TOFINO_PATH = "/tofino.bin";
+ private static final String P4INFO_PATH = "/default.p4info";
+
+ private static final PiPipeconf PIPECONF = buildPipeconf();
+
+ private TofinoDefaultPipeconfFactory() {
+ // Hides constructor.
+ }
+
+ static PiPipeconf get() {
+ return PIPECONF;
+ }
+
+ private static PiPipeconf buildPipeconf() {
+
+ final URL jsonUrl = TofinoDefaultPipeconfFactory.class.getResource(JSON_PATH);
+ final URL p4InfoUrl = TofinoDefaultPipeconfFactory.class.getResource(P4INFO_PATH);
+ final URL tofinoUrl = TofinoDefaultPipeconfFactory.class.getResource(TOFINO_PATH);
+ final URL contextUrl = TofinoDefaultPipeconfFactory.class.getResource(CONTEXT_JSON_PATH);
+
+ return DefaultPiPipeconf.builder()
+ .withId(new PiPipeconfId(PIPECONF_ID))
+ .withPipelineModel(Bmv2PipelineModelParser.parse(jsonUrl))
+ .addBehaviour(PiPipelineInterpreter.class, TofinoDefaultInterpreter.class)
+ .addBehaviour(Pipeliner.class, DefaultSingleTablePipeline.class)
+ .addExtension(P4_INFO_TEXT, p4InfoUrl)
+ .addExtension(BMV2_JSON, jsonUrl)
+ .addExtension(TOFINO_BIN, tofinoUrl)
+ .addExtension(TOFINO_CONTEXT_JSON, contextUrl)
+ .build();
+ }
+}
diff --git a/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoPipelineProgrammable.java b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoPipelineProgrammable.java
new file mode 100644
index 0000000..3397254
--- /dev/null
+++ b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/TofinoPipelineProgrammable.java
@@ -0,0 +1,157 @@
+/*
+ * 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.
+ */
+
+package org.onosproject.drivers.barefoot;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+import org.apache.commons.io.IOUtils;
+import org.onlab.util.SharedExecutors;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.driver.AbstractHandlerBehaviour;
+import org.onosproject.net.pi.model.PiPipeconf;
+import org.onosproject.net.pi.model.PiPipeconf.ExtensionType;
+import org.onosproject.net.pi.model.PiPipelineProgrammable;
+import org.onosproject.p4runtime.api.P4RuntimeClient;
+import org.onosproject.p4runtime.api.P4RuntimeController;
+import org.slf4j.Logger;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.Buffer;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+import static com.google.common.base.Strings.isNullOrEmpty;
+import static org.slf4j.LoggerFactory.getLogger;
+
+/**
+ * Implementation of the PiPipelineProgrammable for BMv2.
+ */
+public class TofinoPipelineProgrammable extends AbstractHandlerBehaviour implements PiPipelineProgrammable {
+
+ private static final PiPipeconf DEFAULT_PIPECONF = TofinoDefaultPipeconfFactory.get();
+
+ private final Logger log = getLogger(getClass());
+
+ @Override
+ public CompletableFuture<Boolean> deployPipeconf(PiPipeconf pipeconf) {
+
+ CompletableFuture<Boolean> result = new CompletableFuture<>();
+
+ SharedExecutors.getPoolThreadExecutor().submit(() -> result.complete(doDeployConfig(pipeconf)));
+
+ return result;
+ }
+
+ private boolean doDeployConfig(PiPipeconf pipeconf) {
+
+ P4RuntimeController controller = handler().get(P4RuntimeController.class);
+
+ DeviceId deviceId = handler().data().deviceId();
+
+ if (!controller.hasClient(deviceId)) {
+ log.warn("Unable to find client for {}, aborting pipeconf deploy", deviceId);
+ return false;
+
+ }
+
+ P4RuntimeClient client = controller.getClient(deviceId);
+
+ //creating the ByteBuffer with all the needed elements to set the pipeline on the device
+ ByteBuffer pipelineBuffer = createPipelineBuffer(pipeconf,
+ ImmutableList.of(ExtensionType.TOFINO_BIN, ExtensionType.TOFINO_CONTEXT_JSON));
+
+ try {
+ if (!client.setPipelineConfig(pipeconf, pipelineBuffer).get()) {
+ log.warn("Unable to deploy pipeconf {} to {}", pipeconf.id(), deviceId);
+ return false;
+ }
+
+ // It would be more logical to have this performed at device handshake, but P4runtime would reject any
+ // command if a P4info has not been set first.
+ if (!client.initStreamChannel().get()) {
+ log.warn("Unable to init stream channel to {}.", deviceId);
+ return false;
+ }
+
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+
+ return true;
+ }
+
+ private ByteBuffer createPipelineBuffer(PiPipeconf pipeconf, List<ExtensionType> targetConfigExtTypes) {
+ if (targetConfigExtTypes == null || targetConfigExtTypes.isEmpty() || isNullOrEmpty(pipeconf.id().toString())) {
+
+ log.warn("Not enough information to deploy the Pipeconf {} on the switch {}, {}", pipeconf.id(),
+ targetConfigExtTypes);
+ } else {
+ List<ByteBuffer> buffers = Lists.newLinkedList();
+ //Name of the pipeconf.
+ //Appears to be an arbitrary name and unrelated to p4 program
+ String name = pipeconf.id().toString();
+ buffers.add(ByteBuffer.allocate(4 + name.length())
+ .order(ByteOrder.LITTLE_ENDIAN)
+ .putInt(name.length())
+ .put(name.getBytes(StandardCharsets.UTF_8)));
+
+ // Build buffers for all the extensions needed to deploy the pipeconf to Tofino
+ targetConfigExtTypes.forEach(targetConfigExtType -> {
+ if (!pipeconf.extension(targetConfigExtType).isPresent()) {
+ // FIXME this will break the expected data format; the resulting buffer will be invalid.
+ // FIXME Consider a stronger response here, like an exception.
+ log.warn("Missing extension {} in pipeconf {}", targetConfigExtType, pipeconf.id());
+ }
+ InputStream targetConfig = pipeconf.extension(targetConfigExtType).get();
+ try {
+ log.info("Setting extension {} in pipeconf {}", targetConfigExtType, pipeconf.id());
+ byte[] bin = IOUtils.toByteArray(targetConfig);
+ //length and byte of every extension
+ buffers.add(ByteBuffer.allocate(4 + bin.length)
+ .order(ByteOrder.LITTLE_ENDIAN)
+ .putInt(bin.length)
+ .put(bin));
+ } catch (IOException ex) {
+ // FIXME this will break the expected data format; the resulting buffer will be invalid.
+ // FIXME Consider a stronger response here, like an exception.
+ log.warn("Unable to load target-specific config for {}", ex.getMessage());
+ }
+ });
+
+ // Merge the buffers
+ int len = buffers.stream().mapToInt(Buffer::limit).sum();
+ ByteBuffer deviceData = ByteBuffer.allocate(len);
+ for (ByteBuffer b : buffers) {
+ deviceData.put((ByteBuffer) b.flip());
+ }
+ deviceData.flip(); // prepare for reading
+ return deviceData.asReadOnlyBuffer();
+ }
+ return null;
+ }
+
+ @Override
+ public Optional<PiPipeconf> getDefaultPipeconf() {
+ return Optional.of(DEFAULT_PIPECONF);
+ }
+}
diff --git a/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/package-info.java b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/package-info.java
new file mode 100644
index 0000000..e2302b1
--- /dev/null
+++ b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+/**
+ * Package for barefoot device drivers.
+ */
+package org.onosproject.drivers.barefoot;
\ No newline at end of file
diff --git a/drivers/barefoot/src/main/resources/barefoot-drivers.xml b/drivers/barefoot/src/main/resources/barefoot-drivers.xml
new file mode 100644
index 0000000..ee56455
--- /dev/null
+++ b/drivers/barefoot/src/main/resources/barefoot-drivers.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright 2017-present Open Networking Laboratory
+ ~
+ ~ 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.
+ -->
+<drivers>
+ <driver name="tofino" manufacturer="Barefoot Networks" hwVersion="1.0" swVersion="1.0" extends="p4runtime">
+ <behaviour api="org.onosproject.net.pi.model.PiPipelineProgrammable"
+ impl="org.onosproject.drivers.barefoot.TofinoPipelineProgrammable"/>
+ </driver>
+</drivers>
+
diff --git a/drivers/barefoot/src/main/resources/context.json b/drivers/barefoot/src/main/resources/context.json
new file mode 100644
index 0000000..ed7213f
--- /dev/null
+++ b/drivers/barefoot/src/main/resources/context.json
@@ -0,0 +1,18871 @@
+{
+ "build_date": "Tue Aug 29 00:02:03 2017",
+ "phv_allocation": [
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 0
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 1
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 2
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 3
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 4
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 5
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 6
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 7
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 8
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 9
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 10
+ },
+ {
+ "ingress": [
+ {
+ "phv_number": 0,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [],
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 1,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 2,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 64,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 65,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 66,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 67,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 77,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 78,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 79,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 80,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 81,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 82,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 68,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 5,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_drop_ctl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 128,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 32,
+ "phv_lsb": 15,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_resubmit_flag",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 129,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 130,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 41,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_ucast_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 131,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 67,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 132,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 256,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 257,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 258,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 56,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 259,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 65,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 260,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 64,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 47,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 261,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 288,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 43,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 289,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 290,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 291,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 320,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 60,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 321,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 49,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 322,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 45,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 323,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 54,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 324,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ }
+ ]
+ },
+ {
+ "phv_number": 325,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 73,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "egress": [
+ {
+ "phv_number": 80,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 13,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 0,
+ "phv_msb": 0,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_for_tm_copy_to_cpu",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 81,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 7,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 2,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_cos",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 82,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 0,
+ "phv_lsb": 0,
+ "is_pov": true,
+ "pov_headers": [
+ {
+ "bit_index": 0,
+ "position_offset": 76,
+ "header_name": "packet_in_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 1,
+ "position_offset": 77,
+ "header_name": "packet_out_hdr",
+ "hidden": false
+ },
+ {
+ "bit_index": 2,
+ "position_offset": 78,
+ "header_name": "ethernet",
+ "hidden": false
+ },
+ {
+ "bit_index": 3,
+ "position_offset": 79,
+ "header_name": "ipv4",
+ "hidden": false
+ },
+ {
+ "bit_index": 4,
+ "position_offset": 80,
+ "header_name": "tcp",
+ "hidden": false
+ },
+ {
+ "bit_index": 5,
+ "position_offset": 81,
+ "header_name": "udp",
+ "hidden": false
+ }
+ ],
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "POV",
+ "field_width": 0,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 144,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 9,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "ig_intr_md_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 145,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 33,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_in_hdr_ingress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 146,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 64,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 8,
+ "is_compiler_generated": false,
+ "field_name": "eg_intr_md_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 264,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 50,
+ "phv_lsb": 24,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ttl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 21,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 23,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_protocol",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 11,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_hdrChecksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 265,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 15,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_srcAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 266,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 53,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_dstAddr",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 267,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 28,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ackNo",
+ "field_width": 4,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 19,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "udp_length_",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 62,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 268,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 41,
+ "phv_lsb": 28,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dataOffset",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 61,
+ "phv_lsb": 25,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 27,
+ "is_compiler_generated": false,
+ "field_name": "tcp_res",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 14,
+ "phv_lsb": 22,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 24,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ecn",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 37,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 5,
+ "phv_msb": 21,
+ "is_compiler_generated": false,
+ "field_name": "tcp_ctrl",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 44,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_window",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 269,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 2,
+ "phv_lsb": 16,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "tcp_checksum",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 32,
+ "position_offset": 48,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_urgentPtr",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 270,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 271,
+ "records": [
+ {
+ "word_bit_width": 32,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 31,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 296,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 32,
+ "phv_lsb": 4,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_version",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 40,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 3,
+ "phv_msb": 3,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_ihl",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 297,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 4,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_diffserv",
+ "field_width": 1,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 298,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 8
+ }
+ ]
+ },
+ {
+ "phv_number": 299,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 38,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "tcp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 8,
+ "position_offset": 59,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "udp_srcPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 300,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 22,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 301,
+ "records": [
+ {
+ "word_bit_width": 8,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 39,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 32
+ }
+ ]
+ },
+ {
+ "phv_number": 332,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 57,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_totalLen",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 333,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 46,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_identification",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 334,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 8,
+ "phv_lsb": 13,
+ "is_pov": false,
+ "field_msb": 2,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_flags",
+ "field_width": 1,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 5,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 12,
+ "phv_msb": 12,
+ "is_compiler_generated": false,
+ "field_name": "ipv4_fragOffset",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 335,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 35,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 336,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 31,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 16
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 51,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "udp_dstPort",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 337,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 72,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "tcp_seqNo",
+ "field_width": 4,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 338,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 22,
+ "phv_lsb": 8,
+ "is_pov": false,
+ "field_msb": 7,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_dstAddr",
+ "field_width": 6,
+ "field_lsb": 0
+ },
+ {
+ "word_bit_width": 16,
+ "position_offset": 66,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 47,
+ "phv_msb": 7,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_srcAddr",
+ "field_width": 6,
+ "field_lsb": 40
+ }
+ ]
+ },
+ {
+ "phv_number": 339,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 42,
+ "phv_lsb": 0,
+ "is_pov": false,
+ "field_msb": 15,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "ethernet_etherType",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ },
+ {
+ "phv_number": 340,
+ "records": [
+ {
+ "word_bit_width": 16,
+ "position_offset": 0,
+ "phv_lsb": 7,
+ "is_pov": false,
+ "field_msb": 8,
+ "phv_msb": 15,
+ "is_compiler_generated": false,
+ "field_name": "packet_out_hdr_egress_port",
+ "field_width": 2,
+ "field_lsb": 0
+ }
+ ]
+ }
+ ],
+ "stage_number": 11
+ }
+ ],
+ "compiler_version": "5.1.0",
+ "tables": [
+ {
+ "direction": "ingress",
+ "handle": 33554433,
+ "name": "ingress_port_count_table__action__",
+ "table_type": "action",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "entries_per_table_word": 1,
+ "action_handle": 536870914,
+ "memory_word_width": 128,
+ "table_word_width": 128,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 0,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "lsb_mem_word_offset": 0,
+ "field_name": "--padding--"
+ }
+ ]
+ }
+ ],
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 0,
+ "stage_number": 2,
+ "stage_table_type": "action_data",
+ "size": 0
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870914,
+ "name": "count_ingress",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": true,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "how_referenced": "direct",
+ "size": 1024
+ },
+ {
+ "direction": "ingress",
+ "handle": 16777217,
+ "name": "ingress_port_count_table",
+ "is_resource_controllable": true,
+ "table_type": "match",
+ "ap_bind_indirect_res_to_match": [],
+ "statistics_table_refs": [
+ {
+ "how_referenced": "indirect",
+ "handle": 67108865,
+ "name": "ingress_port_counter"
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870914,
+ "name": "count_ingress",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": true,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "meter_table_refs": [],
+ "default_action_handle": 536870914,
+ "uses_range": false,
+ "match_attributes": {
+ "stage_tables": [
+ {
+ "default_next_table": 33,
+ "action_format": [
+ {
+ "vliw_instruction_full": 64,
+ "next_table": 0,
+ "next_table_full": 33,
+ "action_handle": 536870914,
+ "action_name": "count_ingress",
+ "table_name": "egress_port_count_table",
+ "immediate_fields": [],
+ "vliw_instruction": 1
+ }
+ ],
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "memory_word_width": 0,
+ "entries_per_table_word": 1,
+ "table_word_width": 0,
+ "number_memory_units_per_table_word": 0
+ }
+ ],
+ "result_physical_buses": [
+ 1
+ ],
+ "logical_table_id": 0,
+ "stage_number": 2,
+ "stage_table_type": "match_with_no_key",
+ "size": 1
+ }
+ ],
+ "match_type": "match_with_no_key"
+ },
+ "stateful_table_refs": [],
+ "default_next_table_mask": 0,
+ "selection_table_refs": [],
+ "action_data_table_refs": [],
+ "match_key_fields": [],
+ "size": 1024
+ },
+ {
+ "direction": "ingress",
+ "handle": 33554434,
+ "name": "egress_port_count_table__action__",
+ "table_type": "action",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "entries_per_table_word": 1,
+ "action_handle": 536870916,
+ "memory_word_width": 128,
+ "table_word_width": 128,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 0,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "lsb_mem_word_offset": 0,
+ "field_name": "--padding--"
+ }
+ ]
+ }
+ ],
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 1,
+ "stage_number": 2,
+ "stage_table_type": "action_data",
+ "size": 0
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870916,
+ "name": "count_egress",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": true,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "how_referenced": "direct",
+ "size": 1024
+ },
+ {
+ "direction": "ingress",
+ "handle": 16777218,
+ "name": "egress_port_count_table",
+ "is_resource_controllable": true,
+ "table_type": "match",
+ "ap_bind_indirect_res_to_match": [],
+ "statistics_table_refs": [
+ {
+ "how_referenced": "indirect",
+ "handle": 67108866,
+ "name": "egress_port_counter"
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870916,
+ "name": "count_egress",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": true,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "meter_table_refs": [],
+ "default_action_handle": 536870916,
+ "uses_range": false,
+ "match_attributes": {
+ "stage_tables": [
+ {
+ "default_next_table": 255,
+ "action_format": [
+ {
+ "vliw_instruction_full": 64,
+ "next_table": 0,
+ "next_table_full": 255,
+ "action_handle": 536870916,
+ "action_name": "count_egress",
+ "table_name": "--END_OF_PIPELINE--",
+ "immediate_fields": [],
+ "vliw_instruction": 0
+ }
+ ],
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "memory_word_width": 0,
+ "entries_per_table_word": 1,
+ "table_word_width": 0,
+ "number_memory_units_per_table_word": 0
+ }
+ ],
+ "result_physical_buses": [
+ 0
+ ],
+ "logical_table_id": 1,
+ "stage_number": 2,
+ "stage_table_type": "match_with_no_key",
+ "size": 1
+ }
+ ],
+ "match_type": "match_with_no_key"
+ },
+ "stateful_table_refs": [],
+ "default_next_table_mask": 0,
+ "selection_table_refs": [],
+ "action_data_table_refs": [],
+ "match_key_fields": [],
+ "size": 1024
+ },
+ {
+ "direction": "ingress",
+ "handle": 33554435,
+ "name": "ingress_pkt__action__",
+ "table_type": "action",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "entries_per_table_word": 1,
+ "action_handle": 536870919,
+ "memory_word_width": 128,
+ "table_word_width": 128,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 0,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "lsb_mem_word_offset": 0,
+ "field_name": "--padding--"
+ }
+ ]
+ }
+ ],
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 0,
+ "stage_number": 0,
+ "stage_table_type": "action_data",
+ "size": 0
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870919,
+ "name": "_packet_out",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "how_referenced": "direct",
+ "size": 1024
+ },
+ {
+ "direction": "ingress",
+ "handle": 16777219,
+ "name": "ingress_pkt",
+ "is_resource_controllable": true,
+ "table_type": "match",
+ "ap_bind_indirect_res_to_match": [],
+ "statistics_table_refs": [],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870919,
+ "name": "_packet_out",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "meter_table_refs": [],
+ "default_action_handle": 536870919,
+ "uses_range": false,
+ "match_attributes": {
+ "stage_tables": [
+ {
+ "default_next_table": 16,
+ "action_format": [
+ {
+ "vliw_instruction_full": 65,
+ "next_table": 0,
+ "next_table_full": 16,
+ "action_handle": 536870919,
+ "action_name": "_packet_out",
+ "table_name": "_condition_1",
+ "immediate_fields": [],
+ "vliw_instruction": 1
+ }
+ ],
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "memory_word_width": 0,
+ "entries_per_table_word": 1,
+ "table_word_width": 0,
+ "number_memory_units_per_table_word": 0
+ }
+ ],
+ "result_physical_buses": [
+ 1
+ ],
+ "logical_table_id": 0,
+ "stage_number": 0,
+ "stage_table_type": "match_with_no_key",
+ "size": 1
+ }
+ ],
+ "match_type": "match_with_no_key"
+ },
+ "stateful_table_refs": [],
+ "default_next_table_mask": 0,
+ "selection_table_refs": [],
+ "action_data_table_refs": [],
+ "match_key_fields": [],
+ "size": 1024
+ },
+ {
+ "direction": "egress",
+ "handle": 33554436,
+ "name": "egress_pkt__action__",
+ "table_type": "action",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "entries_per_table_word": 1,
+ "action_handle": 536870922,
+ "memory_word_width": 128,
+ "table_word_width": 128,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 0,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "lsb_mem_word_offset": 0,
+ "field_name": "--padding--"
+ }
+ ]
+ }
+ ],
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 1,
+ "stage_number": 0,
+ "stage_table_type": "action_data",
+ "size": 0
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870922,
+ "name": "add_packet_in_hdr",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "how_referenced": "direct",
+ "size": 1024
+ },
+ {
+ "direction": "egress",
+ "handle": 16777220,
+ "name": "egress_pkt",
+ "is_resource_controllable": true,
+ "table_type": "match",
+ "ap_bind_indirect_res_to_match": [],
+ "statistics_table_refs": [],
+ "actions": [
+ {
+ "p4_parameters": [],
+ "handle": 536870922,
+ "name": "add_packet_in_hdr",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "meter_table_refs": [],
+ "default_action_handle": 536870922,
+ "uses_range": false,
+ "match_attributes": {
+ "stage_tables": [
+ {
+ "default_next_table": 255,
+ "action_format": [
+ {
+ "vliw_instruction_full": 65,
+ "next_table": 0,
+ "next_table_full": 255,
+ "action_handle": 536870922,
+ "action_name": "add_packet_in_hdr",
+ "table_name": "--END_OF_PIPELINE--",
+ "immediate_fields": [],
+ "vliw_instruction": 1
+ }
+ ],
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "memory_word_width": 0,
+ "entries_per_table_word": 1,
+ "table_word_width": 0,
+ "number_memory_units_per_table_word": 0
+ }
+ ],
+ "result_physical_buses": [
+ 0
+ ],
+ "logical_table_id": 1,
+ "stage_number": 0,
+ "stage_table_type": "match_with_no_key",
+ "size": 1
+ }
+ ],
+ "match_type": "match_with_no_key"
+ },
+ "stateful_table_refs": [],
+ "default_next_table_mask": 0,
+ "selection_table_refs": [],
+ "action_data_table_refs": [],
+ "match_key_fields": [],
+ "size": 1024
+ },
+ {
+ "direction": "ingress",
+ "handle": 33554437,
+ "name": "table0__action__",
+ "table_type": "action",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": null,
+ "pack_format": [
+ {
+ "entries_per_table_word": 1,
+ "action_handle": 536870924,
+ "memory_word_width": 128,
+ "table_word_width": 128,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 0,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "lsb_mem_word_offset": 0,
+ "field_name": "--padding--"
+ }
+ ]
+ }
+ ],
+ "number_memory_units_per_table_word": 1
+ },
+ {
+ "entries_per_table_word": 1,
+ "action_handle": 536870926,
+ "memory_word_width": 128,
+ "table_word_width": 128,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 0,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "lsb_mem_word_offset": 0,
+ "field_name": "--padding--"
+ }
+ ]
+ }
+ ],
+ "number_memory_units_per_table_word": 1
+ },
+ {
+ "entries_per_table_word": 1,
+ "action_handle": 536870928,
+ "memory_word_width": 128,
+ "table_word_width": 128,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 0,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "lsb_mem_word_offset": 0,
+ "field_name": "--padding--"
+ }
+ ]
+ }
+ ],
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 0,
+ "stage_number": 1,
+ "stage_table_type": "action_data",
+ "size": 0
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [
+ {
+ "position": 0,
+ "name": "port",
+ "start_bit": 0,
+ "bit_width": 9
+ }
+ ],
+ "handle": 536870924,
+ "name": "set_egress_port",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ },
+ {
+ "p4_parameters": [],
+ "handle": 536870926,
+ "name": "send_to_cpu",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ },
+ {
+ "p4_parameters": [],
+ "handle": 536870928,
+ "name": "_drop",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "how_referenced": "direct",
+ "size": 512
+ },
+ {
+ "direction": "ingress",
+ "handle": 16777221,
+ "name": "table0",
+ "is_resource_controllable": true,
+ "table_type": "match",
+ "ap_bind_indirect_res_to_match": [],
+ "statistics_table_refs": [
+ {
+ "how_referenced": "direct",
+ "handle": 67108867,
+ "name": "table0_counter"
+ }
+ ],
+ "actions": [
+ {
+ "p4_parameters": [
+ {
+ "position": 0,
+ "name": "port",
+ "start_bit": 0,
+ "bit_width": 9
+ }
+ ],
+ "handle": 536870924,
+ "name": "set_egress_port",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ },
+ {
+ "p4_parameters": [],
+ "handle": 536870926,
+ "name": "send_to_cpu",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ },
+ {
+ "p4_parameters": [],
+ "handle": 536870928,
+ "name": "_drop",
+ "indirect_resources": [],
+ "override_stat_full_addr": 0,
+ "override_meter_addr_pfe": false,
+ "allowed_as_default_action": true,
+ "override_stat_addr_pfe": false,
+ "override_stateful_addr_pfe": false,
+ "override_meter_full_addr": 0,
+ "override_stat_addr": false,
+ "override_stateful_addr": false,
+ "override_stateful_full_addr": 0,
+ "override_meter_addr": false
+ }
+ ],
+ "meter_table_refs": [],
+ "uses_range": false,
+ "match_attributes": {
+ "stage_tables": [
+ {
+ "default_next_table": 32,
+ "memory_resource_allocation": {
+ "memory_units_and_vpns": [
+ {
+ "memory_units": [
+ 21,
+ 22,
+ 23
+ ],
+ "vpns": [
+ 0
+ ]
+ }
+ ],
+ "memory_type": "tcam"
+ },
+ "pack_format": [
+ {
+ "memory_word_width": 47,
+ "entries_per_table_word": 1,
+ "entries": [
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 2,
+ "lsb_mem_word_idx": 2,
+ "source": "parity",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 45,
+ "field_name": "--tcam_parity_2--"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 4,
+ "lsb_mem_word_idx": 2,
+ "source": "zero",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 41,
+ "field_name": "--unused--"
+ },
+ {
+ "start_bit": 40,
+ "field_width": 8,
+ "lsb_mem_word_idx": 2,
+ "source": "spec",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 33,
+ "field_name": "ethernet_dstAddr"
+ },
+ {
+ "start_bit": 32,
+ "field_width": 8,
+ "lsb_mem_word_idx": 2,
+ "source": "spec",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 25,
+ "field_name": "ethernet_srcAddr"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 8,
+ "lsb_mem_word_idx": 2,
+ "source": "spec",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 17,
+ "field_name": "ethernet_dstAddr"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 8,
+ "lsb_mem_word_idx": 2,
+ "source": "spec",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 9,
+ "field_name": "ig_intr_md_ingress_port"
+ },
+ {
+ "start_bit": 8,
+ "field_width": 8,
+ "lsb_mem_word_idx": 2,
+ "source": "spec",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 1,
+ "field_name": "ethernet_etherType"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 1,
+ "lsb_mem_word_idx": 2,
+ "source": "payload",
+ "msb_mem_word_idx": 2,
+ "lsb_mem_word_offset": 0,
+ "field_name": "--tcam_payload_2--"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 2,
+ "lsb_mem_word_idx": 1,
+ "source": "parity",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 45,
+ "field_name": "--tcam_parity_1--"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 2,
+ "lsb_mem_word_idx": 1,
+ "source": "version",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 43,
+ "field_name": "--version--"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 2,
+ "lsb_mem_word_idx": 1,
+ "source": "zero",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 41,
+ "field_name": "--unused--"
+ },
+ {
+ "start_bit": 40,
+ "field_width": 8,
+ "lsb_mem_word_idx": 1,
+ "source": "spec",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 33,
+ "field_name": "ethernet_srcAddr"
+ },
+ {
+ "start_bit": 16,
+ "field_width": 8,
+ "lsb_mem_word_idx": 1,
+ "source": "spec",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 25,
+ "field_name": "ethernet_dstAddr"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 8,
+ "lsb_mem_word_idx": 1,
+ "source": "spec",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 17,
+ "field_name": "ethernet_etherType"
+ },
+ {
+ "start_bit": 24,
+ "field_width": 16,
+ "lsb_mem_word_idx": 1,
+ "source": "spec",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 1,
+ "field_name": "ethernet_dstAddr"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 1,
+ "lsb_mem_word_idx": 1,
+ "source": "payload",
+ "msb_mem_word_idx": 1,
+ "lsb_mem_word_offset": 0,
+ "field_name": "--tcam_payload_1--"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 2,
+ "lsb_mem_word_idx": 0,
+ "source": "parity",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 45,
+ "field_name": "--tcam_parity_0--"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 3,
+ "lsb_mem_word_idx": 0,
+ "source": "zero",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 42,
+ "field_name": "--unused--"
+ },
+ {
+ "start_bit": 8,
+ "field_width": 1,
+ "lsb_mem_word_idx": 0,
+ "source": "spec",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 41,
+ "field_name": "ig_intr_md_ingress_port"
+ },
+ {
+ "start_bit": 8,
+ "field_width": 8,
+ "lsb_mem_word_idx": 0,
+ "source": "spec",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 33,
+ "field_name": "ethernet_dstAddr"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 32,
+ "lsb_mem_word_idx": 0,
+ "source": "spec",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 1,
+ "field_name": "ethernet_srcAddr"
+ },
+ {
+ "start_bit": 0,
+ "field_width": 1,
+ "lsb_mem_word_idx": 0,
+ "source": "payload",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 0,
+ "field_name": "--tcam_payload_0--"
+ }
+ ]
+ }
+ ],
+ "table_word_width": 141,
+ "number_memory_units_per_table_word": 3
+ }
+ ],
+ "idletime_stage_table": {
+ "memory_resource_allocation": {
+ "spare_bank_memory_unit": 42,
+ "memory_units_and_vpns": [
+ {
+ "memory_units": [
+ 42
+ ],
+ "vpns": [
+ 0
+ ]
+ }
+ ],
+ "memory_type": "map_ram"
+ },
+ "pack_format": [
+ {
+ "memory_word_width": 11,
+ "entries_per_table_word": 2,
+ "table_word_width": 11,
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "precision": 3,
+ "enable_pfe": true,
+ "two_way_notification": true,
+ "disable_notification": false,
+ "logical_table_id": 0,
+ "stage_number": 1,
+ "stage_table_type": "idletime",
+ "size": 2048
+ },
+ "ternary_indirection_stage_table": {
+ "action_format": [
+ {
+ "vliw_instruction_full": 65,
+ "next_table": 0,
+ "next_table_full": 32,
+ "action_handle": 536870924,
+ "action_name": "set_egress_port",
+ "table_name": "_condition_2",
+ "immediate_fields": [
+ {
+ "param_name": "port",
+ "dest_start": 0,
+ "param_type": "parameter",
+ "param_shift": 0,
+ "dest_width": 9
+ }
+ ],
+ "vliw_instruction": 5
+ },
+ {
+ "vliw_instruction_full": 66,
+ "next_table": 0,
+ "next_table_full": 32,
+ "action_handle": 536870926,
+ "action_name": "send_to_cpu",
+ "table_name": "_condition_2",
+ "immediate_fields": [],
+ "vliw_instruction": 6
+ },
+ {
+ "vliw_instruction_full": 67,
+ "next_table": 0,
+ "next_table_full": 32,
+ "action_handle": 536870928,
+ "action_name": "_drop",
+ "table_name": "_condition_2",
+ "immediate_fields": [],
+ "vliw_instruction": 7
+ }
+ ],
+ "memory_resource_allocation": {
+ "spare_bank_memory_unit": 2,
+ "memory_units_and_vpns": [
+ {
+ "memory_units": [
+ 2
+ ],
+ "vpns": [
+ 0
+ ]
+ }
+ ],
+ "memory_type": "sram"
+ },
+ "pack_format": [
+ {
+ "memory_word_width": 128,
+ "entries_per_table_word": 4,
+ "entries": [
+ {
+ "entry_number": 3,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 13,
+ "lsb_mem_word_idx": 0,
+ "source": "zero",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 115,
+ "field_name": "--padding--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "immediate_name": "--immediate--",
+ "field_width": 16,
+ "lsb_mem_word_idx": 0,
+ "source": "immediate",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 99,
+ "field_name": "--immediate--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "field_width": 3,
+ "lsb_mem_word_idx": 0,
+ "source": "instr",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 96,
+ "field_name": "--instruction_address--",
+ "enable_pfe": false
+ }
+ ]
+ },
+ {
+ "entry_number": 2,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 13,
+ "lsb_mem_word_idx": 0,
+ "source": "zero",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 83,
+ "field_name": "--padding--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "immediate_name": "--immediate--",
+ "field_width": 16,
+ "lsb_mem_word_idx": 0,
+ "source": "immediate",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 67,
+ "field_name": "--immediate--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "field_width": 3,
+ "lsb_mem_word_idx": 0,
+ "source": "instr",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 64,
+ "field_name": "--instruction_address--",
+ "enable_pfe": false
+ }
+ ]
+ },
+ {
+ "entry_number": 1,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 13,
+ "lsb_mem_word_idx": 0,
+ "source": "zero",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 51,
+ "field_name": "--padding--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "immediate_name": "--immediate--",
+ "field_width": 16,
+ "lsb_mem_word_idx": 0,
+ "source": "immediate",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 35,
+ "field_name": "--immediate--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "field_width": 3,
+ "lsb_mem_word_idx": 0,
+ "source": "instr",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 32,
+ "field_name": "--instruction_address--",
+ "enable_pfe": false
+ }
+ ]
+ },
+ {
+ "entry_number": 0,
+ "fields": [
+ {
+ "start_bit": 0,
+ "field_width": 13,
+ "lsb_mem_word_idx": 0,
+ "source": "zero",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 19,
+ "field_name": "--padding--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "immediate_name": "--immediate--",
+ "field_width": 16,
+ "lsb_mem_word_idx": 0,
+ "source": "immediate",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 3,
+ "field_name": "--immediate--",
+ "enable_pfe": false
+ },
+ {
+ "start_bit": 0,
+ "field_width": 3,
+ "lsb_mem_word_idx": 0,
+ "source": "instr",
+ "msb_mem_word_idx": 0,
+ "lsb_mem_word_offset": 0,
+ "field_name": "--instruction_address--",
+ "enable_pfe": false
+ }
+ ]
+ }
+ ],
+ "table_word_width": 128,
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 0,
+ "stage_number": 1,
+ "stage_table_type": "ternary_indirection",
+ "size": 4096
+ },
+ "result_physical_buses": [
+ 0
+ ],
+ "logical_table_id": 0,
+ "stage_number": 1,
+ "stage_table_type": "ternary_match",
+ "size": 512
+ }
+ ],
+ "match_type": "ternary"
+ },
+ "stateful_table_refs": [],
+ "default_next_table_mask": 0,
+ "selection_table_refs": [],
+ "action_data_table_refs": [],
+ "match_key_fields": [
+ {
+ "bit_width": 9,
+ "match_type": "ternary",
+ "start_bit": 0,
+ "position": 0,
+ "bit_width_full": 9,
+ "name": "ig_intr_md_ingress_port"
+ },
+ {
+ "bit_width": 48,
+ "match_type": "ternary",
+ "start_bit": 0,
+ "position": 1,
+ "bit_width_full": 48,
+ "name": "ethernet_dstAddr"
+ },
+ {
+ "bit_width": 48,
+ "match_type": "ternary",
+ "start_bit": 0,
+ "position": 2,
+ "bit_width_full": 48,
+ "name": "ethernet_srcAddr"
+ },
+ {
+ "bit_width": 16,
+ "match_type": "ternary",
+ "start_bit": 0,
+ "position": 3,
+ "bit_width_full": 16,
+ "name": "ethernet_etherType"
+ }
+ ],
+ "size": 512
+ },
+ {
+ "direction": "ingress",
+ "statistics_type": "packets",
+ "handle": 67108865,
+ "name": "ingress_port_counter",
+ "byte_counter_resolution": 0,
+ "table_type": "statistics",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": {
+ "spare_bank_memory_unit": 55,
+ "memory_units_and_vpns": [
+ {
+ "memory_units": [
+ 54
+ ],
+ "vpns": [
+ 0
+ ]
+ }
+ ],
+ "memory_type": "sram"
+ },
+ "pack_format": [
+ {
+ "memory_word_width": 128,
+ "entries_per_table_word": 4,
+ "table_word_width": 128,
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 0,
+ "stage_number": 2,
+ "stage_table_type": "statistics",
+ "size": 4096
+ }
+ ],
+ "enable_pfe": true,
+ "packet_counter_resolution": 32,
+ "pfe_bit_position": 19,
+ "how_referenced": "indirect",
+ "size": 254
+ },
+ {
+ "direction": "ingress",
+ "statistics_type": "packets",
+ "handle": 67108866,
+ "name": "egress_port_counter",
+ "byte_counter_resolution": 0,
+ "table_type": "statistics",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": {
+ "spare_bank_memory_unit": 79,
+ "memory_units_and_vpns": [
+ {
+ "memory_units": [
+ 78
+ ],
+ "vpns": [
+ 0
+ ]
+ }
+ ],
+ "memory_type": "sram"
+ },
+ "pack_format": [
+ {
+ "memory_word_width": 128,
+ "entries_per_table_word": 4,
+ "table_word_width": 128,
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 1,
+ "stage_number": 2,
+ "stage_table_type": "statistics",
+ "size": 4096
+ }
+ ],
+ "enable_pfe": true,
+ "packet_counter_resolution": 32,
+ "pfe_bit_position": 19,
+ "how_referenced": "indirect",
+ "size": 254
+ },
+ {
+ "direction": "ingress",
+ "statistics_type": "packets",
+ "handle": 67108867,
+ "name": "table0_counter",
+ "byte_counter_resolution": 0,
+ "table_type": "statistics",
+ "stage_tables": [
+ {
+ "memory_resource_allocation": {
+ "spare_bank_memory_unit": 79,
+ "memory_units_and_vpns": [
+ {
+ "memory_units": [
+ 78
+ ],
+ "vpns": [
+ 0
+ ]
+ }
+ ],
+ "memory_type": "sram"
+ },
+ "pack_format": [
+ {
+ "memory_word_width": 128,
+ "entries_per_table_word": 4,
+ "table_word_width": 128,
+ "number_memory_units_per_table_word": 1
+ }
+ ],
+ "logical_table_id": 0,
+ "stage_number": 1,
+ "stage_table_type": "statistics",
+ "size": 4096
+ }
+ ],
+ "enable_pfe": false,
+ "packet_counter_resolution": 32,
+ "pfe_bit_position": 19,
+ "how_referenced": "direct",
+ "size": 512
+ }
+ ],
+ "parser": {
+ "ingress": [],
+ "egress": []
+ },
+ "learn_quanta": [],
+ "program_name": "default"
+}
\ No newline at end of file
diff --git a/drivers/barefoot/src/main/resources/default.json b/drivers/barefoot/src/main/resources/default.json
new file mode 100644
index 0000000..0ac74cc
--- /dev/null
+++ b/drivers/barefoot/src/main/resources/default.json
@@ -0,0 +1,1379 @@
+{
+ "__meta__": {
+ "version": [
+ 2,
+ 5
+ ],
+ "compiler": "https://github.com/p4lang/p4c-bm"
+ },
+ "header_types": [
+ {
+ "name": "standard_metadata_t",
+ "id": 0,
+ "fields": [
+ [
+ "ingress_port",
+ 9
+ ],
+ [
+ "packet_length",
+ 32
+ ],
+ [
+ "egress_spec",
+ 9
+ ],
+ [
+ "egress_port",
+ 9
+ ],
+ [
+ "egress_instance",
+ 32
+ ],
+ [
+ "instance_type",
+ 32
+ ],
+ [
+ "clone_spec",
+ 32
+ ],
+ [
+ "_padding",
+ 5
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "ingress_intrinsic_metadata_t",
+ "id": 1,
+ "fields": [
+ [
+ "resubmit_flag",
+ 1
+ ],
+ [
+ "_pad1",
+ 1
+ ],
+ [
+ "_pad2",
+ 2
+ ],
+ [
+ "_pad3",
+ 3
+ ],
+ [
+ "ingress_port",
+ 9
+ ],
+ [
+ "ingress_mac_tstamp",
+ 48
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "ingress_intrinsic_metadata_for_tm_t",
+ "id": 2,
+ "fields": [
+ [
+ "_pad1",
+ 7
+ ],
+ [
+ "ucast_egress_port",
+ 9
+ ],
+ [
+ "drop_ctl",
+ 3
+ ],
+ [
+ "bypass_egress",
+ 1
+ ],
+ [
+ "deflect_on_drop",
+ 1
+ ],
+ [
+ "ingress_cos",
+ 3
+ ],
+ [
+ "qid",
+ 5
+ ],
+ [
+ "icos_for_copy_to_cpu",
+ 3
+ ],
+ [
+ "_pad2",
+ 3
+ ],
+ [
+ "copy_to_cpu",
+ 1
+ ],
+ [
+ "packet_color",
+ 2
+ ],
+ [
+ "disable_ucast_cutthru",
+ 1
+ ],
+ [
+ "enable_mcast_cutthru",
+ 1
+ ],
+ [
+ "mcast_grp_a",
+ 16
+ ],
+ [
+ "mcast_grp_b",
+ 16
+ ],
+ [
+ "_pad3",
+ 3
+ ],
+ [
+ "level1_mcast_hash",
+ 13
+ ],
+ [
+ "_pad4",
+ 3
+ ],
+ [
+ "level2_mcast_hash",
+ 13
+ ],
+ [
+ "level1_exclusion_id",
+ 16
+ ],
+ [
+ "_pad5",
+ 7
+ ],
+ [
+ "level2_exclusion_id",
+ 9
+ ],
+ [
+ "rid",
+ 16
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "ingress_intrinsic_metadata_for_mirror_buffer_t",
+ "id": 3,
+ "fields": [
+ [
+ "_pad1",
+ 6
+ ],
+ [
+ "ingress_mirror_id",
+ 10
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "egress_intrinsic_metadata_t",
+ "id": 4,
+ "fields": [
+ [
+ "_pad0",
+ 7
+ ],
+ [
+ "egress_port",
+ 9
+ ],
+ [
+ "_pad1",
+ 5
+ ],
+ [
+ "enq_qdepth",
+ 19
+ ],
+ [
+ "_pad2",
+ 6
+ ],
+ [
+ "enq_congest_stat",
+ 2
+ ],
+ [
+ "enq_tstamp",
+ 32
+ ],
+ [
+ "_pad3",
+ 5
+ ],
+ [
+ "deq_qdepth",
+ 19
+ ],
+ [
+ "_pad4",
+ 6
+ ],
+ [
+ "deq_congest_stat",
+ 2
+ ],
+ [
+ "app_pool_congest_stat",
+ 8
+ ],
+ [
+ "deq_timedelta",
+ 32
+ ],
+ [
+ "egress_rid",
+ 16
+ ],
+ [
+ "_pad5",
+ 7
+ ],
+ [
+ "egress_rid_first",
+ 1
+ ],
+ [
+ "_pad6",
+ 3
+ ],
+ [
+ "egress_qid",
+ 5
+ ],
+ [
+ "_pad7",
+ 5
+ ],
+ [
+ "egress_cos",
+ 3
+ ],
+ [
+ "_pad8",
+ 7
+ ],
+ [
+ "deflection_flag",
+ 1
+ ],
+ [
+ "pkt_length",
+ 16
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "egress_intrinsic_metadata_for_mirror_buffer_t",
+ "id": 5,
+ "fields": [
+ [
+ "_pad1",
+ 6
+ ],
+ [
+ "egress_mirror_id",
+ 10
+ ],
+ [
+ "coalesce_flush",
+ 1
+ ],
+ [
+ "coalesce_length",
+ 7
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "egress_intrinsic_metadata_for_output_port_t",
+ "id": 6,
+ "fields": [
+ [
+ "_pad1",
+ 2
+ ],
+ [
+ "capture_tstamp_on_tx",
+ 1
+ ],
+ [
+ "update_delay_on_tx",
+ 1
+ ],
+ [
+ "force_tx_error",
+ 1
+ ],
+ [
+ "drop_ctl",
+ 3
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "packet_in_t",
+ "id": 7,
+ "fields": [
+ [
+ "ingress_port",
+ 9
+ ],
+ [
+ "_padding",
+ 7
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "packet_out_t",
+ "id": 8,
+ "fields": [
+ [
+ "egress_port",
+ 9
+ ],
+ [
+ "_padding",
+ 7
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "ethernet_t",
+ "id": 9,
+ "fields": [
+ [
+ "dstAddr",
+ 48
+ ],
+ [
+ "srcAddr",
+ 48
+ ],
+ [
+ "etherType",
+ 16
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "ipv4_t",
+ "id": 10,
+ "fields": [
+ [
+ "version",
+ 4
+ ],
+ [
+ "ihl",
+ 4
+ ],
+ [
+ "diffserv",
+ 8
+ ],
+ [
+ "totalLen",
+ 16
+ ],
+ [
+ "identification",
+ 16
+ ],
+ [
+ "flags",
+ 3
+ ],
+ [
+ "fragOffset",
+ 13
+ ],
+ [
+ "ttl",
+ 8
+ ],
+ [
+ "protocol",
+ 8
+ ],
+ [
+ "hdrChecksum",
+ 16
+ ],
+ [
+ "srcAddr",
+ 32
+ ],
+ [
+ "dstAddr",
+ 32
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "tcp_t",
+ "id": 11,
+ "fields": [
+ [
+ "srcPort",
+ 16
+ ],
+ [
+ "dstPort",
+ 16
+ ],
+ [
+ "seqNo",
+ 32
+ ],
+ [
+ "ackNo",
+ 32
+ ],
+ [
+ "dataOffset",
+ 4
+ ],
+ [
+ "res",
+ 3
+ ],
+ [
+ "ecn",
+ 3
+ ],
+ [
+ "ctrl",
+ 6
+ ],
+ [
+ "window",
+ 16
+ ],
+ [
+ "checksum",
+ 16
+ ],
+ [
+ "urgentPtr",
+ 16
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ },
+ {
+ "name": "udp_t",
+ "id": 12,
+ "fields": [
+ [
+ "srcPort",
+ 16
+ ],
+ [
+ "dstPort",
+ 16
+ ],
+ [
+ "length_",
+ 16
+ ],
+ [
+ "checksum",
+ 16
+ ]
+ ],
+ "length_exp": null,
+ "max_length": null
+ }
+ ],
+ "headers": [
+ {
+ "name": "standard_metadata",
+ "id": 0,
+ "header_type": "standard_metadata_t",
+ "metadata": true
+ },
+ {
+ "name": "ig_intr_md",
+ "id": 1,
+ "header_type": "ingress_intrinsic_metadata_t",
+ "metadata": false
+ },
+ {
+ "name": "ig_intr_md_for_tm",
+ "id": 2,
+ "header_type": "ingress_intrinsic_metadata_for_tm_t",
+ "metadata": false
+ },
+ {
+ "name": "ig_intr_md_for_mb",
+ "id": 3,
+ "header_type": "ingress_intrinsic_metadata_for_mirror_buffer_t",
+ "metadata": false
+ },
+ {
+ "name": "eg_intr_md",
+ "id": 4,
+ "header_type": "egress_intrinsic_metadata_t",
+ "metadata": false
+ },
+ {
+ "name": "eg_intr_md_for_mb",
+ "id": 5,
+ "header_type": "egress_intrinsic_metadata_for_mirror_buffer_t",
+ "metadata": false
+ },
+ {
+ "name": "eg_intr_md_for_oport",
+ "id": 6,
+ "header_type": "egress_intrinsic_metadata_for_output_port_t",
+ "metadata": false
+ },
+ {
+ "name": "packet_in_hdr",
+ "id": 7,
+ "header_type": "packet_in_t",
+ "metadata": false
+ },
+ {
+ "name": "packet_out_hdr",
+ "id": 8,
+ "header_type": "packet_out_t",
+ "metadata": false
+ },
+ {
+ "name": "ethernet",
+ "id": 9,
+ "header_type": "ethernet_t",
+ "metadata": false
+ },
+ {
+ "name": "ipv4",
+ "id": 10,
+ "header_type": "ipv4_t",
+ "metadata": false
+ },
+ {
+ "name": "tcp",
+ "id": 11,
+ "header_type": "tcp_t",
+ "metadata": false
+ },
+ {
+ "name": "udp",
+ "id": 12,
+ "header_type": "udp_t",
+ "metadata": false
+ }
+ ],
+ "header_stacks": [],
+ "parsers": [
+ {
+ "name": "parser",
+ "id": 0,
+ "init_state": "start",
+ "parse_states": [
+ {
+ "name": "start",
+ "id": 0,
+ "parser_ops": [],
+ "transition_key": [
+ {
+ "type": "lookahead",
+ "value": [
+ 96,
+ 8
+ ]
+ }
+ ],
+ "transitions": [
+ {
+ "type": "hexstr",
+ "value": "0x00",
+ "mask": null,
+ "next_state": "parse_pkt_in"
+ },
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": "default_parser"
+ }
+ ]
+ },
+ {
+ "name": "parse_pkt_in",
+ "id": 1,
+ "parser_ops": [
+ {
+ "op": "extract",
+ "parameters": [
+ {
+ "type": "regular",
+ "value": "packet_in_hdr"
+ }
+ ]
+ }
+ ],
+ "transition_key": [],
+ "transitions": [
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": "parse_ethernet"
+ }
+ ]
+ },
+ {
+ "name": "parse_ethernet",
+ "id": 2,
+ "parser_ops": [
+ {
+ "op": "extract",
+ "parameters": [
+ {
+ "type": "regular",
+ "value": "ethernet"
+ }
+ ]
+ }
+ ],
+ "transition_key": [
+ {
+ "type": "field",
+ "value": [
+ "ethernet",
+ "etherType"
+ ]
+ }
+ ],
+ "transitions": [
+ {
+ "type": "hexstr",
+ "value": "0x0800",
+ "mask": null,
+ "next_state": "parse_ipv4"
+ },
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": null
+ }
+ ]
+ },
+ {
+ "name": "parse_ipv4",
+ "id": 3,
+ "parser_ops": [
+ {
+ "op": "extract",
+ "parameters": [
+ {
+ "type": "regular",
+ "value": "ipv4"
+ }
+ ]
+ }
+ ],
+ "transition_key": [
+ {
+ "type": "field",
+ "value": [
+ "ipv4",
+ "fragOffset"
+ ]
+ },
+ {
+ "type": "field",
+ "value": [
+ "ipv4",
+ "protocol"
+ ]
+ }
+ ],
+ "transitions": [
+ {
+ "type": "hexstr",
+ "value": "0x000006",
+ "mask": null,
+ "next_state": "parse_tcp"
+ },
+ {
+ "type": "hexstr",
+ "value": "0x000011",
+ "mask": null,
+ "next_state": "parse_udp"
+ },
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": null
+ }
+ ]
+ },
+ {
+ "name": "parse_tcp",
+ "id": 4,
+ "parser_ops": [
+ {
+ "op": "extract",
+ "parameters": [
+ {
+ "type": "regular",
+ "value": "tcp"
+ }
+ ]
+ }
+ ],
+ "transition_key": [],
+ "transitions": [
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": null
+ }
+ ]
+ },
+ {
+ "name": "parse_udp",
+ "id": 5,
+ "parser_ops": [
+ {
+ "op": "extract",
+ "parameters": [
+ {
+ "type": "regular",
+ "value": "udp"
+ }
+ ]
+ }
+ ],
+ "transition_key": [],
+ "transitions": [
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": null
+ }
+ ]
+ },
+ {
+ "name": "default_parser",
+ "id": 6,
+ "parser_ops": [],
+ "transition_key": [
+ {
+ "type": "field",
+ "value": [
+ "ig_intr_md",
+ "ingress_port"
+ ]
+ }
+ ],
+ "transitions": [
+ {
+ "type": "hexstr",
+ "value": "0x00ff",
+ "mask": null,
+ "next_state": "parse_pkt_out"
+ },
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": "parse_ethernet"
+ }
+ ]
+ },
+ {
+ "name": "parse_pkt_out",
+ "id": 7,
+ "parser_ops": [
+ {
+ "op": "extract",
+ "parameters": [
+ {
+ "type": "regular",
+ "value": "packet_out_hdr"
+ }
+ ]
+ }
+ ],
+ "transition_key": [],
+ "transitions": [
+ {
+ "type": "default",
+ "value": null,
+ "mask": null,
+ "next_state": "parse_ethernet"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "parse_vsets": [],
+ "deparsers": [
+ {
+ "name": "deparser",
+ "id": 0,
+ "order": [
+ "packet_in_hdr",
+ "packet_out_hdr",
+ "ethernet",
+ "ipv4",
+ "tcp",
+ "udp"
+ ]
+ }
+ ],
+ "meter_arrays": [],
+ "actions": [
+ {
+ "name": "add_packet_in_hdr",
+ "id": 0,
+ "runtime_data": [],
+ "primitives": [
+ {
+ "op": "add_header",
+ "parameters": [
+ {
+ "type": "header",
+ "value": "packet_in_hdr"
+ }
+ ]
+ },
+ {
+ "op": "modify_field",
+ "parameters": [
+ {
+ "type": "field",
+ "value": [
+ "packet_in_hdr",
+ "ingress_port"
+ ]
+ },
+ {
+ "type": "field",
+ "value": [
+ "ig_intr_md",
+ "ingress_port"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "send_to_cpu",
+ "id": 1,
+ "runtime_data": [],
+ "primitives": [
+ {
+ "op": "modify_field",
+ "parameters": [
+ {
+ "type": "field",
+ "value": [
+ "ig_intr_md_for_tm",
+ "copy_to_cpu"
+ ]
+ },
+ {
+ "type": "hexstr",
+ "value": "0x1"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "_drop",
+ "id": 2,
+ "runtime_data": [],
+ "primitives": [
+ {
+ "op": "drop",
+ "parameters": []
+ }
+ ]
+ },
+ {
+ "name": "_packet_out",
+ "id": 3,
+ "runtime_data": [],
+ "primitives": [
+ {
+ "op": "modify_field",
+ "parameters": [
+ {
+ "type": "field",
+ "value": [
+ "ig_intr_md_for_tm",
+ "ucast_egress_port"
+ ]
+ },
+ {
+ "type": "field",
+ "value": [
+ "packet_out_hdr",
+ "egress_port"
+ ]
+ }
+ ]
+ },
+ {
+ "op": "remove_header",
+ "parameters": [
+ {
+ "type": "header",
+ "value": "packet_out_hdr"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "count_ingress",
+ "id": 4,
+ "runtime_data": [],
+ "primitives": [
+ {
+ "op": "count",
+ "parameters": [
+ {
+ "type": "counter_array",
+ "value": "ingress_port_counter"
+ },
+ {
+ "type": "field",
+ "value": [
+ "ig_intr_md",
+ "ingress_port"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "count_egress",
+ "id": 5,
+ "runtime_data": [],
+ "primitives": [
+ {
+ "op": "count",
+ "parameters": [
+ {
+ "type": "counter_array",
+ "value": "egress_port_counter"
+ },
+ {
+ "type": "field",
+ "value": [
+ "ig_intr_md_for_tm",
+ "ucast_egress_port"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "set_egress_port",
+ "id": 6,
+ "runtime_data": [
+ {
+ "name": "port",
+ "bitwidth": 9
+ }
+ ],
+ "primitives": [
+ {
+ "op": "modify_field",
+ "parameters": [
+ {
+ "type": "field",
+ "value": [
+ "ig_intr_md_for_tm",
+ "ucast_egress_port"
+ ]
+ },
+ {
+ "type": "runtime_data",
+ "value": 0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "pipelines": [
+ {
+ "name": "ingress",
+ "id": 0,
+ "init_table": "_condition_0",
+ "tables": [
+ {
+ "name": "ingress_port_count_table",
+ "id": 0,
+ "match_type": "exact",
+ "type": "simple",
+ "max_size": 16384,
+ "with_counters": false,
+ "direct_meters": null,
+ "support_timeout": false,
+ "key": [],
+ "actions": [
+ "count_ingress"
+ ],
+ "next_tables": {
+ "count_ingress": "egress_port_count_table"
+ },
+ "default_entry": {
+ "action_id": 4,
+ "action_const": true
+ },
+ "base_default_next": "egress_port_count_table"
+ },
+ {
+ "name": "egress_port_count_table",
+ "id": 1,
+ "match_type": "exact",
+ "type": "simple",
+ "max_size": 16384,
+ "with_counters": false,
+ "direct_meters": null,
+ "support_timeout": false,
+ "key": [],
+ "actions": [
+ "count_egress"
+ ],
+ "next_tables": {
+ "count_egress": null
+ },
+ "default_entry": {
+ "action_id": 5,
+ "action_const": true
+ },
+ "base_default_next": null
+ },
+ {
+ "name": "ingress_pkt",
+ "id": 2,
+ "match_type": "exact",
+ "type": "simple",
+ "max_size": 16384,
+ "with_counters": false,
+ "direct_meters": null,
+ "support_timeout": false,
+ "key": [],
+ "actions": [
+ "_packet_out"
+ ],
+ "next_tables": {
+ "_packet_out": "_condition_1"
+ },
+ "default_entry": {
+ "action_id": 3,
+ "action_const": true,
+ "action_data": [],
+ "action_entry_const": false
+ },
+ "base_default_next": "_condition_1"
+ },
+ {
+ "name": "table0",
+ "id": 3,
+ "match_type": "ternary",
+ "type": "simple",
+ "max_size": 16384,
+ "with_counters": true,
+ "direct_meters": null,
+ "support_timeout": true,
+ "key": [
+ {
+ "match_type": "ternary",
+ "target": [
+ "ig_intr_md",
+ "ingress_port"
+ ],
+ "mask": null
+ },
+ {
+ "match_type": "ternary",
+ "target": [
+ "ethernet",
+ "dstAddr"
+ ],
+ "mask": null
+ },
+ {
+ "match_type": "ternary",
+ "target": [
+ "ethernet",
+ "srcAddr"
+ ],
+ "mask": null
+ },
+ {
+ "match_type": "ternary",
+ "target": [
+ "ethernet",
+ "etherType"
+ ],
+ "mask": null
+ }
+ ],
+ "actions": [
+ "set_egress_port",
+ "send_to_cpu",
+ "_drop"
+ ],
+ "next_tables": {
+ "set_egress_port": "_condition_2",
+ "send_to_cpu": "_condition_2",
+ "_drop": "_condition_2"
+ },
+ "base_default_next": "_condition_2"
+ }
+ ],
+ "action_profiles": [],
+ "conditionals": [
+ {
+ "name": "_condition_0",
+ "id": 0,
+ "expression": {
+ "type": "expression",
+ "value": {
+ "op": "valid",
+ "left": null,
+ "right": {
+ "type": "header",
+ "value": "packet_out_hdr"
+ }
+ }
+ },
+ "true_next": "ingress_pkt",
+ "false_next": "_condition_1"
+ },
+ {
+ "name": "_condition_1",
+ "id": 1,
+ "expression": {
+ "type": "expression",
+ "value": {
+ "op": "not",
+ "left": null,
+ "right": {
+ "type": "expression",
+ "value": {
+ "op": "valid",
+ "left": null,
+ "right": {
+ "type": "header",
+ "value": "packet_out_hdr"
+ }
+ }
+ }
+ }
+ },
+ "true_next": "table0",
+ "false_next": "_condition_2"
+ },
+ {
+ "name": "_condition_2",
+ "id": 2,
+ "expression": {
+ "type": "expression",
+ "value": {
+ "op": "<",
+ "left": {
+ "type": "field",
+ "value": [
+ "ig_intr_md_for_tm",
+ "ucast_egress_port"
+ ]
+ },
+ "right": {
+ "type": "hexstr",
+ "value": "0xfe"
+ }
+ }
+ },
+ "true_next": "ingress_port_count_table",
+ "false_next": null
+ }
+ ]
+ },
+ {
+ "name": "egress",
+ "id": 1,
+ "init_table": "_condition_3",
+ "tables": [
+ {
+ "name": "egress_pkt",
+ "id": 4,
+ "match_type": "exact",
+ "type": "simple",
+ "max_size": 16384,
+ "with_counters": false,
+ "direct_meters": null,
+ "support_timeout": false,
+ "key": [],
+ "actions": [
+ "add_packet_in_hdr"
+ ],
+ "next_tables": {
+ "add_packet_in_hdr": null
+ },
+ "default_entry": {
+ "action_id": 0,
+ "action_const": true,
+ "action_data": [],
+ "action_entry_const": false
+ },
+ "base_default_next": null
+ }
+ ],
+ "action_profiles": [],
+ "conditionals": [
+ {
+ "name": "_condition_3",
+ "id": 3,
+ "expression": {
+ "type": "expression",
+ "value": {
+ "op": "==",
+ "left": {
+ "type": "field",
+ "value": [
+ "ig_intr_md_for_tm",
+ "copy_to_cpu"
+ ]
+ },
+ "right": {
+ "type": "hexstr",
+ "value": "0x1"
+ }
+ }
+ },
+ "true_next": "egress_pkt",
+ "false_next": null
+ }
+ ]
+ }
+ ],
+ "calculations": [],
+ "checksums": [],
+ "learn_lists": [],
+ "field_lists": [],
+ "counter_arrays": [
+ {
+ "name": "ingress_port_counter",
+ "id": 0,
+ "is_direct": false,
+ "size": 254
+ },
+ {
+ "name": "egress_port_counter",
+ "id": 1,
+ "is_direct": false,
+ "size": 254
+ },
+ {
+ "name": "table0_counter",
+ "id": 2,
+ "is_direct": true,
+ "binding": "table0",
+ "size": null
+ }
+ ],
+ "register_arrays": [],
+ "force_arith": [
+ [
+ "standard_metadata",
+ "ingress_port"
+ ],
+ [
+ "standard_metadata",
+ "packet_length"
+ ],
+ [
+ "standard_metadata",
+ "egress_spec"
+ ],
+ [
+ "standard_metadata",
+ "egress_port"
+ ],
+ [
+ "standard_metadata",
+ "egress_instance"
+ ],
+ [
+ "standard_metadata",
+ "instance_type"
+ ],
+ [
+ "standard_metadata",
+ "clone_spec"
+ ],
+ [
+ "standard_metadata",
+ "_padding"
+ ]
+ ],
+ "extern_instances": []
+}
\ No newline at end of file
diff --git a/drivers/barefoot/src/main/resources/default.p4info b/drivers/barefoot/src/main/resources/default.p4info
new file mode 100644
index 0000000..29e874c
--- /dev/null
+++ b/drivers/barefoot/src/main/resources/default.p4info
@@ -0,0 +1,212 @@
+tables {
+ preamble {
+ id: 33617813
+ name: "table0"
+ alias: "table0"
+ }
+ match_fields {
+ id: 1
+ name: "ig_intr_md.ingress_port"
+ bitwidth: 9
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 2
+ name: "ethernet.dstAddr"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 3
+ name: "ethernet.srcAddr"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 4
+ name: "ethernet.etherType"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16794308
+ }
+ action_refs {
+ id: 16829080
+ }
+ action_refs {
+ id: 16784184
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 301990488
+ size: 1024
+ with_entry_timeout: true
+}
+tables {
+ preamble {
+ id: 33560548
+ name: "ingress_pkt"
+ alias: "ingress_pkt"
+ }
+ action_refs {
+ id: 16835928
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33618793
+ name: "egress_port_count_table"
+ alias: "egress_port_count_table"
+ }
+ action_refs {
+ id: 16822771
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33579767
+ name: "ingress_port_count_table"
+ alias: "ingress_port_count_table"
+ }
+ action_refs {
+ id: 16837943
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33608529
+ name: "egress_pkt"
+ alias: "egress_pkt"
+ }
+ action_refs {
+ id: 16835663
+ }
+ size: 1024
+}
+actions {
+ preamble {
+ id: 16800567
+ name: "NoAction"
+ alias: "NoAction"
+ }
+}
+actions {
+ preamble {
+ id: 16794308
+ name: "set_egress_port"
+ alias: "set_egress_port"
+ }
+ params {
+ id: 1
+ name: "port"
+ bitwidth: 9
+ }
+}
+actions {
+ preamble {
+ id: 16829080
+ name: "send_to_cpu"
+ alias: "send_to_cpu"
+ }
+}
+actions {
+ preamble {
+ id: 16784184
+ name: "_drop"
+ alias: "_drop"
+ }
+}
+actions {
+ preamble {
+ id: 16835928
+ name: "_packet_out"
+ alias: "_packet_out"
+ }
+}
+actions {
+ preamble {
+ id: 16822771
+ name: "count_egress"
+ alias: "count_egress"
+ }
+}
+actions {
+ preamble {
+ id: 16837943
+ name: "count_ingress"
+ alias: "count_ingress"
+ }
+}
+actions {
+ preamble {
+ id: 16835663
+ name: "add_packet_in_hdr"
+ alias: "add_packet_in_hdr"
+ }
+}
+counters {
+ preamble {
+ id: 302008596
+ name: "egress_port_counter"
+ alias: "egress_port_counter"
+ annotations: "@min_width(32)"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 254
+}
+counters {
+ preamble {
+ id: 301991238
+ name: "ingress_port_counter"
+ alias: "ingress_port_counter"
+ annotations: "@min_width(32)"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 254
+}
+direct_counters {
+ preamble {
+ id: 301990488
+ name: "table0_counter"
+ alias: "table0_counter"
+ }
+ spec {
+ unit: PACKETS
+ }
+ direct_table_id: 33617813
+}
+# Manually adding controller_packet_metadata for packet I/O since P4_14 doesn't support annotations.
+controller_packet_metadata {
+ preamble {
+ id: 2868941301
+ name: "packet_in"
+ annotations: "@controller_header(\"packet_in\")"
+ }
+ metadata {
+ id: 1
+ name: "ingress_port"
+ bitwidth: 9
+ }
+}
+controller_packet_metadata {
+ preamble {
+ id: 2868916615
+ name: "packet_out"
+ annotations: "@controller_header(\"packet_out\")"
+ }
+ metadata {
+ id: 1
+ name: "egress_port"
+ bitwidth: 9
+ }
+}
diff --git a/drivers/barefoot/src/main/resources/tofino.bin b/drivers/barefoot/src/main/resources/tofino.bin
new file mode 100644
index 0000000..f90407a
--- /dev/null
+++ b/drivers/barefoot/src/main/resources/tofino.bin
Binary files differ
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/DefaultP4Interpreter.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/DefaultP4Interpreter.java
index 85167eb..6029590 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/DefaultP4Interpreter.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/DefaultP4Interpreter.java
@@ -76,7 +76,7 @@
public static final String TABLE0 = "table0";
public static final String SEND_TO_CPU = "send_to_cpu";
public static final String PORT = "port";
- public static final String DROP = "drop";
+ public static final String DROP = "_drop";
public static final String SET_EGRESS_PORT = "set_egress_port";
public static final String EGRESS_PORT = "egress_port";
public static final String INGRESS_PORT = "ingress_port";
diff --git a/drivers/pom.xml b/drivers/pom.xml
index 129c9df..3c7a0ad 100644
--- a/drivers/pom.xml
+++ b/drivers/pom.xml
@@ -48,9 +48,11 @@
<module>lisp</module>
<module>flowspec</module>
<module>oplink</module>
- <!-- <module>bmv2</module> -->
<module>hp</module>
<module>microsemi</module>
+ <!-- <module>bmv2</module> -->
+ <!--<module>barefoot</module>-->
+ <!--<module>p4runtime</module>-->
</modules>
<!--<properties>
diff --git a/incubator/bmv2/model/src/main/java/org/onosproject/bmv2/model/Bmv2Pipeconf.java b/incubator/bmv2/model/src/main/java/org/onosproject/bmv2/model/Bmv2Pipeconf.java
index 5e5f50d..fa8183a 100644
--- a/incubator/bmv2/model/src/main/java/org/onosproject/bmv2/model/Bmv2Pipeconf.java
+++ b/incubator/bmv2/model/src/main/java/org/onosproject/bmv2/model/Bmv2Pipeconf.java
@@ -42,10 +42,10 @@
/**
* Builds a new BMv2 pipeline configuration (pipeconf) by given information.
*
- * @param id the pipeconf id
+ * @param id the pipeconf id
* @param pipelineModel the pipeline model
- * @param behaviours the behaviors of the pipeline
- * @param extensions the extensions of the pipeline
+ * @param behaviours the behaviors of the pipeline
+ * @param extensions the extensions of the pipeline
*/
public Bmv2Pipeconf(PiPipeconfId id,
Bmv2PipelineModel pipelineModel,
diff --git a/modules.defs b/modules.defs
index 7e3ba3f..8998724 100644
--- a/modules.defs
+++ b/modules.defs
@@ -107,6 +107,7 @@
'//drivers/bmv2:onos-drivers-bmv2-oar',
'//drivers/hp:onos-drivers-hp-oar',
'//drivers/p4runtime:onos-drivers-p4runtime-oar',
+ '//drivers/barefoot:onos-drivers-barefoot-oar',
]
ONOS_PROVIDERS = [
diff --git a/protocols/p4runtime/api/src/main/java/org/onosproject/p4runtime/api/P4RuntimeClient.java b/protocols/p4runtime/api/src/main/java/org/onosproject/p4runtime/api/P4RuntimeClient.java
index 0bd19e5..9760ad4 100644
--- a/protocols/p4runtime/api/src/main/java/org/onosproject/p4runtime/api/P4RuntimeClient.java
+++ b/protocols/p4runtime/api/src/main/java/org/onosproject/p4runtime/api/P4RuntimeClient.java
@@ -25,6 +25,7 @@
import org.onosproject.net.pi.runtime.PiTableEntry;
import org.onosproject.net.pi.runtime.PiTableId;
+import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@@ -48,15 +49,28 @@
/**
* Sets the pipeline configuration defined by the given pipeconf for the given target-specific configuration
* extension type (e.g. {@link PiPipeconf.ExtensionType#BMV2_JSON}, or {@link PiPipeconf.ExtensionType#TOFINO_BIN}).
- * This method should be called before any other method of this client.
+ * his method or it's pair with the byt buffer parameter should be called before any other method of this client.
*
* @param pipeconf pipeconf
- * @param targetConfigExtType extension type of the target-specific configuration
+ * @param targetConfigExtType extension types of the target-specific configuration
* @return a completable future of a boolean, true if the operations was successful, false otherwise.
*/
+ //TODO Remove this and adapt the Bmv2 drivers to use the ByteBuffer one.
CompletableFuture<Boolean> setPipelineConfig(PiPipeconf pipeconf, PiPipeconf.ExtensionType targetConfigExtType);
/**
+ * Sets the pipeline configuration defined by the given pipeconf for the given byte buffer
+ * containing all the information needed with the format expected by the device.
+ * This method or it's pair with the ExtensionType parameter should be called before any other method
+ * of this client.
+ *
+ * @param pipeconf pipeconf
+ * @param byteBuffer the byte buffer containing all the needed information
+ * @return a completable future of a boolean, true if the operations was successful, false otherwise.
+ */
+ CompletableFuture<Boolean> setPipelineConfig(PiPipeconf pipeconf, ByteBuffer byteBuffer);
+
+ /**
* Initializes the stream channel, after which all messages received from the device will be notified using the
* {@link P4RuntimeController} event listener.
*
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
index 00a2683..87652c3 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
@@ -57,6 +57,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
@@ -161,10 +162,15 @@
}
@Override
+ public CompletableFuture<Boolean> setPipelineConfig(PiPipeconf pipeconf, ByteBuffer byteBuffer) {
+ return supplyInContext(() -> doSetPipelineConfig(pipeconf, byteBuffer), "setPipelineConfigByteString");
+ }
+
+ @Override
public CompletableFuture<Boolean> writeTableEntries(Collection<PiTableEntry> piTableEntries,
WriteOperationType opType, PiPipeconf pipeconf) {
return supplyInContext(() -> doWriteTableEntries(piTableEntries, opType, pipeconf),
- "writeTableEntries-" + opType.name());
+ "writeTableEntries-" + opType.name());
}
@Override
@@ -214,8 +220,8 @@
log.info("Sending arbitration update to {}...", deviceId);
StreamMessageRequest requestMsg = StreamMessageRequest.newBuilder()
.setArbitration(MasterArbitrationUpdate.newBuilder()
- .setDeviceId(p4DeviceId)
- .build())
+ .setDeviceId(p4DeviceId)
+ .build())
.build();
try {
streamRequestObserver.onNext(requestMsg);
@@ -236,42 +242,52 @@
return false;
}
-
- ForwardingPipelineConfig.Builder pipelineConfigBuilder = ForwardingPipelineConfig
- .newBuilder()
- .setDeviceId(p4DeviceId)
- .setP4Info(p4Info);
-
- //if the target config extension is null we don't want to add the config.
- if (targetConfigExtType != null) {
- if (!pipeconf.extension(targetConfigExtType).isPresent()) {
- log.warn("Missing extension {} in pipeconf {}", targetConfigExtType, pipeconf.id());
- return false;
- }
- InputStream targetConfig = pipeconf.extension(targetConfigExtType).get();
- P4Config.P4DeviceConfig p4DeviceConfigMsg;
- try {
- p4DeviceConfigMsg = P4Config.P4DeviceConfig
- .newBuilder()
- .setExtras(P4Config.P4DeviceConfig.Extras.getDefaultInstance())
- .setReassign(true)
- .setDeviceData(ByteString.readFrom(targetConfig))
- .build();
-
- pipelineConfigBuilder.setP4DeviceConfig(p4DeviceConfigMsg.toByteString());
-
- } catch (IOException ex) {
- log.warn("Unable to load target-specific config for {}: {}", deviceId, ex.getMessage());
- return false;
- }
+ if (!pipeconf.extension(targetConfigExtType).isPresent()) {
+ log.warn("Missing extension {} in pipeconf {}", targetConfigExtType, pipeconf.id());
+ return false;
}
+ InputStream targetConfig = pipeconf.extension(targetConfigExtType).get();
+ try {
+ return sendPipelineConfig(p4Info, ByteString.readFrom(targetConfig));
+ } catch (IOException ex) {
+ log.warn("Unable to load target-specific config for {}: {}", deviceId, ex.getMessage());
+ return false;
+ }
+ }
+
+ private boolean doSetPipelineConfig(PiPipeconf pipeconf, ByteBuffer byteBuffer) {
+
+ log.info("Setting pipeline config for {} to {} using bytebuffer...", deviceId, pipeconf.id());
+
+ P4Info p4Info = PipeconfHelper.getP4Info(pipeconf);
+ return p4Info != null && byteBuffer != null
+ && sendPipelineConfig(p4Info, ByteString.copyFrom(byteBuffer));
+ }
+
+ private boolean sendPipelineConfig(P4Info p4Info, ByteString deviceData) {
+
+ //p4 device config
+ P4Config.P4DeviceConfig p4DeviceConfigMsg = P4Config.P4DeviceConfig
+ .newBuilder()
+ .setExtras(P4Config.P4DeviceConfig.Extras.getDefaultInstance())
+ .setReassign(true)
+ .setDeviceData(deviceData)
+ .build();
+ //pipeline config message
+ ForwardingPipelineConfig pipelineConfig = ForwardingPipelineConfig
+ .newBuilder()
+ .setDeviceId(p4DeviceId)
+ .setP4Info(p4Info)
+ .setP4DeviceConfig(p4DeviceConfigMsg.toByteString())
+ .build();
+
+ //set forwarding pipeline config request
SetForwardingPipelineConfigRequest request = SetForwardingPipelineConfigRequest
.newBuilder()
.setAction(VERIFY_AND_COMMIT)
- .addConfigs(pipelineConfigBuilder.build())
+ .addConfigs(pipelineConfig)
.build();
-
try {
this.blockingStub.setForwardingPipelineConfig(request);
@@ -283,6 +299,7 @@
return true;
}
+
private boolean doWriteTableEntries(Collection<PiTableEntry> piTableEntries, WriteOperationType opType,
PiPipeconf pipeconf) {
@@ -291,12 +308,12 @@
Collection<Update> updateMsgs = TableEntryEncoder.encode(piTableEntries, pipeconf)
.stream()
.map(tableEntryMsg ->
- Update.newBuilder()
- .setEntity(Entity.newBuilder()
- .setTableEntry(tableEntryMsg)
- .build())
- .setType(UPDATE_TYPES.get(opType))
- .build())
+ Update.newBuilder()
+ .setEntity(Entity.newBuilder()
+ .setTableEntry(tableEntryMsg)
+ .build())
+ .setType(UPDATE_TYPES.get(opType))
+ .build())
.collect(Collectors.toList());
if (updateMsgs.size() == 0) {
@@ -338,10 +355,10 @@
ReadRequest requestMsg = ReadRequest.newBuilder()
.setDeviceId(p4DeviceId)
.addEntities(Entity.newBuilder()
- .setTableEntry(TableEntry.newBuilder()
- .setTableId(tableId)
- .build())
- .build())
+ .setTableEntry(TableEntry.newBuilder()
+ .setTableId(tableId)
+ .build())
+ .build())
.build();
Iterator<ReadResponse> responses;
diff --git a/tools/test/configs/general-provider-cfg.json b/tools/test/configs/general-provider-cfg.json
index 6208903..8f262c7 100644
--- a/tools/test/configs/general-provider-cfg.json
+++ b/tools/test/configs/general-provider-cfg.json
@@ -1,40 +1,18 @@
{
"devices": {
- "device:identifier": {
+ "device:tofino:1": {
"generalprovider": {
"p4runtime": {
- "ip": "192.168.56.104",
- "port": 830,
- "deviceKeyId": "p4runtime:device:identifier"
- },
- "gnmi": {
- "ip": "192.168.56.105",
- "port": 830,
- "deviceKeyId": "p4runtime:device:identifier"
+ "ip": "10.254.1.39",
+ "port": 50051,
+ "deviceId": 0
}
},
"piPipeconf":{
- "piPipeconfId": "pipipeconfTest"
+ "piPipeconfId": ""
},
"basic": {
- "driver": "bmv2"
- }
- },
- "device:identifier2": {
- "generalprovider": {
- "p4runtime": {
- "ip": "192.168.56.106",
- "port": 830,
- "deviceKeyId": "p4runtime:device:identifier2"
- },
- "gnmi": {
- "ip": "192.168.56.107",
- "port": 830,
- "deviceKeyId": "p4runtime:device:identifier2"
- }
- },
- "basic": {
- "driver": "bmv2"
+ "driver": "tofino"
}
}
}
diff --git a/tools/test/p4src/p4-14/Makefile b/tools/test/p4src/p4-14/Makefile
index 6b9618b..ca73869 100644
--- a/tools/test/p4src/p4-14/Makefile
+++ b/tools/test/p4src/p4-14/Makefile
@@ -1,23 +1,29 @@
-all: default.json empty.json ecmp.json wcmp.json
+BMV2_CPU_PORT=255
-default.json: default.p4
- p4c-bm2-ss --p4v 14 -o p4c-out/default.json \
+BMV2_OPTIONS=-DDO_BMV2_BUILD -DCPU_PORT=$(BMV2_CPU_PORT)
+
+all: bmv2
+
+bmv2: default-bmv2 empty-bmv2 ecmp-bmv2 wcmp-bmv2
+
+default-bmv2: default.p4
+ p4c-bm2-ss $(BMV2_OPTIONS) --p4v 14 -o p4c-out/default.json \
--p4runtime-file p4c-out/default.p4info --p4runtime-format text \
default.p4
-empty.json: empty.p4
+empty-bmv2: empty.p4
p4c-bm2-ss --p4v 14 -o p4c-out/empty.json \
--p4runtime-file p4c-out/empty.p4info --p4runtime-format text \
empty.p4
-ecmp.json: ecmp.p4
- p4c-bm2-ss --p4v 14 -o p4c-out/ecmp.json \
+ecmp-bmv2: ecmp.p4
+ p4c-bm2-ss $(BMV2_OPTIONS) --p4v 14 -o p4c-out/ecmp.json \
--p4runtime-file p4c-out/ecmp.p4info --p4runtime-format text \
ecmp.p4
-wcmp.json: wcmp.p4
- p4c-bm2-ss --p4v 14 -o p4c-out/wcmp.json \
- --p4runtime-file p4c-out/ecmp.p4info --p4runtime-format text \
+wcmp-bmv2: wcmp.p4
+ p4c-bm2-ss $(BMV2_OPTIONS) --p4v 14 -o p4c-out/wcmp.json \
+ --p4runtime-file p4c-out/wcmp.p4info --p4runtime-format text \
wcmp.p4
clean:
diff --git a/tools/test/p4src/p4-14/default.p4 b/tools/test/p4src/p4-14/default.p4
index be88a5d..f653b98 100644
--- a/tools/test/p4src/p4-14/default.p4
+++ b/tools/test/p4src/p4-14/default.p4
@@ -3,18 +3,19 @@
#include "include/parser.p4"
#include "include/actions.p4"
#include "include/port_counters.p4"
+#include "include/packet_io.p4"
table table0 {
reads {
- standard_metadata.ingress_port : ternary;
- ethernet.dstAddr : ternary;
- ethernet.srcAddr : ternary;
+ IGR_PORT_FIELD : ternary;
+ ethernet.dstAddr : ternary;
+ ethernet.srcAddr : ternary;
ethernet.etherType : ternary;
}
actions {
set_egress_port;
send_to_cpu;
- drop;
+ _drop;
}
support_timeout: true;
}
@@ -26,6 +27,13 @@
}
control ingress {
- apply(table0);
+ ingress_pkt_io();
+ if (not valid(packet_out_hdr)) {
+ apply(table0);
+ }
process_port_counters();
+}
+
+control egress {
+ egress_pkt_io();
}
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/ecmp.p4 b/tools/test/p4src/p4-14/ecmp.p4
index f751049..341e1e1 100644
--- a/tools/test/p4src/p4-14/ecmp.p4
+++ b/tools/test/p4src/p4-14/ecmp.p4
@@ -3,12 +3,19 @@
#include "include/parser.p4"
#include "include/actions.p4"
#include "include/port_counters.p4"
+#include "include/packet_io.p4"
+
+/*
+ Expected number of ports of an ECMP group.
+ This value is fixed, .i.e. we do not support ECMP over port groups of different size.
+ Due to hardware limitations, this value must be constant and a power of 2.
+*/
+#define ECMP_GROUP_SIZE 4
header_type ecmp_metadata_t {
fields {
groupId : 16;
selector : 16;
- groupSize : 32; // Not used. Workaround to avoid p4c complaining about inferring type to groupSize.
}
}
@@ -32,24 +39,26 @@
output_width : 32;
}
-action ecmp_group(groupId, groupSize) {
+action ecmp_group(groupId) {
modify_field(ecmp_metadata.groupId, groupId);
- modify_field(ecmp_metadata.groupSize, groupSize);
- modify_field_with_hash_based_offset(ecmp_metadata.selector, 0, ecmp_hash, groupSize);
+ modify_field_with_hash_based_offset(ecmp_metadata.selector, 0, ecmp_hash, ECMP_GROUP_SIZE);
}
+#ifdef __TOFINO_BUILD__
+@pragma immediate 0
+#endif
table table0 {
reads {
- standard_metadata.ingress_port : ternary;
- ethernet.dstAddr : ternary;
- ethernet.srcAddr : ternary;
+ IGR_PORT_FIELD : ternary;
+ ethernet.dstAddr : ternary;
+ ethernet.srcAddr : ternary;
ethernet.etherType : ternary;
}
actions {
set_egress_port;
ecmp_group;
send_to_cpu;
- drop;
+ _drop;
}
support_timeout: true;
}
@@ -77,10 +86,17 @@
}
control ingress {
- apply(table0) {
- ecmp_group {
- apply(ecmp_group_table);
+ ingress_pkt_io();
+ if (not valid(packet_out_hdr)) {
+ apply(table0) {
+ ecmp_group {
+ apply(ecmp_group_table);
+ }
}
}
process_port_counters();
+}
+
+control egress {
+ egress_pkt_io();
}
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/include/actions.p4 b/tools/test/p4src/p4-14/include/actions.p4
index 8649da0..961890d 100644
--- a/tools/test/p4src/p4-14/include/actions.p4
+++ b/tools/test/p4src/p4-14/include/actions.p4
@@ -1,11 +1,24 @@
+#ifndef __ACTIONS_P4__
+#define __ACTIONS_P4__
+#include "headers.p4"
+
action set_egress_port(port) {
- modify_field(standard_metadata.egress_spec, port);
+ modify_field(EGR_PORT_FIELD, port);
}
-action drop() {
+action _drop() {
+ #ifdef __TOFINO_BUILD__
+ drop();
+ #else
modify_field(standard_metadata.egress_spec, DROP_PORT);
+ #endif
}
action send_to_cpu() {
+ #ifdef __TOFINO_BUILD__
+ modify_field(ig_intr_md_for_tm.copy_to_cpu, 1);
+ #else
modify_field(standard_metadata.egress_spec, CPU_PORT);
-}
\ No newline at end of file
+ #endif
+}
+#endif
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/include/defines.p4 b/tools/test/p4src/p4-14/include/defines.p4
index c9229c9..35baa4f 100644
--- a/tools/test/p4src/p4-14/include/defines.p4
+++ b/tools/test/p4src/p4-14/include/defines.p4
@@ -1,4 +1,25 @@
// Logic ports as defined in the simple_switch target
#define MAX_PORTS 254
-#define CPU_PORT 255
#define DROP_PORT 511
+
+#define NULL_ETH_TYPE 0x00
+#define ETHERTYPE_IPV4 0x0800
+#define IP_PROTOCOLS_TCP 6
+#define IP_PROTOCOLS_UDP 17
+
+// Build for Tofino by default.
+
+#ifdef DO_BMV2_BUILD
+#define __BMV2_BUILD__ 1
+#else
+#define __TOFINO_BUILD__ 1
+#endif
+
+#ifdef __TOFINO_BUILD__
+#define EGR_PORT_FIELD ig_intr_md_for_tm.ucast_egress_port
+#define IGR_PORT_FIELD ig_intr_md.ingress_port
+
+#else
+#define EGR_PORT_FIELD standard_metadata.egress_spec
+#define IGR_PORT_FIELD standard_metadata.ingress_port
+#endif
diff --git a/tools/test/p4src/p4-14/include/headers.p4 b/tools/test/p4src/p4-14/include/headers.p4
index 57bda87..c8fb31f 100644
--- a/tools/test/p4src/p4-14/include/headers.p4
+++ b/tools/test/p4src/p4-14/include/headers.p4
@@ -1,9 +1,19 @@
-header_type intrinsic_metadata_t {
+#ifndef __HEADERS_P4__
+#define __HEADERS_P4__
+
+#ifdef __TOFINO_BUILD__
+#include <tofino/intrinsic_metadata.p4>
+#endif
+
+header_type packet_in_t {
fields {
- ingress_global_timestamp : 32;
- lf_field_list : 32;
- mcast_grp : 16;
- egress_rid : 16;
+ ingress_port: 9;
+ }
+}
+
+header_type packet_out_t {
+ fields {
+ egress_port: 9;
}
}
@@ -55,4 +65,6 @@
length_ : 16;
checksum : 16;
}
-}
\ No newline at end of file
+}
+
+#endif
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/include/packet_io.p4 b/tools/test/p4src/p4-14/include/packet_io.p4
new file mode 100644
index 0000000..5da7a65
--- /dev/null
+++ b/tools/test/p4src/p4-14/include/packet_io.p4
@@ -0,0 +1,46 @@
+#ifndef __PACKET_IO__
+#define __PACKET_IO__
+#include "headers.p4"
+#include "parser.p4"
+
+action _packet_out() {
+ modify_field(EGR_PORT_FIELD, packet_out_hdr.egress_port);
+ remove_header(packet_out_hdr);
+}
+
+table ingress_pkt {
+ actions {
+ _packet_out;
+ }
+ default_action: _packet_out();
+}
+
+control ingress_pkt_io {
+ if (valid(packet_out_hdr)) {
+ apply(ingress_pkt);
+ }
+}
+
+action add_packet_in_hdr() {
+ add_header(packet_in_hdr);
+ modify_field(packet_in_hdr.ingress_port, IGR_PORT_FIELD);
+}
+
+table egress_pkt {
+ actions {
+ add_packet_in_hdr;
+ }
+ default_action: add_packet_in_hdr();
+}
+
+control egress_pkt_io {
+ #ifdef __TOFINO_BUILD__
+ if (ig_intr_md_for_tm.copy_to_cpu == 1) {
+ #else
+ if (IGR_PORT_FIELD == CPU_PORT) {
+ #endif
+ apply(egress_pkt);
+ }
+}
+
+#endif
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/include/parser.p4 b/tools/test/p4src/p4-14/include/parser.p4
index 6a205ec..73dcdfd 100644
--- a/tools/test/p4src/p4-14/include/parser.p4
+++ b/tools/test/p4src/p4-14/include/parser.p4
@@ -1,12 +1,40 @@
-metadata intrinsic_metadata_t intrinsic_metadata;
+#ifndef __PARSER_P4__
+#define __PARSER_P4__
+#include "defines.p4"
+#include "headers.p4"
+
+header packet_in_t packet_in_hdr;
+header packet_out_t packet_out_hdr;
+header ethernet_t ethernet;
+header ipv4_t ipv4;
+header tcp_t tcp;
+header udp_t udp;
parser start {
+ // FIXME: Cheat the compiler to generate the deparser of packet in
+ // This is just a hack, we assume first 8 bit of etherType won't be 0
+ return select( current(96, 8) ) {
+ NULL_ETH_TYPE : parse_pkt_in;
+ default : default_parser;
+ }
+}
+
+parser parse_pkt_in {
+ extract(packet_in_hdr);
return parse_ethernet;
}
-#define ETHERTYPE_IPV4 0x0800
+parser default_parser {
+ return select(IGR_PORT_FIELD) {
+ CPU_PORT : parse_pkt_out;
+ default : parse_ethernet;
+ }
+}
-header ethernet_t ethernet;
+parser parse_pkt_out {
+ extract(packet_out_hdr);
+ return parse_ethernet;
+}
parser parse_ethernet {
extract(ethernet);
@@ -16,11 +44,6 @@
}
}
-header ipv4_t ipv4;
-
-#define IP_PROTOCOLS_TCP 6
-#define IP_PROTOCOLS_UDP 17
-
parser parse_ipv4 {
extract(ipv4);
return select(latest.fragOffset, latest.protocol) {
@@ -30,16 +53,14 @@
}
}
-header tcp_t tcp;
-
parser parse_tcp {
extract(tcp);
return ingress;
}
-header udp_t udp;
-
parser parse_udp {
extract(udp);
return ingress;
-}
\ No newline at end of file
+}
+
+#endif
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/include/port_counters.p4 b/tools/test/p4src/p4-14/include/port_counters.p4
index 06cba4f..44a2b0e 100644
--- a/tools/test/p4src/p4-14/include/port_counters.p4
+++ b/tools/test/p4src/p4-14/include/port_counters.p4
@@ -1,5 +1,9 @@
+#ifndef __PORT_COUNTERS_P4__
+#define __PORT_COUNTERS_P4__
+#include "defines.p4"
+
counter ingress_port_counter {
- type : packets; // bmv2 always counts both bytes and packets
+ type : packets; // bmv2 always counts both bytes and packets
instance_count : MAX_PORTS;
min_width : 32;
}
@@ -10,20 +14,29 @@
min_width : 32;
}
-table port_count_table {
- actions {
- count_packet;
- }
+action count_ingress() {
+ count(ingress_port_counter, IGR_PORT_FIELD);
}
-action count_packet() {
- count(ingress_port_counter, standard_metadata.ingress_port);
- count(egress_port_counter, standard_metadata.egress_spec);
+action count_egress() {
+ count(egress_port_counter, EGR_PORT_FIELD);
+}
+
+table ingress_port_count_table {
+ actions { count_ingress; }
+ default_action: count_ingress;
+}
+
+table egress_port_count_table {
+ actions { count_egress; }
+ default_action: count_egress;
}
control process_port_counters {
- // Avoid counting logical ports, such as drop and cpu
- if (standard_metadata.egress_spec < MAX_PORTS) {
- apply(port_count_table);
- }
-}
\ No newline at end of file
+ if (EGR_PORT_FIELD < MAX_PORTS) {
+ apply(ingress_port_count_table);
+ apply(egress_port_count_table);
+ }
+}
+
+#endif
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/p4c-out/default.json b/tools/test/p4src/p4-14/p4c-out/default.json
index 4490c18..347b3be 100644
--- a/tools/test/p4src/p4-14/p4c-out/default.json
+++ b/tools/test/p4src/p4-14/p4c-out/default.json
@@ -9,8 +9,10 @@
"name" : "scalars_0",
"id" : 0,
"fields" : [
- ["tmp", 32, false],
- ["tmp_0", 32, false]
+ ["tmp_0", 104, false],
+ ["tmp", 8, false],
+ ["tmp_1", 32, false],
+ ["tmp_2", 32, false]
]
},
{
@@ -41,9 +43,25 @@
]
},
{
- "name" : "tcp_t",
+ "name" : "packet_in_t",
"id" : 3,
"fields" : [
+ ["ingress_port", 9, false],
+ ["_padding", 7, false]
+ ]
+ },
+ {
+ "name" : "packet_out_t",
+ "id" : 4,
+ "fields" : [
+ ["egress_port", 9, false],
+ ["_padding_0", 7, false]
+ ]
+ },
+ {
+ "name" : "tcp_t",
+ "id" : 5,
+ "fields" : [
["srcPort", 16, false],
["dstPort", 16, false],
["seqNo", 32, false],
@@ -59,7 +77,7 @@
},
{
"name" : "udp_t",
- "id" : 4,
+ "id" : 6,
"fields" : [
["srcPort", 16, false],
["dstPort", 16, false],
@@ -68,18 +86,8 @@
]
},
{
- "name" : "intrinsic_metadata_t",
- "id" : 5,
- "fields" : [
- ["ingress_global_timestamp", 32, false],
- ["lf_field_list", 32, false],
- ["mcast_grp", 16, false],
- ["egress_rid", 16, false]
- ]
- },
- {
"name" : "standard_metadata",
- "id" : 6,
+ "id" : 7,
"fields" : [
["ingress_port", 9, false],
["egress_spec", 9, false],
@@ -98,7 +106,7 @@
["mcast_grp", 16, false],
["resubmit_flag", 1, false],
["egress_rid", 16, false],
- ["_padding", 5, false]
+ ["_padding_1", 5, false]
]
}
],
@@ -132,25 +140,32 @@
"pi_omit" : true
},
{
- "name" : "tcp",
+ "name" : "packet_in_hdr",
"id" : 4,
+ "header_type" : "packet_in_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "packet_out_hdr",
+ "id" : 5,
+ "header_type" : "packet_out_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "tcp",
+ "id" : 6,
"header_type" : "tcp_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "udp",
- "id" : 5,
+ "id" : 7,
"header_type" : "udp_t",
"metadata" : false,
"pi_omit" : true
- },
- {
- "name" : "intrinsic_metadata",
- "id" : 6,
- "header_type" : "intrinsic_metadata_t",
- "metadata" : true,
- "pi_omit" : true
}
],
"header_stacks" : [],
@@ -174,8 +189,31 @@
"init_state" : "start",
"parse_states" : [
{
- "name" : "parse_ethernet",
+ "name" : "default_parser",
"id" : 0,
+ "parser_ops" : [],
+ "transitions" : [
+ {
+ "value" : "0x00ff",
+ "mask" : null,
+ "next_state" : "parse_pkt_out"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_ethernet",
+ "id" : 1,
"parser_ops" : [
{
"parameters" : [
@@ -208,7 +246,7 @@
},
{
"name" : "parse_ipv4",
- "id" : 1,
+ "id" : 2,
"parser_ops" : [
{
"parameters" : [
@@ -249,8 +287,54 @@
]
},
{
+ "name" : "parse_pkt_in",
+ "id" : 3,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "packet_in_hdr"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : []
+ },
+ {
+ "name" : "parse_pkt_out",
+ "id" : 4,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "packet_out_hdr"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : []
+ },
+ {
"name" : "parse_tcp",
- "id" : 2,
+ "id" : 5,
"parser_ops" : [
{
"parameters" : [
@@ -273,7 +357,7 @@
},
{
"name" : "parse_udp",
- "id" : 3,
+ "id" : 6,
"parser_ops" : [
{
"parameters" : [
@@ -296,16 +380,66 @@
},
{
"name" : "start",
- "id" : 4,
- "parser_ops" : [],
+ "id" : 7,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ },
+ {
+ "type" : "lookahead",
+ "value" : [0, 104]
+ }
+ ],
+ "op" : "set"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ }
+ }
+ ],
+ "op" : "set"
+ }
+ ],
"transitions" : [
{
+ "value" : "0x00",
+ "mask" : null,
+ "next_state" : "parse_pkt_in"
+ },
+ {
"value" : "default",
"mask" : null,
- "next_state" : "parse_ethernet"
+ "next_state" : "default_parser"
}
],
- "transition_key" : []
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ }
+ ]
}
]
}
@@ -314,7 +448,7 @@
{
"name" : "deparser",
"id" : 0,
- "order" : ["ethernet", "ipv4", "udp", "tcp"]
+ "order" : ["packet_out_hdr", "packet_in_hdr", "ethernet", "ipv4", "udp", "tcp"]
}
],
"meter_arrays" : [],
@@ -343,10 +477,45 @@
"learn_lists" : [],
"actions" : [
{
- "name" : "NoAction",
+ "name" : "add_packet_in_hdr",
"id" : 0,
"runtime_data" : [],
- "primitives" : []
+ "primitives" : [
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "packet_in_hdr"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 25,
+ "column" : 4,
+ "source_fragment" : "add_header(packet_in_hdr)"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["packet_in_hdr", "ingress_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 26,
+ "column" : 4,
+ "source_fragment" : "modify_field(packet_in_hdr.ingress_port, standard_metadata.ingress_port)"
+ }
+ }
+ ]
},
{
"name" : "NoAction",
@@ -378,7 +547,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 1,
+ "line" : 5,
"column" : 23,
"source_fragment" : "port) { ..."
}
@@ -404,7 +573,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 21,
"column" : 4,
"source_fragment" : "modify_field(standard_metadata.egress_spec, 255)"
}
@@ -412,7 +581,7 @@
]
},
{
- "name" : "drop",
+ "name" : "_drop",
"id" : 4,
"runtime_data" : [],
"primitives" : [
@@ -430,7 +599,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 13,
"column" : 4,
"source_fragment" : "modify_field(standard_metadata.egress_spec, 511)"
}
@@ -438,7 +607,7 @@
]
},
{
- "name" : "count_packet",
+ "name" : "_packet_out",
"id" : 5,
"runtime_data" : [],
"primitives" : [
@@ -447,52 +616,48 @@
"parameters" : [
{
"type" : "field",
- "value" : ["scalars", "tmp"]
- },
- {
- "type" : "expression",
- "value" : {
- "type" : "expression",
- "value" : {
- "op" : "&",
- "left" : {
- "type" : "field",
- "value" : ["standard_metadata", "ingress_port"]
- },
- "right" : {
- "type" : "hexstr",
- "value" : "0xffffffff"
- }
- }
- }
- }
- ]
- },
- {
- "op" : "count",
- "parameters" : [
- {
- "type" : "counter_array",
- "value" : "ingress_port_counter"
+ "value" : ["standard_metadata", "egress_spec"]
},
{
"type" : "field",
- "value" : ["scalars", "tmp"]
+ "value" : ["packet_out_hdr", "egress_port"]
}
],
"source_info" : {
- "filename" : "include/port_counters.p4",
- "line" : 20,
+ "filename" : "include/packet_io.p4",
+ "line" : 7,
"column" : 4,
- "source_fragment" : "count(ingress_port_counter, standard_metadata.ingress_port)"
+ "source_fragment" : "modify_field(standard_metadata.egress_spec, packet_out_hdr.egress_port)"
}
},
{
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "packet_out_hdr"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 8,
+ "column" : 4,
+ "source_fragment" : "remove_header(packet_out_hdr)"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "count_egress",
+ "id" : 6,
+ "runtime_data" : [],
+ "primitives" : [
+ {
"op" : "assign",
"parameters" : [
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
+ "value" : ["scalars", "tmp_1"]
},
{
"type" : "expression",
@@ -522,31 +687,112 @@
},
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
+ "value" : ["scalars", "tmp_1"]
}
],
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 21,
+ "line" : 22,
"column" : 4,
"source_fragment" : "count(egress_port_counter, standard_metadata.egress_spec)"
}
}
]
+ },
+ {
+ "name" : "count_ingress",
+ "id" : 7,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_2"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "op" : "count",
+ "parameters" : [
+ {
+ "type" : "counter_array",
+ "value" : "ingress_port_counter"
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_2"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/port_counters.p4",
+ "line" : 18,
+ "column" : 4,
+ "source_fragment" : "count(ingress_port_counter, standard_metadata.ingress_port)"
+ }
+ }
+ ]
}
],
"pipelines" : [
{
"name" : "ingress",
"id" : 0,
- "init_table" : "table0",
+ "init_table" : "node_2",
"tables" : [
{
- "name" : "table0",
+ "name" : "ingress_pkt",
"id" : 0,
"source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 11,
+ "column" : 0,
+ "source_fragment" : "table ingress_pkt { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [5],
+ "actions" : ["_packet_out"],
+ "base_default_next" : "node_4",
+ "next_tables" : {
+ "_packet_out" : "node_4"
+ },
+ "default_entry" : {
+ "action_id" : 5,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "table0",
+ "id" : 1,
+ "source_info" : {
"filename" : "default.p4",
- "line" : 7,
+ "line" : 8,
"column" : 0,
"source_fragment" : "table table0 { ..."
},
@@ -578,30 +824,30 @@
"with_counters" : true,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [2, 3, 4, 0],
- "actions" : ["set_egress_port", "send_to_cpu", "drop", "NoAction"],
- "base_default_next" : "node_3",
+ "action_ids" : [2, 3, 4, 1],
+ "actions" : ["set_egress_port", "send_to_cpu", "_drop", "NoAction"],
+ "base_default_next" : "node_6",
"next_tables" : {
- "set_egress_port" : "node_3",
- "send_to_cpu" : "node_3",
- "drop" : "node_3",
- "NoAction" : "node_3"
+ "set_egress_port" : "node_6",
+ "send_to_cpu" : "node_6",
+ "_drop" : "node_6",
+ "NoAction" : "node_6"
},
"default_entry" : {
- "action_id" : 0,
+ "action_id" : 1,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
}
},
{
- "name" : "port_count_table",
- "id" : 1,
+ "name" : "ingress_port_count_table",
+ "id" : 2,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 13,
+ "line" : 25,
"column" : 0,
- "source_fragment" : "table port_count_table { ..."
+ "source_fragment" : "table ingress_port_count_table { ..."
},
"key" : [],
"match_type" : "exact",
@@ -610,15 +856,43 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [5, 1],
- "actions" : ["count_packet", "NoAction"],
- "base_default_next" : null,
+ "action_ids" : [7],
+ "actions" : ["count_ingress"],
+ "base_default_next" : "egress_port_count_table",
"next_tables" : {
- "count_packet" : null,
- "NoAction" : null
+ "count_ingress" : "egress_port_count_table"
},
"default_entry" : {
- "action_id" : 1,
+ "action_id" : 7,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "egress_port_count_table",
+ "id" : 3,
+ "source_info" : {
+ "filename" : "include/port_counters.p4",
+ "line" : 30,
+ "column" : 0,
+ "source_fragment" : "table egress_port_count_table { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [6],
+ "actions" : ["count_egress"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "count_egress" : null
+ },
+ "default_entry" : {
+ "action_id" : 6,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -628,12 +902,64 @@
"action_profiles" : [],
"conditionals" : [
{
- "name" : "node_3",
+ "name" : "node_2",
"id" : 0,
"source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 19,
+ "column" : 8,
+ "source_fragment" : "valid(packet_out_hdr)"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["packet_out_hdr", "$valid$"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "ingress_pkt",
+ "false_next" : "node_4"
+ },
+ {
+ "name" : "node_4",
+ "id" : 1,
+ "source_info" : {
+ "filename" : "default.p4",
+ "line" : 31,
+ "column" : 12,
+ "source_fragment" : "valid(packet_out_hdr)"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "!=",
+ "left" : {
+ "type" : "field",
+ "value" : ["packet_out_hdr", "$valid$"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "table0",
+ "false_next" : "node_6"
+ },
+ {
+ "name" : "node_6",
+ "id" : 2,
+ "source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 26,
- "column" : 35,
+ "line" : 36,
+ "column" : 38,
"source_fragment" : "<"
},
"expression" : {
@@ -651,17 +977,74 @@
}
},
"false_next" : null,
- "true_next" : "port_count_table"
+ "true_next" : "ingress_port_count_table"
}
]
},
{
"name" : "egress",
"id" : 1,
- "init_table" : null,
- "tables" : [],
+ "init_table" : "node_11",
+ "tables" : [
+ {
+ "name" : "egress_pkt",
+ "id" : 4,
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 29,
+ "column" : 0,
+ "source_fragment" : "table egress_pkt { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [0],
+ "actions" : ["add_packet_in_hdr"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "add_packet_in_hdr" : null
+ },
+ "default_entry" : {
+ "action_id" : 0,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ }
+ ],
"action_profiles" : [],
- "conditionals" : []
+ "conditionals" : [
+ {
+ "name" : "node_11",
+ "id" : 3,
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 40,
+ "column" : 39,
+ "source_fragment" : "=="
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00ff"
+ }
+ }
+ },
+ "false_next" : null,
+ "true_next" : "egress_pkt"
+ }
+ ]
}
],
"checksums" : [],
diff --git a/tools/test/p4src/p4-14/p4c-out/default.p4info b/tools/test/p4src/p4-14/p4c-out/default.p4info
index 40722aa..c076ebb 100644
--- a/tools/test/p4src/p4-14/p4c-out/default.p4info
+++ b/tools/test/p4src/p4-14/p4c-out/default.p4info
@@ -35,7 +35,7 @@
id: 16829080
}
action_refs {
- id: 16793508
+ id: 16784184
}
action_refs {
id: 16800567
@@ -47,16 +47,45 @@
}
tables {
preamble {
- id: 33583368
- name: "port_count_table"
- alias: "port_count_table"
+ id: 33560548
+ name: "ingress_pkt"
+ alias: "ingress_pkt"
}
action_refs {
- id: 16781545
+ id: 16835928
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33618793
+ name: "egress_port_count_table"
+ alias: "egress_port_count_table"
}
action_refs {
- id: 16800567
- annotations: "@defaultonly()"
+ id: 16822771
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33579767
+ name: "ingress_port_count_table"
+ alias: "ingress_port_count_table"
+ }
+ action_refs {
+ id: 16837943
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33608529
+ name: "egress_pkt"
+ alias: "egress_pkt"
+ }
+ action_refs {
+ id: 16835663
}
size: 1024
}
@@ -88,16 +117,37 @@
}
actions {
preamble {
- id: 16793508
- name: "drop"
- alias: "drop"
+ id: 16784184
+ name: "_drop"
+ alias: "_drop"
}
}
actions {
preamble {
- id: 16781545
- name: "count_packet"
- alias: "count_packet"
+ id: 16835928
+ name: "_packet_out"
+ alias: "_packet_out"
+ }
+}
+actions {
+ preamble {
+ id: 16822771
+ name: "count_egress"
+ alias: "count_egress"
+ }
+}
+actions {
+ preamble {
+ id: 16837943
+ name: "count_ingress"
+ alias: "count_ingress"
+ }
+}
+actions {
+ preamble {
+ id: 16835663
+ name: "add_packet_in_hdr"
+ alias: "add_packet_in_hdr"
}
}
counters {
@@ -135,3 +185,28 @@
}
direct_table_id: 33617813
}
+# Manually adding controller_packet_metadata for packet I/O since P4_14 doesn't support annotations.
+controller_packet_metadata {
+ preamble {
+ id: 2868941301
+ name: "packet_in"
+ annotations: "@controller_header(\"packet_in\")"
+ }
+ metadata {
+ id: 1
+ name: "ingress_port"
+ bitwidth: 9
+ }
+}
+controller_packet_metadata {
+ preamble {
+ id: 2868916615
+ name: "packet_out"
+ annotations: "@controller_header(\"packet_out\")"
+ }
+ metadata {
+ id: 1
+ name: "egress_port"
+ bitwidth: 9
+ }
+}
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/p4c-out/ecmp.json b/tools/test/p4src/p4-14/p4c-out/ecmp.json
index 5de22a5..8c971bb 100644
--- a/tools/test/p4src/p4-14/p4c-out/ecmp.json
+++ b/tools/test/p4src/p4-14/p4c-out/ecmp.json
@@ -9,9 +9,10 @@
"name" : "scalars_0",
"id" : 0,
"fields" : [
- ["tmp", 64, false],
- ["tmp_0", 32, false],
- ["tmp_1", 32, false]
+ ["tmp_0", 104, false],
+ ["tmp", 8, false],
+ ["tmp_1", 32, false],
+ ["tmp_2", 32, false]
]
},
{
@@ -42,9 +43,25 @@
]
},
{
- "name" : "tcp_t",
+ "name" : "packet_in_t",
"id" : 3,
"fields" : [
+ ["ingress_port", 9, false],
+ ["_padding", 7, false]
+ ]
+ },
+ {
+ "name" : "packet_out_t",
+ "id" : 4,
+ "fields" : [
+ ["egress_port", 9, false],
+ ["_padding_0", 7, false]
+ ]
+ },
+ {
+ "name" : "tcp_t",
+ "id" : 5,
+ "fields" : [
["srcPort", 16, false],
["dstPort", 16, false],
["seqNo", 32, false],
@@ -60,7 +77,7 @@
},
{
"name" : "udp_t",
- "id" : 4,
+ "id" : 6,
"fields" : [
["srcPort", 16, false],
["dstPort", 16, false],
@@ -70,26 +87,15 @@
},
{
"name" : "ecmp_metadata_t",
- "id" : 5,
+ "id" : 7,
"fields" : [
["groupId", 16, false],
- ["selector", 16, false],
- ["groupSize", 32, false]
- ]
- },
- {
- "name" : "intrinsic_metadata_t",
- "id" : 6,
- "fields" : [
- ["ingress_global_timestamp", 32, false],
- ["lf_field_list", 32, false],
- ["mcast_grp", 16, false],
- ["egress_rid", 16, false]
+ ["selector", 16, false]
]
},
{
"name" : "standard_metadata",
- "id" : 7,
+ "id" : 8,
"fields" : [
["ingress_port", 9, false],
["egress_spec", 9, false],
@@ -108,7 +114,7 @@
["mcast_grp", 16, false],
["resubmit_flag", 1, false],
["egress_rid", 16, false],
- ["_padding", 5, false]
+ ["_padding_1", 5, false]
]
}
],
@@ -142,32 +148,39 @@
"pi_omit" : true
},
{
- "name" : "tcp",
+ "name" : "packet_in_hdr",
"id" : 4,
+ "header_type" : "packet_in_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "packet_out_hdr",
+ "id" : 5,
+ "header_type" : "packet_out_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "tcp",
+ "id" : 6,
"header_type" : "tcp_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "udp",
- "id" : 5,
+ "id" : 7,
"header_type" : "udp_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "ecmp_metadata",
- "id" : 6,
+ "id" : 8,
"header_type" : "ecmp_metadata_t",
"metadata" : true,
"pi_omit" : true
- },
- {
- "name" : "intrinsic_metadata",
- "id" : 7,
- "header_type" : "intrinsic_metadata_t",
- "metadata" : true,
- "pi_omit" : true
}
],
"header_stacks" : [],
@@ -191,8 +204,31 @@
"init_state" : "start",
"parse_states" : [
{
- "name" : "parse_ethernet",
+ "name" : "default_parser",
"id" : 0,
+ "parser_ops" : [],
+ "transitions" : [
+ {
+ "value" : "0x00ff",
+ "mask" : null,
+ "next_state" : "parse_pkt_out"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_ethernet",
+ "id" : 1,
"parser_ops" : [
{
"parameters" : [
@@ -225,7 +261,7 @@
},
{
"name" : "parse_ipv4",
- "id" : 1,
+ "id" : 2,
"parser_ops" : [
{
"parameters" : [
@@ -266,8 +302,54 @@
]
},
{
+ "name" : "parse_pkt_in",
+ "id" : 3,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "packet_in_hdr"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : []
+ },
+ {
+ "name" : "parse_pkt_out",
+ "id" : 4,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "packet_out_hdr"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : []
+ },
+ {
"name" : "parse_tcp",
- "id" : 2,
+ "id" : 5,
"parser_ops" : [
{
"parameters" : [
@@ -290,7 +372,7 @@
},
{
"name" : "parse_udp",
- "id" : 3,
+ "id" : 6,
"parser_ops" : [
{
"parameters" : [
@@ -313,16 +395,66 @@
},
{
"name" : "start",
- "id" : 4,
- "parser_ops" : [],
+ "id" : 7,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ },
+ {
+ "type" : "lookahead",
+ "value" : [0, 104]
+ }
+ ],
+ "op" : "set"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ }
+ }
+ ],
+ "op" : "set"
+ }
+ ],
"transitions" : [
{
+ "value" : "0x00",
+ "mask" : null,
+ "next_state" : "parse_pkt_in"
+ },
+ {
"value" : "default",
"mask" : null,
- "next_state" : "parse_ethernet"
+ "next_state" : "default_parser"
}
],
- "transition_key" : []
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ }
+ ]
}
]
}
@@ -331,7 +463,7 @@
{
"name" : "deparser",
"id" : 0,
- "order" : ["ethernet", "ipv4", "udp", "tcp"]
+ "order" : ["packet_out_hdr", "packet_in_hdr", "ethernet", "ipv4", "udp", "tcp"]
}
],
"meter_arrays" : [],
@@ -402,10 +534,45 @@
"learn_lists" : [],
"actions" : [
{
- "name" : "NoAction",
+ "name" : "add_packet_in_hdr",
"id" : 0,
"runtime_data" : [],
- "primitives" : []
+ "primitives" : [
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "packet_in_hdr"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 25,
+ "column" : 4,
+ "source_fragment" : "add_header(packet_in_hdr)"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["packet_in_hdr", "ingress_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 26,
+ "column" : 4,
+ "source_fragment" : "modify_field(packet_in_hdr.ingress_port, standard_metadata.ingress_port)"
+ }
+ }
+ ]
},
{
"name" : "NoAction",
@@ -443,7 +610,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 1,
+ "line" : 5,
"column" : 23,
"source_fragment" : "port) { ..."
}
@@ -474,7 +641,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 1,
+ "line" : 5,
"column" : 23,
"source_fragment" : "port) { ..."
}
@@ -488,10 +655,6 @@
{
"name" : "groupId",
"bitwidth" : 16
- },
- {
- "name" : "groupSize",
- "bitwidth" : 32
}
],
"primitives" : [
@@ -509,57 +672,12 @@
],
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 35,
+ "line" : 42,
"column" : 18,
- "source_fragment" : "groupId, groupSize) { ..."
+ "source_fragment" : "groupId) { ..."
}
},
{
- "op" : "assign",
- "parameters" : [
- {
- "type" : "field",
- "value" : ["ecmp_metadata", "groupSize"]
- },
- {
- "type" : "runtime_data",
- "value" : 1
- }
- ],
- "source_info" : {
- "filename" : "ecmp.p4",
- "line" : 35,
- "column" : 27,
- "source_fragment" : "groupSize) { ..."
- }
- },
- {
- "op" : "assign",
- "parameters" : [
- {
- "type" : "field",
- "value" : ["scalars", "tmp"]
- },
- {
- "type" : "expression",
- "value" : {
- "type" : "expression",
- "value" : {
- "op" : "&",
- "left" : {
- "type" : "local",
- "value" : 1
- },
- "right" : {
- "type" : "hexstr",
- "value" : "0xffffffffffffffff"
- }
- }
- }
- }
- ]
- },
- {
"op" : "modify_field_with_hash_based_offset",
"parameters" : [
{
@@ -575,15 +693,15 @@
"value" : "calc"
},
{
- "type" : "field",
- "value" : ["scalars", "tmp"]
+ "type" : "hexstr",
+ "value" : "0x0000000000000004"
}
],
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 38,
+ "line" : 44,
"column" : 4,
- "source_fragment" : "modify_field_with_hash_based_offset(ecmp_metadata.selector, 0, ecmp_hash, groupSize)"
+ "source_fragment" : "modify_field_with_hash_based_offset(ecmp_metadata.selector, 0, ecmp_hash, 4)"
}
}
]
@@ -607,7 +725,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 21,
"column" : 4,
"source_fragment" : "modify_field(standard_metadata.egress_spec, 255)"
}
@@ -615,7 +733,7 @@
]
},
{
- "name" : "drop",
+ "name" : "_drop",
"id" : 7,
"runtime_data" : [],
"primitives" : [
@@ -633,7 +751,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 13,
"column" : 4,
"source_fragment" : "modify_field(standard_metadata.egress_spec, 511)"
}
@@ -641,7 +759,7 @@
]
},
{
- "name" : "count_packet",
+ "name" : "_packet_out",
"id" : 8,
"runtime_data" : [],
"primitives" : [
@@ -650,47 +768,43 @@
"parameters" : [
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
- },
- {
- "type" : "expression",
- "value" : {
- "type" : "expression",
- "value" : {
- "op" : "&",
- "left" : {
- "type" : "field",
- "value" : ["standard_metadata", "ingress_port"]
- },
- "right" : {
- "type" : "hexstr",
- "value" : "0xffffffff"
- }
- }
- }
- }
- ]
- },
- {
- "op" : "count",
- "parameters" : [
- {
- "type" : "counter_array",
- "value" : "ingress_port_counter"
+ "value" : ["standard_metadata", "egress_spec"]
},
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
+ "value" : ["packet_out_hdr", "egress_port"]
}
],
"source_info" : {
- "filename" : "include/port_counters.p4",
- "line" : 20,
+ "filename" : "include/packet_io.p4",
+ "line" : 7,
"column" : 4,
- "source_fragment" : "count(ingress_port_counter, standard_metadata.ingress_port)"
+ "source_fragment" : "modify_field(standard_metadata.egress_spec, packet_out_hdr.egress_port)"
}
},
{
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "packet_out_hdr"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 8,
+ "column" : 4,
+ "source_fragment" : "remove_header(packet_out_hdr)"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "count_egress",
+ "id" : 9,
+ "runtime_data" : [],
+ "primitives" : [
+ {
"op" : "assign",
"parameters" : [
{
@@ -730,26 +844,107 @@
],
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 21,
+ "line" : 22,
"column" : 4,
"source_fragment" : "count(egress_port_counter, standard_metadata.egress_spec)"
}
}
]
+ },
+ {
+ "name" : "count_ingress",
+ "id" : 10,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_2"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "op" : "count",
+ "parameters" : [
+ {
+ "type" : "counter_array",
+ "value" : "ingress_port_counter"
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_2"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/port_counters.p4",
+ "line" : 18,
+ "column" : 4,
+ "source_fragment" : "count(ingress_port_counter, standard_metadata.ingress_port)"
+ }
+ }
+ ]
}
],
"pipelines" : [
{
"name" : "ingress",
"id" : 0,
- "init_table" : "table0",
+ "init_table" : "node_2",
"tables" : [
{
- "name" : "table0",
+ "name" : "ingress_pkt",
"id" : 0,
"source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 11,
+ "column" : 0,
+ "source_fragment" : "table ingress_pkt { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [8],
+ "actions" : ["_packet_out"],
+ "base_default_next" : "node_4",
+ "next_tables" : {
+ "_packet_out" : "node_4"
+ },
+ "default_entry" : {
+ "action_id" : 8,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "table0",
+ "id" : 1,
+ "source_info" : {
"filename" : "ecmp.p4",
- "line" : 41,
+ "line" : 50,
"column" : 0,
"source_fragment" : "table table0 { ..."
},
@@ -781,18 +976,18 @@
"with_counters" : true,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [4, 5, 6, 7, 1],
- "actions" : ["set_egress_port", "ecmp_group", "send_to_cpu", "drop", "NoAction"],
- "base_default_next" : "node_4",
+ "action_ids" : [4, 5, 6, 7, 2],
+ "actions" : ["set_egress_port", "ecmp_group", "send_to_cpu", "_drop", "NoAction"],
+ "base_default_next" : "node_7",
"next_tables" : {
"ecmp_group" : "ecmp_group_table",
- "set_egress_port" : "node_4",
- "send_to_cpu" : "node_4",
- "drop" : "node_4",
- "NoAction" : "node_4"
+ "set_egress_port" : "node_7",
+ "send_to_cpu" : "node_7",
+ "_drop" : "node_7",
+ "NoAction" : "node_7"
},
"default_entry" : {
- "action_id" : 1,
+ "action_id" : 2,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -800,10 +995,10 @@
},
{
"name" : "ecmp_group_table",
- "id" : 1,
+ "id" : 2,
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 57,
+ "line" : 66,
"column" : 0,
"source_fragment" : "table ecmp_group_table { ..."
},
@@ -825,28 +1020,28 @@
"with_counters" : true,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [3, 0],
+ "action_ids" : [3, 1],
"actions" : ["set_egress_port", "NoAction"],
- "base_default_next" : "node_4",
+ "base_default_next" : "node_7",
"next_tables" : {
- "set_egress_port" : "node_4",
- "NoAction" : "node_4"
+ "set_egress_port" : "node_7",
+ "NoAction" : "node_7"
},
"default_entry" : {
- "action_id" : 0,
+ "action_id" : 1,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
}
},
{
- "name" : "port_count_table",
- "id" : 2,
+ "name" : "ingress_port_count_table",
+ "id" : 3,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 13,
+ "line" : 25,
"column" : 0,
- "source_fragment" : "table port_count_table { ..."
+ "source_fragment" : "table ingress_port_count_table { ..."
},
"key" : [],
"match_type" : "exact",
@@ -855,15 +1050,43 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [8, 2],
- "actions" : ["count_packet", "NoAction"],
- "base_default_next" : null,
+ "action_ids" : [10],
+ "actions" : ["count_ingress"],
+ "base_default_next" : "egress_port_count_table",
"next_tables" : {
- "count_packet" : null,
- "NoAction" : null
+ "count_ingress" : "egress_port_count_table"
},
"default_entry" : {
- "action_id" : 2,
+ "action_id" : 10,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "egress_port_count_table",
+ "id" : 4,
+ "source_info" : {
+ "filename" : "include/port_counters.p4",
+ "line" : 30,
+ "column" : 0,
+ "source_fragment" : "table egress_port_count_table { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [9],
+ "actions" : ["count_egress"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "count_egress" : null
+ },
+ "default_entry" : {
+ "action_id" : 9,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -873,12 +1096,64 @@
"action_profiles" : [],
"conditionals" : [
{
- "name" : "node_4",
+ "name" : "node_2",
"id" : 0,
"source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 19,
+ "column" : 8,
+ "source_fragment" : "valid(packet_out_hdr)"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["packet_out_hdr", "$valid$"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "ingress_pkt",
+ "false_next" : "node_4"
+ },
+ {
+ "name" : "node_4",
+ "id" : 1,
+ "source_info" : {
+ "filename" : "ecmp.p4",
+ "line" : 90,
+ "column" : 12,
+ "source_fragment" : "valid(packet_out_hdr)"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "!=",
+ "left" : {
+ "type" : "field",
+ "value" : ["packet_out_hdr", "$valid$"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "table0",
+ "false_next" : "node_7"
+ },
+ {
+ "name" : "node_7",
+ "id" : 2,
+ "source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 26,
- "column" : 35,
+ "line" : 36,
+ "column" : 38,
"source_fragment" : "<"
},
"expression" : {
@@ -896,17 +1171,74 @@
}
},
"false_next" : null,
- "true_next" : "port_count_table"
+ "true_next" : "ingress_port_count_table"
}
]
},
{
"name" : "egress",
"id" : 1,
- "init_table" : null,
- "tables" : [],
+ "init_table" : "node_12",
+ "tables" : [
+ {
+ "name" : "egress_pkt",
+ "id" : 5,
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 29,
+ "column" : 0,
+ "source_fragment" : "table egress_pkt { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [0],
+ "actions" : ["add_packet_in_hdr"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "add_packet_in_hdr" : null
+ },
+ "default_entry" : {
+ "action_id" : 0,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ }
+ ],
"action_profiles" : [],
- "conditionals" : []
+ "conditionals" : [
+ {
+ "name" : "node_12",
+ "id" : 3,
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 40,
+ "column" : 39,
+ "source_fragment" : "=="
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00ff"
+ }
+ }
+ },
+ "false_next" : null,
+ "true_next" : "egress_pkt"
+ }
+ ]
}
],
"checksums" : [],
diff --git a/tools/test/p4src/p4-14/p4c-out/ecmp.p4info b/tools/test/p4src/p4-14/p4c-out/ecmp.p4info
index fdfeff0..0961378 100644
--- a/tools/test/p4src/p4-14/p4c-out/ecmp.p4info
+++ b/tools/test/p4src/p4-14/p4c-out/ecmp.p4info
@@ -1,5 +1,33 @@
tables {
preamble {
+ id: 33612022
+ name: "ecmp_group_table"
+ alias: "ecmp_group_table"
+ }
+ match_fields {
+ id: 1
+ name: "ecmp_metadata.groupId"
+ bitwidth: 16
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "ecmp_metadata.selector"
+ bitwidth: 16
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16794308
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302009688
+ size: 1024
+}
+tables {
+ preamble {
id: 33617813
name: "table0"
alias: "table0"
@@ -32,13 +60,13 @@
id: 16794308
}
action_refs {
- id: 16791212
+ id: 16830055
}
action_refs {
id: 16829080
}
action_refs {
- id: 16793508
+ id: 16784184
}
action_refs {
id: 16800567
@@ -50,59 +78,45 @@
}
tables {
preamble {
- id: 33596222
- name: "wcmp_group_table"
- alias: "wcmp_group_table"
- }
- match_fields {
- id: 1
- name: "wcmp_meta.groupId"
- bitwidth: 16
- match_type: EXACT
- }
- match_fields {
- id: 2
- name: "wcmp_meta.selector"
- bitwidth: 32
- match_type: LPM
+ id: 33560548
+ name: "ingress_pkt"
+ alias: "ingress_pkt"
}
action_refs {
- id: 16794308
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
- }
- direct_resource_ids: 302006421
- size: 1024
-}
-tables {
- preamble {
- id: 33613026
- name: "wcmp_set_selector_table"
- alias: "wcmp_set_selector_table"
- }
- action_refs {
- id: 16819919
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
+ id: 16835928
}
size: 1024
}
tables {
preamble {
- id: 33583368
- name: "port_count_table"
- alias: "port_count_table"
+ id: 33618793
+ name: "egress_port_count_table"
+ alias: "egress_port_count_table"
}
action_refs {
- id: 16781545
+ id: 16822771
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33579767
+ name: "ingress_port_count_table"
+ alias: "ingress_port_count_table"
}
action_refs {
- id: 16800567
- annotations: "@defaultonly()"
+ id: 16837943
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33608529
+ name: "egress_pkt"
+ alias: "egress_pkt"
+ }
+ action_refs {
+ id: 16835663
}
size: 1024
}
@@ -115,13 +129,6 @@
}
actions {
preamble {
- id: 16819919
- name: "wcmp_set_selector"
- alias: "wcmp_set_selector"
- }
-}
-actions {
- preamble {
id: 16794308
name: "set_egress_port"
alias: "set_egress_port"
@@ -134,9 +141,9 @@
}
actions {
preamble {
- id: 16791212
- name: "wcmp_group"
- alias: "wcmp_group"
+ id: 16830055
+ name: "ecmp_group"
+ alias: "ecmp_group"
}
params {
id: 1
@@ -153,16 +160,37 @@
}
actions {
preamble {
- id: 16793508
- name: "drop"
- alias: "drop"
+ id: 16784184
+ name: "_drop"
+ alias: "_drop"
}
}
actions {
preamble {
- id: 16781545
- name: "count_packet"
- alias: "count_packet"
+ id: 16835928
+ name: "_packet_out"
+ alias: "_packet_out"
+ }
+}
+actions {
+ preamble {
+ id: 16822771
+ name: "count_egress"
+ alias: "count_egress"
+ }
+}
+actions {
+ preamble {
+ id: 16837943
+ name: "count_ingress"
+ alias: "count_ingress"
+ }
+}
+actions {
+ preamble {
+ id: 16835663
+ name: "add_packet_in_hdr"
+ alias: "add_packet_in_hdr"
}
}
counters {
@@ -191,6 +219,17 @@
}
direct_counters {
preamble {
+ id: 302009688
+ name: "ecmp_group_table_counter"
+ alias: "ecmp_group_table_counter"
+ }
+ spec {
+ unit: PACKETS
+ }
+ direct_table_id: 33612022
+}
+direct_counters {
+ preamble {
id: 301990488
name: "table0_counter"
alias: "table0_counter"
@@ -200,14 +239,28 @@
}
direct_table_id: 33617813
}
-direct_counters {
+# Manually adding controller_packet_metadata for packet I/O since P4_14 doesn't support annotations.
+controller_packet_metadata {
preamble {
- id: 302006421
- name: "wcmp_group_table_counter"
- alias: "wcmp_group_table_counter"
+ id: 2868941301
+ name: "packet_in"
+ annotations: "@controller_header(\"packet_in\")"
}
- spec {
- unit: PACKETS
+ metadata {
+ id: 1
+ name: "ingress_port"
+ bitwidth: 9
}
- direct_table_id: 33596222
+}
+controller_packet_metadata {
+ preamble {
+ id: 2868916615
+ name: "packet_out"
+ annotations: "@controller_header(\"packet_out\")"
+ }
+ metadata {
+ id: 1
+ name: "egress_port"
+ bitwidth: 9
+ }
}
diff --git a/tools/test/p4src/p4-14/p4c-out/wcmp.json b/tools/test/p4src/p4-14/p4c-out/wcmp.json
index 173dfe1..6313d0d 100644
--- a/tools/test/p4src/p4-14/p4c-out/wcmp.json
+++ b/tools/test/p4src/p4-14/p4c-out/wcmp.json
@@ -9,8 +9,10 @@
"name" : "scalars_0",
"id" : 0,
"fields" : [
- ["tmp", 32, false],
- ["tmp_0", 32, false]
+ ["tmp_0", 104, false],
+ ["tmp", 8, false],
+ ["tmp_1", 32, false],
+ ["tmp_2", 32, false]
]
},
{
@@ -41,9 +43,25 @@
]
},
{
- "name" : "tcp_t",
+ "name" : "packet_in_t",
"id" : 3,
"fields" : [
+ ["ingress_port", 9, false],
+ ["_padding", 7, false]
+ ]
+ },
+ {
+ "name" : "packet_out_t",
+ "id" : 4,
+ "fields" : [
+ ["egress_port", 9, false],
+ ["_padding_0", 7, false]
+ ]
+ },
+ {
+ "name" : "tcp_t",
+ "id" : 5,
+ "fields" : [
["srcPort", 16, false],
["dstPort", 16, false],
["seqNo", 32, false],
@@ -59,7 +77,7 @@
},
{
"name" : "udp_t",
- "id" : 4,
+ "id" : 6,
"fields" : [
["srcPort", 16, false],
["dstPort", 16, false],
@@ -68,18 +86,8 @@
]
},
{
- "name" : "intrinsic_metadata_t",
- "id" : 5,
- "fields" : [
- ["ingress_global_timestamp", 32, false],
- ["lf_field_list", 32, false],
- ["mcast_grp", 16, false],
- ["egress_rid", 16, false]
- ]
- },
- {
"name" : "wcmp_meta_t",
- "id" : 6,
+ "id" : 7,
"fields" : [
["groupId", 16, false],
["numBits", 8, false],
@@ -88,7 +96,7 @@
},
{
"name" : "standard_metadata",
- "id" : 7,
+ "id" : 8,
"fields" : [
["ingress_port", 9, false],
["egress_spec", 9, false],
@@ -107,7 +115,7 @@
["mcast_grp", 16, false],
["resubmit_flag", 1, false],
["egress_rid", 16, false],
- ["_padding", 5, false]
+ ["_padding_1", 5, false]
]
}
],
@@ -141,29 +149,36 @@
"pi_omit" : true
},
{
- "name" : "tcp",
+ "name" : "packet_in_hdr",
"id" : 4,
+ "header_type" : "packet_in_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "packet_out_hdr",
+ "id" : 5,
+ "header_type" : "packet_out_t",
+ "metadata" : false,
+ "pi_omit" : true
+ },
+ {
+ "name" : "tcp",
+ "id" : 6,
"header_type" : "tcp_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "udp",
- "id" : 5,
+ "id" : 7,
"header_type" : "udp_t",
"metadata" : false,
"pi_omit" : true
},
{
- "name" : "intrinsic_metadata",
- "id" : 6,
- "header_type" : "intrinsic_metadata_t",
- "metadata" : true,
- "pi_omit" : true
- },
- {
"name" : "wcmp_meta",
- "id" : 7,
+ "id" : 8,
"header_type" : "wcmp_meta_t",
"metadata" : true,
"pi_omit" : true
@@ -190,8 +205,31 @@
"init_state" : "start",
"parse_states" : [
{
- "name" : "parse_ethernet",
+ "name" : "default_parser",
"id" : 0,
+ "parser_ops" : [],
+ "transitions" : [
+ {
+ "value" : "0x00ff",
+ "mask" : null,
+ "next_state" : "parse_pkt_out"
+ },
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ }
+ ]
+ },
+ {
+ "name" : "parse_ethernet",
+ "id" : 1,
"parser_ops" : [
{
"parameters" : [
@@ -224,7 +262,7 @@
},
{
"name" : "parse_ipv4",
- "id" : 1,
+ "id" : 2,
"parser_ops" : [
{
"parameters" : [
@@ -265,8 +303,54 @@
]
},
{
+ "name" : "parse_pkt_in",
+ "id" : 3,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "packet_in_hdr"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : []
+ },
+ {
+ "name" : "parse_pkt_out",
+ "id" : 4,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "regular",
+ "value" : "packet_out_hdr"
+ }
+ ],
+ "op" : "extract"
+ }
+ ],
+ "transitions" : [
+ {
+ "value" : "default",
+ "mask" : null,
+ "next_state" : "parse_ethernet"
+ }
+ ],
+ "transition_key" : []
+ },
+ {
"name" : "parse_tcp",
- "id" : 2,
+ "id" : 5,
"parser_ops" : [
{
"parameters" : [
@@ -289,7 +373,7 @@
},
{
"name" : "parse_udp",
- "id" : 3,
+ "id" : 6,
"parser_ops" : [
{
"parameters" : [
@@ -312,16 +396,66 @@
},
{
"name" : "start",
- "id" : 4,
- "parser_ops" : [],
+ "id" : 7,
+ "parser_ops" : [
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ },
+ {
+ "type" : "lookahead",
+ "value" : [0, 104]
+ }
+ ],
+ "op" : "set"
+ },
+ {
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "field",
+ "value" : ["scalars", "tmp_0"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xff"
+ }
+ }
+ }
+ }
+ ],
+ "op" : "set"
+ }
+ ],
"transitions" : [
{
+ "value" : "0x00",
+ "mask" : null,
+ "next_state" : "parse_pkt_in"
+ },
+ {
"value" : "default",
"mask" : null,
- "next_state" : "parse_ethernet"
+ "next_state" : "default_parser"
}
],
- "transition_key" : []
+ "transition_key" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp"]
+ }
+ ]
}
]
}
@@ -330,7 +464,7 @@
{
"name" : "deparser",
"id" : 0,
- "order" : ["ethernet", "ipv4", "udp", "tcp"]
+ "order" : ["packet_out_hdr", "packet_in_hdr", "ethernet", "ipv4", "udp", "tcp"]
}
],
"meter_arrays" : [],
@@ -401,10 +535,45 @@
"learn_lists" : [],
"actions" : [
{
- "name" : "NoAction",
+ "name" : "add_packet_in_hdr",
"id" : 0,
"runtime_data" : [],
- "primitives" : []
+ "primitives" : [
+ {
+ "op" : "add_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "packet_in_hdr"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 25,
+ "column" : 4,
+ "source_fragment" : "add_header(packet_in_hdr)"
+ }
+ },
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["packet_in_hdr", "ingress_port"]
+ },
+ {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 26,
+ "column" : 4,
+ "source_fragment" : "modify_field(packet_in_hdr.ingress_port, standard_metadata.ingress_port)"
+ }
+ }
+ ]
},
{
"name" : "NoAction",
@@ -536,7 +705,7 @@
],
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 43,
+ "line" : 44,
"column" : 4,
"source_fragment" : "modify_field(wcmp_meta.selector, ..."
}
@@ -567,7 +736,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 1,
+ "line" : 5,
"column" : 23,
"source_fragment" : "port) { ..."
}
@@ -598,7 +767,7 @@
],
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 37,
+ "line" : 38,
"column" : 18,
"source_fragment" : "groupId) { ..."
}
@@ -625,7 +794,7 @@
],
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 39,
+ "line" : 40,
"column" : 4,
"source_fragment" : "modify_field_with_hash_based_offset(wcmp_meta.numBits, 2, wcmp_hash, (32 - 2))"
}
@@ -651,7 +820,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 21,
"column" : 4,
"source_fragment" : "modify_field(standard_metadata.egress_spec, 255)"
}
@@ -659,7 +828,7 @@
]
},
{
- "name" : "drop",
+ "name" : "_drop",
"id" : 8,
"runtime_data" : [],
"primitives" : [
@@ -677,7 +846,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 13,
"column" : 4,
"source_fragment" : "modify_field(standard_metadata.egress_spec, 511)"
}
@@ -708,7 +877,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 1,
+ "line" : 5,
"column" : 23,
"source_fragment" : "port) { ..."
}
@@ -716,7 +885,7 @@
]
},
{
- "name" : "count_packet",
+ "name" : "_packet_out",
"id" : 10,
"runtime_data" : [],
"primitives" : [
@@ -725,52 +894,48 @@
"parameters" : [
{
"type" : "field",
- "value" : ["scalars", "tmp"]
- },
- {
- "type" : "expression",
- "value" : {
- "type" : "expression",
- "value" : {
- "op" : "&",
- "left" : {
- "type" : "field",
- "value" : ["standard_metadata", "ingress_port"]
- },
- "right" : {
- "type" : "hexstr",
- "value" : "0xffffffff"
- }
- }
- }
- }
- ]
- },
- {
- "op" : "count",
- "parameters" : [
- {
- "type" : "counter_array",
- "value" : "ingress_port_counter"
+ "value" : ["standard_metadata", "egress_spec"]
},
{
"type" : "field",
- "value" : ["scalars", "tmp"]
+ "value" : ["packet_out_hdr", "egress_port"]
}
],
"source_info" : {
- "filename" : "include/port_counters.p4",
- "line" : 20,
+ "filename" : "include/packet_io.p4",
+ "line" : 7,
"column" : 4,
- "source_fragment" : "count(ingress_port_counter, standard_metadata.ingress_port)"
+ "source_fragment" : "modify_field(standard_metadata.egress_spec, packet_out_hdr.egress_port)"
}
},
{
+ "op" : "remove_header",
+ "parameters" : [
+ {
+ "type" : "header",
+ "value" : "packet_out_hdr"
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 8,
+ "column" : 4,
+ "source_fragment" : "remove_header(packet_out_hdr)"
+ }
+ }
+ ]
+ },
+ {
+ "name" : "count_egress",
+ "id" : 11,
+ "runtime_data" : [],
+ "primitives" : [
+ {
"op" : "assign",
"parameters" : [
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
+ "value" : ["scalars", "tmp_1"]
},
{
"type" : "expression",
@@ -800,31 +965,112 @@
},
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
+ "value" : ["scalars", "tmp_1"]
}
],
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 21,
+ "line" : 22,
"column" : 4,
"source_fragment" : "count(egress_port_counter, standard_metadata.egress_spec)"
}
}
]
+ },
+ {
+ "name" : "count_ingress",
+ "id" : 12,
+ "runtime_data" : [],
+ "primitives" : [
+ {
+ "op" : "assign",
+ "parameters" : [
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_2"]
+ },
+ {
+ "type" : "expression",
+ "value" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "&",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0xffffffff"
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "op" : "count",
+ "parameters" : [
+ {
+ "type" : "counter_array",
+ "value" : "ingress_port_counter"
+ },
+ {
+ "type" : "field",
+ "value" : ["scalars", "tmp_2"]
+ }
+ ],
+ "source_info" : {
+ "filename" : "include/port_counters.p4",
+ "line" : 18,
+ "column" : 4,
+ "source_fragment" : "count(ingress_port_counter, standard_metadata.ingress_port)"
+ }
+ }
+ ]
}
],
"pipelines" : [
{
"name" : "ingress",
"id" : 0,
- "init_table" : "table0",
+ "init_table" : "node_2",
"tables" : [
{
- "name" : "table0",
+ "name" : "ingress_pkt",
"id" : 0,
"source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 11,
+ "column" : 0,
+ "source_fragment" : "table ingress_pkt { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [10],
+ "actions" : ["_packet_out"],
+ "base_default_next" : "node_4",
+ "next_tables" : {
+ "_packet_out" : "node_4"
+ },
+ "default_entry" : {
+ "action_id" : 10,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "table0",
+ "id" : 1,
+ "source_info" : {
"filename" : "wcmp.p4",
- "line" : 47,
+ "line" : 48,
"column" : 0,
"source_fragment" : "table table0 { ..."
},
@@ -856,18 +1102,18 @@
"with_counters" : true,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [5, 6, 7, 8, 0],
- "actions" : ["set_egress_port", "wcmp_group", "send_to_cpu", "drop", "NoAction"],
- "base_default_next" : "node_5",
+ "action_ids" : [5, 6, 7, 8, 1],
+ "actions" : ["set_egress_port", "wcmp_group", "send_to_cpu", "_drop", "NoAction"],
+ "base_default_next" : "node_8",
"next_tables" : {
"wcmp_group" : "wcmp_set_selector_table",
- "set_egress_port" : "node_5",
- "send_to_cpu" : "node_5",
- "drop" : "node_5",
- "NoAction" : "node_5"
+ "set_egress_port" : "node_8",
+ "send_to_cpu" : "node_8",
+ "_drop" : "node_8",
+ "NoAction" : "node_8"
},
"default_entry" : {
- "action_id" : 0,
+ "action_id" : 1,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -875,10 +1121,10 @@
},
{
"name" : "wcmp_set_selector_table",
- "id" : 1,
+ "id" : 2,
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 63,
+ "line" : 64,
"column" : 0,
"source_fragment" : "table wcmp_set_selector_table { ..."
},
@@ -889,15 +1135,15 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [4, 2],
+ "action_ids" : [4, 3],
"actions" : ["wcmp_set_selector", "NoAction"],
- "base_default_next" : "node_5",
+ "base_default_next" : "node_8",
"next_tables" : {
"wcmp_set_selector" : "wcmp_group_table",
- "NoAction" : "node_5"
+ "NoAction" : "node_8"
},
"default_entry" : {
- "action_id" : 2,
+ "action_id" : 3,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -905,10 +1151,10 @@
},
{
"name" : "wcmp_group_table",
- "id" : 2,
+ "id" : 3,
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 69,
+ "line" : 70,
"column" : 0,
"source_fragment" : "table wcmp_group_table { ..."
},
@@ -930,28 +1176,28 @@
"with_counters" : true,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [9, 1],
+ "action_ids" : [9, 2],
"actions" : ["set_egress_port", "NoAction"],
- "base_default_next" : "node_5",
+ "base_default_next" : "node_8",
"next_tables" : {
- "set_egress_port" : "node_5",
- "NoAction" : "node_5"
+ "set_egress_port" : "node_8",
+ "NoAction" : "node_8"
},
"default_entry" : {
- "action_id" : 1,
+ "action_id" : 2,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
}
},
{
- "name" : "port_count_table",
- "id" : 3,
+ "name" : "ingress_port_count_table",
+ "id" : 4,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 13,
+ "line" : 25,
"column" : 0,
- "source_fragment" : "table port_count_table { ..."
+ "source_fragment" : "table ingress_port_count_table { ..."
},
"key" : [],
"match_type" : "exact",
@@ -960,15 +1206,43 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [10, 3],
- "actions" : ["count_packet", "NoAction"],
- "base_default_next" : null,
+ "action_ids" : [12],
+ "actions" : ["count_ingress"],
+ "base_default_next" : "egress_port_count_table",
"next_tables" : {
- "count_packet" : null,
- "NoAction" : null
+ "count_ingress" : "egress_port_count_table"
},
"default_entry" : {
- "action_id" : 3,
+ "action_id" : 12,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ },
+ {
+ "name" : "egress_port_count_table",
+ "id" : 5,
+ "source_info" : {
+ "filename" : "include/port_counters.p4",
+ "line" : 30,
+ "column" : 0,
+ "source_fragment" : "table egress_port_count_table { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [11],
+ "actions" : ["count_egress"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "count_egress" : null
+ },
+ "default_entry" : {
+ "action_id" : 11,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -978,12 +1252,64 @@
"action_profiles" : [],
"conditionals" : [
{
- "name" : "node_5",
+ "name" : "node_2",
"id" : 0,
"source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 19,
+ "column" : 8,
+ "source_fragment" : "valid(packet_out_hdr)"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["packet_out_hdr", "$valid$"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "ingress_pkt",
+ "false_next" : "node_4"
+ },
+ {
+ "name" : "node_4",
+ "id" : 1,
+ "source_info" : {
+ "filename" : "wcmp.p4",
+ "line" : 94,
+ "column" : 12,
+ "source_fragment" : "valid(packet_out_hdr)"
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "!=",
+ "left" : {
+ "type" : "field",
+ "value" : ["packet_out_hdr", "$valid$"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x01"
+ }
+ }
+ },
+ "true_next" : "table0",
+ "false_next" : "node_8"
+ },
+ {
+ "name" : "node_8",
+ "id" : 2,
+ "source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 26,
- "column" : 35,
+ "line" : 36,
+ "column" : 38,
"source_fragment" : "<"
},
"expression" : {
@@ -1001,17 +1327,74 @@
}
},
"false_next" : null,
- "true_next" : "port_count_table"
+ "true_next" : "ingress_port_count_table"
}
]
},
{
"name" : "egress",
"id" : 1,
- "init_table" : null,
- "tables" : [],
+ "init_table" : "node_13",
+ "tables" : [
+ {
+ "name" : "egress_pkt",
+ "id" : 6,
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 29,
+ "column" : 0,
+ "source_fragment" : "table egress_pkt { ..."
+ },
+ "key" : [],
+ "match_type" : "exact",
+ "type" : "simple",
+ "max_size" : 1024,
+ "with_counters" : false,
+ "support_timeout" : false,
+ "direct_meters" : null,
+ "action_ids" : [0],
+ "actions" : ["add_packet_in_hdr"],
+ "base_default_next" : null,
+ "next_tables" : {
+ "add_packet_in_hdr" : null
+ },
+ "default_entry" : {
+ "action_id" : 0,
+ "action_const" : false,
+ "action_data" : [],
+ "action_entry_const" : false
+ }
+ }
+ ],
"action_profiles" : [],
- "conditionals" : []
+ "conditionals" : [
+ {
+ "name" : "node_13",
+ "id" : 3,
+ "source_info" : {
+ "filename" : "include/packet_io.p4",
+ "line" : 40,
+ "column" : 39,
+ "source_fragment" : "=="
+ },
+ "expression" : {
+ "type" : "expression",
+ "value" : {
+ "op" : "==",
+ "left" : {
+ "type" : "field",
+ "value" : ["standard_metadata", "ingress_port"]
+ },
+ "right" : {
+ "type" : "hexstr",
+ "value" : "0x00ff"
+ }
+ }
+ },
+ "false_next" : null,
+ "true_next" : "egress_pkt"
+ }
+ ]
}
],
"checksums" : [],
diff --git a/tools/test/p4src/p4-14/p4c-out/wcmp.p4info b/tools/test/p4src/p4-14/p4c-out/wcmp.p4info
new file mode 100644
index 0000000..8024064
--- /dev/null
+++ b/tools/test/p4src/p4-14/p4c-out/wcmp.p4info
@@ -0,0 +1,288 @@
+tables {
+ preamble {
+ id: 33617813
+ name: "table0"
+ alias: "table0"
+ }
+ match_fields {
+ id: 1
+ name: "standard_metadata.ingress_port"
+ bitwidth: 9
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 2
+ name: "ethernet.dstAddr"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 3
+ name: "ethernet.srcAddr"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 4
+ name: "ethernet.etherType"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16794308
+ }
+ action_refs {
+ id: 16791212
+ }
+ action_refs {
+ id: 16829080
+ }
+ action_refs {
+ id: 16784184
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 301990488
+ size: 1024
+ with_entry_timeout: true
+}
+tables {
+ preamble {
+ id: 33596222
+ name: "wcmp_group_table"
+ alias: "wcmp_group_table"
+ }
+ match_fields {
+ id: 1
+ name: "wcmp_meta.groupId"
+ bitwidth: 16
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "wcmp_meta.selector"
+ bitwidth: 32
+ match_type: LPM
+ }
+ action_refs {
+ id: 16794308
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ direct_resource_ids: 302006421
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33613026
+ name: "wcmp_set_selector_table"
+ alias: "wcmp_set_selector_table"
+ }
+ action_refs {
+ id: 16819919
+ }
+ action_refs {
+ id: 16800567
+ annotations: "@defaultonly()"
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33560548
+ name: "ingress_pkt"
+ alias: "ingress_pkt"
+ }
+ action_refs {
+ id: 16835928
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33618793
+ name: "egress_port_count_table"
+ alias: "egress_port_count_table"
+ }
+ action_refs {
+ id: 16822771
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33579767
+ name: "ingress_port_count_table"
+ alias: "ingress_port_count_table"
+ }
+ action_refs {
+ id: 16837943
+ }
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33608529
+ name: "egress_pkt"
+ alias: "egress_pkt"
+ }
+ action_refs {
+ id: 16835663
+ }
+ size: 1024
+}
+actions {
+ preamble {
+ id: 16800567
+ name: "NoAction"
+ alias: "NoAction"
+ }
+}
+actions {
+ preamble {
+ id: 16819919
+ name: "wcmp_set_selector"
+ alias: "wcmp_set_selector"
+ }
+}
+actions {
+ preamble {
+ id: 16794308
+ name: "set_egress_port"
+ alias: "set_egress_port"
+ }
+ params {
+ id: 1
+ name: "port"
+ bitwidth: 9
+ }
+}
+actions {
+ preamble {
+ id: 16791212
+ name: "wcmp_group"
+ alias: "wcmp_group"
+ }
+ params {
+ id: 1
+ name: "groupId"
+ bitwidth: 16
+ }
+}
+actions {
+ preamble {
+ id: 16829080
+ name: "send_to_cpu"
+ alias: "send_to_cpu"
+ }
+}
+actions {
+ preamble {
+ id: 16784184
+ name: "_drop"
+ alias: "_drop"
+ }
+}
+actions {
+ preamble {
+ id: 16835928
+ name: "_packet_out"
+ alias: "_packet_out"
+ }
+}
+actions {
+ preamble {
+ id: 16822771
+ name: "count_egress"
+ alias: "count_egress"
+ }
+}
+actions {
+ preamble {
+ id: 16837943
+ name: "count_ingress"
+ alias: "count_ingress"
+ }
+}
+actions {
+ preamble {
+ id: 16835663
+ name: "add_packet_in_hdr"
+ alias: "add_packet_in_hdr"
+ }
+}
+counters {
+ preamble {
+ id: 302008596
+ name: "egress_port_counter"
+ alias: "egress_port_counter"
+ annotations: "@min_width(32)"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 254
+}
+counters {
+ preamble {
+ id: 301991238
+ name: "ingress_port_counter"
+ alias: "ingress_port_counter"
+ annotations: "@min_width(32)"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 254
+}
+direct_counters {
+ preamble {
+ id: 301990488
+ name: "table0_counter"
+ alias: "table0_counter"
+ }
+ spec {
+ unit: PACKETS
+ }
+ direct_table_id: 33617813
+}
+direct_counters {
+ preamble {
+ id: 302006421
+ name: "wcmp_group_table_counter"
+ alias: "wcmp_group_table_counter"
+ }
+ spec {
+ unit: PACKETS
+ }
+ direct_table_id: 33596222
+}
+# Manually adding controller_packet_metadata for packet I/O since P4_14 doesn't support annotations.
+controller_packet_metadata {
+ preamble {
+ id: 2868941301
+ name: "packet_in"
+ annotations: "@controller_header(\"packet_in\")"
+ }
+ metadata {
+ id: 1
+ name: "ingress_port"
+ bitwidth: 9
+ }
+}
+controller_packet_metadata {
+ preamble {
+ id: 2868916615
+ name: "packet_out"
+ annotations: "@controller_header(\"packet_out\")"
+ }
+ metadata {
+ id: 1
+ name: "egress_port"
+ bitwidth: 9
+ }
+}
diff --git a/tools/test/p4src/p4-14/wcmp.p4 b/tools/test/p4src/p4-14/wcmp.p4
index d24183f..a388be7 100644
--- a/tools/test/p4src/p4-14/wcmp.p4
+++ b/tools/test/p4src/p4-14/wcmp.p4
@@ -3,6 +3,7 @@
#include "include/parser.p4"
#include "include/actions.p4"
#include "include/port_counters.p4"
+#include "include/packet_io.p4"
#define SELECTOR_WIDTH 32
@@ -46,16 +47,16 @@
table table0 {
reads {
- standard_metadata.ingress_port : ternary;
- ethernet.dstAddr : ternary;
- ethernet.srcAddr : ternary;
+ IGR_PORT_FIELD : ternary;
+ ethernet.dstAddr : ternary;
+ ethernet.srcAddr : ternary;
ethernet.etherType : ternary;
}
actions {
set_egress_port;
wcmp_group;
send_to_cpu;
- drop;
+ _drop;
}
support_timeout: true;
}
@@ -89,14 +90,21 @@
}
control ingress {
- apply(table0) {
- wcmp_group {
- apply(wcmp_set_selector_table) {
- wcmp_set_selector {
- apply(wcmp_group_table);
+ ingress_pkt_io();
+ if (not valid(packet_out_hdr)) {
+ apply(table0) {
+ wcmp_group {
+ apply(wcmp_set_selector_table) {
+ wcmp_set_selector {
+ apply(wcmp_group_table);
+ }
}
}
}
}
process_port_counters();
-}
\ No newline at end of file
+}
+
+control egress {
+ egress_pkt_io();
+}
diff --git a/tools/test/p4src/p4-16/default.p4 b/tools/test/p4src/p4-16/default.p4
index ac4dd46..93683a5 100644
--- a/tools/test/p4src/p4-16/default.p4
+++ b/tools/test/p4src/p4-16/default.p4
@@ -58,10 +58,10 @@
set_egress_port(standard_metadata);
send_to_cpu(standard_metadata);
do_ecmp();
- drop(standard_metadata);
+ _drop(standard_metadata);
}
counters = table0_counter;
- default_action = drop(standard_metadata);
+ default_action = _drop(standard_metadata);
}
action_selector(HashAlgorithm.crc16, 32w64, 32w16) ecmp_selector;
diff --git a/tools/test/p4src/p4-16/ecmp.p4 b/tools/test/p4src/p4-16/ecmp.p4
index 7e2010d..7146cd2 100644
--- a/tools/test/p4src/p4-16/ecmp.p4
+++ b/tools/test/p4src/p4-16/ecmp.p4
@@ -20,7 +20,13 @@
#include "include/headers.p4"
typedef bit<16> group_id_t;
-typedef bit<8> group_size_t;
+
+/*
+ Expected number of ports of an ECMP group.
+ This value is fixed, .i.e. we do not support ECMP over port groups of different size.
+ Due to hardware limitations, this value must be constant and a power of 2.
+*/
+#define ECMP_GROUP_SIZE 128w2
struct ecmp_metadata_t {
group_id_t group_id;
@@ -44,12 +50,11 @@
direct_counter(CounterType.packets) ecmp_group_table_counter;
direct_counter(CounterType.packets) table0_counter;
- action ecmp_group(group_id_t group_id, group_size_t groupSize) {
+ action ecmp_group(group_id_t group_id) {
meta.ecmp_metadata.group_id = group_id;
- hash(meta.ecmp_metadata.selector, HashAlgorithm.crc16, (bit<64>)0,
+ hash(meta.ecmp_metadata.selector, HashAlgorithm.crc32, (bit<64>)0,
{ hdr.ipv4.srcAddr, hdr.ipv4.dstAddr, hdr.ipv4.protocol, hdr.tcp.srcPort, hdr.tcp.dstPort, hdr.udp.srcPort,
- hdr.udp.dstPort },
- (bit<128>)groupSize);
+ hdr.udp.dstPort }, ECMP_GROUP_SIZE);
}
table ecmp_group_table {
@@ -69,7 +74,7 @@
ecmp_group;
set_egress_port(standard_metadata);
send_to_cpu(standard_metadata);
- drop(standard_metadata);
+ _drop(standard_metadata);
}
key = {
standard_metadata.ingress_port: ternary;
@@ -78,6 +83,7 @@
hdr.ethernet.etherType : ternary;
}
counters = table0_counter;
+ default_action = _drop(standard_metadata);
}
PortCountersControl() port_counters_control;
diff --git a/tools/test/p4src/p4-16/include/actions.p4 b/tools/test/p4src/p4-16/include/actions.p4
index c9f2dec..0b87ef3 100644
--- a/tools/test/p4src/p4-16/include/actions.p4
+++ b/tools/test/p4src/p4-16/include/actions.p4
@@ -27,7 +27,7 @@
standard_metadata.egress_spec = port;
}
-action drop(inout standard_metadata_t standard_metadata) {
+action _drop(inout standard_metadata_t standard_metadata) {
standard_metadata.egress_spec = DROP_PORT;
}
diff --git a/tools/test/p4src/p4-16/p4c-out/default.json b/tools/test/p4src/p4-16/p4c-out/default.json
index e985a78..62e397a 100644
--- a/tools/test/p4src/p4-16/p4c-out/default.json
+++ b/tools/test/p4src/p4-16/p4c-out/default.json
@@ -2494,7 +2494,7 @@
]
},
{
- "name" : "drop",
+ "name" : "_drop",
"id" : 3,
"runtime_data" : [],
"primitives" : [
@@ -2513,7 +2513,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2532,7 +2532,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2551,7 +2551,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2570,7 +2570,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2589,7 +2589,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2608,7 +2608,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2627,7 +2627,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2646,7 +2646,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2665,7 +2665,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2684,7 +2684,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2703,7 +2703,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2722,7 +2722,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2741,7 +2741,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2760,7 +2760,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2779,7 +2779,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2798,7 +2798,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2817,7 +2817,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2855,7 +2855,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2874,7 +2874,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2893,7 +2893,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2912,7 +2912,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2931,7 +2931,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2950,7 +2950,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2969,7 +2969,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2988,7 +2988,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3007,7 +3007,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3026,7 +3026,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3045,7 +3045,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3064,7 +3064,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3083,7 +3083,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3102,7 +3102,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3121,7 +3121,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3140,7 +3140,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3159,7 +3159,7 @@
"source_info" : {
"filename" : "include/actions.p4",
"line" : 30,
- "column" : 38,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
}
@@ -3461,13 +3461,13 @@
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [0, 2, 5, 3],
- "actions" : ["set_egress_port", "send_to_cpu", "do_ecmp", "drop"],
+ "actions" : ["set_egress_port", "send_to_cpu", "do_ecmp", "_drop"],
"base_default_next" : "node_7",
"next_tables" : {
"do_ecmp" : "ecmp",
"set_egress_port" : "node_7",
"send_to_cpu" : "node_7",
- "drop" : "node_7"
+ "_drop" : "node_7"
},
"default_entry" : {
"action_id" : 3,
diff --git a/tools/test/p4src/p4-16/p4c-out/default.p4info b/tools/test/p4src/p4-16/p4c-out/default.p4info
index 55a9d2e..6bf4a27 100644
--- a/tools/test/p4src/p4-16/p4c-out/default.p4info
+++ b/tools/test/p4src/p4-16/p4c-out/default.p4info
@@ -38,7 +38,7 @@
id: 16824896
}
action_refs {
- id: 16793508
+ id: 16784184
}
direct_resource_ids: 301990488
size: 1024
@@ -87,9 +87,9 @@
}
actions {
preamble {
- id: 16793508
- name: "drop"
- alias: "drop"
+ id: 16784184
+ name: "_drop"
+ alias: "_drop"
}
}
actions {
diff --git a/tools/test/p4src/p4-16/p4c-out/ecmp.json b/tools/test/p4src/p4-16/p4c-out/ecmp.json
index c416184..506db53 100644
--- a/tools/test/p4src/p4-16/p4c-out/ecmp.json
+++ b/tools/test/p4src/p4-16/p4c-out/ecmp.json
@@ -9,9 +9,8 @@
"name" : "scalars_0",
"id" : 0,
"fields" : [
- ["tmp", 128, false],
- ["tmp_0", 32, false],
- ["tmp_1", 32, false]
+ ["tmp", 32, false],
+ ["tmp_0", 32, false]
]
},
{
@@ -419,7 +418,7 @@
"id" : 0,
"source_info" : {
"filename" : "include/parsers.p4",
- "line" : 48,
+ "line" : 64,
"column" : 8,
"source_fragment" : "DeparserImpl"
},
@@ -445,7 +444,7 @@
"id" : 2,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 6,
+ "line" : 22,
"column" : 38,
"source_fragment" : "egress_port_counter"
},
@@ -457,7 +456,7 @@
"id" : 3,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 7,
+ "line" : 23,
"column" : 38,
"source_fragment" : "ingress_port_counter"
},
@@ -470,7 +469,7 @@
{
"name" : "calc",
"id" : 0,
- "algo" : "crc16",
+ "algo" : "crc32",
"input" : [
{
"type" : "field",
@@ -529,7 +528,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -548,7 +547,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -567,7 +566,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -586,7 +585,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -605,7 +604,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -624,7 +623,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -643,7 +642,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -662,7 +661,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -681,7 +680,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -700,7 +699,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -719,7 +718,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -738,7 +737,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -757,7 +756,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -776,7 +775,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -795,7 +794,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -814,7 +813,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -833,7 +832,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -852,7 +851,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 11,
+ "line" : 27,
"column" : 4,
"source_fragment" : "standard_metadata.egress_spec = port"
}
@@ -871,7 +870,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -890,7 +889,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -909,7 +908,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -928,7 +927,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -947,7 +946,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -966,7 +965,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -985,7 +984,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1004,7 +1003,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1023,7 +1022,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1042,7 +1041,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1061,7 +1060,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1080,7 +1079,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1099,7 +1098,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1118,7 +1117,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1137,7 +1136,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1156,7 +1155,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1175,7 +1174,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1206,7 +1205,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1225,7 +1224,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1244,7 +1243,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1263,7 +1262,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1282,7 +1281,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1301,7 +1300,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1320,7 +1319,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1339,7 +1338,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1358,7 +1357,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1377,7 +1376,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1396,7 +1395,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1415,7 +1414,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1434,7 +1433,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1453,7 +1452,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1472,7 +1471,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1491,7 +1490,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1510,7 +1509,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1529,7 +1528,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 11,
+ "line" : 27,
"column" : 4,
"source_fragment" : "standard_metadata.egress_spec = port"
}
@@ -1548,7 +1547,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1567,7 +1566,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1586,7 +1585,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1605,7 +1604,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1624,7 +1623,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1643,7 +1642,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1662,7 +1661,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1681,7 +1680,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1700,7 +1699,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1719,7 +1718,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1738,7 +1737,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1757,7 +1756,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1776,7 +1775,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1795,7 +1794,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1814,7 +1813,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1833,7 +1832,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1852,7 +1851,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1866,14 +1865,8 @@
"primitives" : []
},
{
- "name" : "NoAction",
- "id" : 3,
- "runtime_data" : [],
- "primitives" : []
- },
- {
"name" : "send_to_cpu",
- "id" : 4,
+ "id" : 3,
"runtime_data" : [],
"primitives" : [
{
@@ -1890,7 +1883,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1909,7 +1902,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1928,7 +1921,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1947,7 +1940,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1966,7 +1959,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1985,7 +1978,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2004,7 +1997,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2023,7 +2016,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2042,7 +2035,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2061,7 +2054,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2080,7 +2073,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2099,7 +2092,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2118,7 +2111,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2137,7 +2130,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2156,7 +2149,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2175,7 +2168,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2194,7 +2187,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2213,7 +2206,7 @@
],
"source_info" : {
"filename" : "include/defines.p4",
- "line" : 12,
+ "line" : 29,
"column" : 24,
"source_fragment" : "255; ..."
}
@@ -2232,7 +2225,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2251,7 +2244,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2270,7 +2263,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2289,7 +2282,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2308,7 +2301,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2327,7 +2320,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2346,7 +2339,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2365,7 +2358,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2384,7 +2377,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2403,7 +2396,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2422,7 +2415,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2441,7 +2434,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2460,7 +2453,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2479,7 +2472,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2498,7 +2491,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2517,7 +2510,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2536,7 +2529,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2544,8 +2537,8 @@
]
},
{
- "name" : "drop",
- "id" : 5,
+ "name" : "_drop",
+ "id" : 4,
"runtime_data" : [],
"primitives" : [
{
@@ -2562,8 +2555,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2581,8 +2574,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2600,8 +2593,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2619,8 +2612,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2638,8 +2631,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2657,8 +2650,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2676,8 +2669,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2695,8 +2688,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2714,8 +2707,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2733,8 +2726,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2752,8 +2745,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2771,8 +2764,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2790,8 +2783,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2809,8 +2802,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2828,8 +2821,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2847,8 +2840,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2866,8 +2859,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2885,7 +2878,7 @@
],
"source_info" : {
"filename" : "include/defines.p4",
- "line" : 13,
+ "line" : 30,
"column" : 25,
"source_fragment" : "511; ..."
}
@@ -2904,8 +2897,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2923,8 +2916,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2942,8 +2935,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2961,8 +2954,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2980,8 +2973,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2999,8 +2992,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3018,8 +3011,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3037,8 +3030,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3056,8 +3049,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3075,8 +3068,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3094,8 +3087,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3113,8 +3106,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3132,8 +3125,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3151,8 +3144,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3170,8 +3163,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3189,8 +3182,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3208,8 +3201,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
}
@@ -3217,15 +3210,11 @@
},
{
"name" : "ecmp_group",
- "id" : 6,
+ "id" : 5,
"runtime_data" : [
{
"name" : "group_id",
"bitwidth" : 16
- },
- {
- "name" : "groupSize",
- "bitwidth" : 8
}
],
"primitives" : [
@@ -3243,38 +3232,12 @@
],
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 32,
+ "line" : 54,
"column" : 8,
"source_fragment" : "meta.ecmp_metadata.group_id = group_id"
}
},
{
- "op" : "assign",
- "parameters" : [
- {
- "type" : "field",
- "value" : ["scalars", "tmp"]
- },
- {
- "type" : "expression",
- "value" : {
- "type" : "expression",
- "value" : {
- "op" : "&",
- "left" : {
- "type" : "local",
- "value" : 1
- },
- "right" : {
- "type" : "hexstr",
- "value" : "0xffffffffffffffffffffffffffffffff"
- }
- }
- }
- }
- ]
- },
- {
"op" : "modify_field_with_hash_based_offset",
"parameters" : [
{
@@ -3290,22 +3253,22 @@
"value" : "calc"
},
{
- "type" : "field",
- "value" : ["scalars", "tmp"]
+ "type" : "hexstr",
+ "value" : "0x00000000000000000000000000000002"
}
],
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 33,
+ "line" : 55,
"column" : 8,
- "source_fragment" : "hash(meta.ecmp_metadata.selector, HashAlgorithm.crc16, (bit<64>)0, ..."
+ "source_fragment" : "hash(meta.ecmp_metadata.selector, HashAlgorithm.crc32, (bit<64>)0, ..."
}
}
]
},
{
"name" : "act",
- "id" : 7,
+ "id" : 6,
"runtime_data" : [],
"primitives" : [
{
@@ -3331,7 +3294,7 @@
},
{
"name" : "act_0",
- "id" : 8,
+ "id" : 7,
"runtime_data" : [],
"primitives" : [
{
@@ -3339,7 +3302,7 @@
"parameters" : [
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
+ "value" : ["scalars", "tmp"]
},
{
"type" : "expression",
@@ -3369,12 +3332,12 @@
},
{
"type" : "field",
- "value" : ["scalars", "tmp_0"]
+ "value" : ["scalars", "tmp"]
}
],
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 11,
+ "line" : 27,
"column" : 12,
"source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
}
@@ -3384,7 +3347,7 @@
"parameters" : [
{
"type" : "field",
- "value" : ["scalars", "tmp_1"]
+ "value" : ["scalars", "tmp_0"]
},
{
"type" : "expression",
@@ -3414,12 +3377,12 @@
},
{
"type" : "field",
- "value" : ["scalars", "tmp_1"]
+ "value" : ["scalars", "tmp_0"]
}
],
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 12,
+ "line" : 28,
"column" : 12,
"source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
}
@@ -3428,7 +3391,7 @@
},
{
"name" : "act_1",
- "id" : 9,
+ "id" : 8,
"runtime_data" : [],
"primitives" : [
{
@@ -3469,7 +3432,7 @@
},
{
"name" : "act_2",
- "id" : 10,
+ "id" : 9,
"runtime_data" : [],
"primitives" : [
{
@@ -3496,7 +3459,7 @@
"id" : 0,
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 26,
+ "line" : 48,
"column" : 8,
"source_fragment" : "ingress"
},
@@ -3512,14 +3475,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [7],
+ "action_ids" : [6],
"actions" : ["act"],
"base_default_next" : "node_4",
"next_tables" : {
"act" : "node_4"
},
"default_entry" : {
- "action_id" : 7,
+ "action_id" : 6,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
@@ -3530,7 +3493,7 @@
"id" : 1,
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 50,
+ "line" : 71,
"column" : 10,
"source_fragment" : "table0"
},
@@ -3561,18 +3524,17 @@
"max_size" : 1024,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [6, 1, 4, 5, 3],
- "actions" : ["ecmp_group", "set_egress_port", "send_to_cpu", "drop", "NoAction"],
+ "action_ids" : [5, 1, 3, 4],
+ "actions" : ["ecmp_group", "set_egress_port", "send_to_cpu", "_drop"],
"base_default_next" : "node_7",
"next_tables" : {
"ecmp_group" : "ecmp_group_table",
"set_egress_port" : "node_7",
"send_to_cpu" : "node_7",
- "drop" : "node_7",
- "NoAction" : "node_7"
+ "_drop" : "node_7"
},
"default_entry" : {
- "action_id" : 3,
+ "action_id" : 4,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -3583,7 +3545,7 @@
"id" : 2,
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 39,
+ "line" : 60,
"column" : 10,
"source_fragment" : "ecmp_group_table"
},
@@ -3628,14 +3590,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [8],
+ "action_ids" : [7],
"actions" : ["act_0"],
"base_default_next" : null,
"next_tables" : {
"act_0" : null
},
"default_entry" : {
- "action_id" : 8,
+ "action_id" : 7,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
@@ -3675,7 +3637,7 @@
"id" : 1,
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 72,
+ "line" : 94,
"column" : 13,
"source_fragment" : "hdr.packet_out.isValid()"
},
@@ -3701,7 +3663,7 @@
"id" : 2,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 10,
+ "line" : 26,
"column" : 12,
"source_fragment" : "standard_metadata.egress_spec < 254"
},
@@ -3729,7 +3691,7 @@
"id" : 1,
"source_info" : {
"filename" : "ecmp.p4",
- "line" : 83,
+ "line" : 105,
"column" : 8,
"source_fragment" : "egress"
},
@@ -3745,14 +3707,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [10],
+ "action_ids" : [9],
"actions" : ["act_2"],
"base_default_next" : "node_12",
"next_tables" : {
"act_2" : "node_12"
},
"default_entry" : {
- "action_id" : 10,
+ "action_id" : 9,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
@@ -3768,14 +3730,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [9],
+ "action_ids" : [8],
"actions" : ["act_1"],
"base_default_next" : null,
"next_tables" : {
"act_1" : null
},
"default_entry" : {
- "action_id" : 9,
+ "action_id" : 8,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
diff --git a/tools/test/p4src/p4-16/p4c-out/ecmp.p4info b/tools/test/p4src/p4-16/p4c-out/ecmp.p4info
index bfa727d..29fd5c0 100644
--- a/tools/test/p4src/p4-16/p4c-out/ecmp.p4info
+++ b/tools/test/p4src/p4-16/p4c-out/ecmp.p4info
@@ -66,11 +66,7 @@
id: 16829080
}
action_refs {
- id: 16793508
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
+ id: 16784184
}
direct_resource_ids: 301990488
size: 1024
@@ -104,9 +100,9 @@
}
actions {
preamble {
- id: 16793508
- name: "drop"
- alias: "drop"
+ id: 16784184
+ name: "_drop"
+ alias: "_drop"
}
}
actions {
@@ -120,11 +116,6 @@
name: "group_id"
bitwidth: 16
}
- params {
- id: 2
- name: "groupSize"
- bitwidth: 8
- }
}
counters {
preamble {
diff --git a/tools/test/p4src/p4-16/p4c-out/empty.json b/tools/test/p4src/p4-16/p4c-out/empty.json
index d308780..8da30fa 100644
--- a/tools/test/p4src/p4-16/p4c-out/empty.json
+++ b/tools/test/p4src/p4-16/p4c-out/empty.json
@@ -107,7 +107,7 @@
"id" : 0,
"source_info" : {
"filename" : "empty.p4",
- "line" : 44,
+ "line" : 60,
"column" : 8,
"source_fragment" : "DeparserImpl"
},
@@ -145,7 +145,7 @@
],
"source_info" : {
"filename" : "empty.p4",
- "line" : 23,
+ "line" : 39,
"column" : 8,
"source_fragment" : "meta.dummy_metadata.dummyField = 8w1"
}
@@ -159,7 +159,7 @@
"id" : 0,
"source_info" : {
"filename" : "empty.p4",
- "line" : 21,
+ "line" : 37,
"column" : 8,
"source_fragment" : "ingress"
},
@@ -170,7 +170,7 @@
"id" : 0,
"source_info" : {
"filename" : "empty.p4",
- "line" : 25,
+ "line" : 41,
"column" : 10,
"source_fragment" : "table0"
},
@@ -210,7 +210,7 @@
"id" : 1,
"source_info" : {
"filename" : "empty.p4",
- "line" : 38,
+ "line" : 54,
"column" : 8,
"source_fragment" : "egress"
},
diff --git a/tools/test/p4src/p4-16/p4c-out/wcmp.json b/tools/test/p4src/p4-16/p4c-out/wcmp.json
index 6e57c49..dc50c96 100644
--- a/tools/test/p4src/p4-16/p4c-out/wcmp.json
+++ b/tools/test/p4src/p4-16/p4c-out/wcmp.json
@@ -393,7 +393,7 @@
"parser_ops" : [],
"transitions" : [
{
- "value" : "0x00ff",
+ "value" : "0xff",
"mask" : null,
"next_state" : "parse_packet_out"
},
@@ -419,7 +419,7 @@
"id" : 0,
"source_info" : {
"filename" : "include/parsers.p4",
- "line" : 48,
+ "line" : 64,
"column" : 8,
"source_fragment" : "DeparserImpl"
},
@@ -445,7 +445,7 @@
"id" : 2,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 6,
+ "line" : 22,
"column" : 38,
"source_fragment" : "egress_port_counter"
},
@@ -457,7 +457,7 @@
"id" : 3,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 7,
+ "line" : 23,
"column" : 38,
"source_fragment" : "ingress_port_counter"
},
@@ -529,7 +529,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -548,7 +548,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -567,7 +567,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -586,7 +586,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -605,7 +605,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -624,7 +624,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -643,7 +643,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -662,7 +662,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -681,7 +681,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -700,7 +700,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -719,7 +719,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -738,7 +738,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -757,7 +757,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -776,7 +776,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -795,7 +795,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -814,7 +814,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -833,7 +833,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -852,7 +852,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 11,
+ "line" : 27,
"column" : 4,
"source_fragment" : "standard_metadata.egress_spec = port"
}
@@ -871,7 +871,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -890,7 +890,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -909,7 +909,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -928,7 +928,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -947,7 +947,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -966,7 +966,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -985,7 +985,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1004,7 +1004,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1023,7 +1023,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1042,7 +1042,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1061,7 +1061,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1080,7 +1080,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1099,7 +1099,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1118,7 +1118,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1137,7 +1137,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1156,7 +1156,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1175,7 +1175,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1206,7 +1206,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1225,7 +1225,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1244,7 +1244,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1263,7 +1263,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1282,7 +1282,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1301,7 +1301,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1320,7 +1320,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1339,7 +1339,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1358,7 +1358,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1377,7 +1377,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1396,7 +1396,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1415,7 +1415,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1434,7 +1434,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1453,7 +1453,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1472,7 +1472,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1491,7 +1491,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1510,7 +1510,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1529,7 +1529,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 11,
+ "line" : 27,
"column" : 4,
"source_fragment" : "standard_metadata.egress_spec = port"
}
@@ -1548,7 +1548,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1567,7 +1567,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1586,7 +1586,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1605,7 +1605,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1624,7 +1624,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1643,7 +1643,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1662,7 +1662,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1681,7 +1681,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1700,7 +1700,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1719,7 +1719,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1738,7 +1738,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1757,7 +1757,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1776,7 +1776,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1795,7 +1795,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1814,7 +1814,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1833,7 +1833,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1852,7 +1852,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 10,
+ "line" : 26,
"column" : 49,
"source_fragment" : "standard_metadata, port_t port) { ..."
}
@@ -1878,7 +1878,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1897,7 +1897,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1916,7 +1916,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1935,7 +1935,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1954,7 +1954,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1973,7 +1973,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -1992,7 +1992,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2011,7 +2011,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2030,7 +2030,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2049,7 +2049,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2068,7 +2068,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2087,7 +2087,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2106,7 +2106,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2125,7 +2125,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2144,7 +2144,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2163,7 +2163,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2182,7 +2182,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2201,7 +2201,7 @@
],
"source_info" : {
"filename" : "include/defines.p4",
- "line" : 12,
+ "line" : 29,
"column" : 24,
"source_fragment" : "255; ..."
}
@@ -2220,7 +2220,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2239,7 +2239,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2258,7 +2258,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2277,7 +2277,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2296,7 +2296,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2315,7 +2315,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2334,7 +2334,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2353,7 +2353,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2372,7 +2372,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2391,7 +2391,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2410,7 +2410,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2429,7 +2429,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2448,7 +2448,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2467,7 +2467,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2486,7 +2486,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2505,7 +2505,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2524,7 +2524,7 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 6,
+ "line" : 22,
"column" : 45,
"source_fragment" : "standard_metadata) { ..."
}
@@ -2532,7 +2532,7 @@
]
},
{
- "name" : "drop",
+ "name" : "_drop",
"id" : 3,
"runtime_data" : [],
"primitives" : [
@@ -2550,8 +2550,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2569,8 +2569,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2588,8 +2588,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2607,8 +2607,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2626,8 +2626,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2645,8 +2645,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2664,8 +2664,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2683,8 +2683,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2702,8 +2702,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2721,8 +2721,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2740,8 +2740,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2759,8 +2759,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2778,8 +2778,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2797,8 +2797,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2816,8 +2816,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2835,8 +2835,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2854,8 +2854,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2873,7 +2873,7 @@
],
"source_info" : {
"filename" : "include/defines.p4",
- "line" : 13,
+ "line" : 30,
"column" : 25,
"source_fragment" : "511; ..."
}
@@ -2892,8 +2892,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2911,8 +2911,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2930,8 +2930,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2949,8 +2949,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2968,8 +2968,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -2987,8 +2987,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3006,8 +3006,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3025,8 +3025,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3044,8 +3044,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3063,8 +3063,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3082,8 +3082,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3101,8 +3101,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3120,8 +3120,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3139,8 +3139,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3158,8 +3158,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3177,8 +3177,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
},
@@ -3196,8 +3196,8 @@
],
"source_info" : {
"filename" : "include/actions.p4",
- "line" : 14,
- "column" : 38,
+ "line" : 30,
+ "column" : 39,
"source_fragment" : "standard_metadata) { ..."
}
}
@@ -3210,14 +3210,8 @@
"primitives" : []
},
{
- "name" : "NoAction",
- "id" : 5,
- "runtime_data" : [],
- "primitives" : []
- },
- {
"name" : "wcmp_group",
- "id" : 6,
+ "id" : 5,
"runtime_data" : [
{
"name" : "group_id",
@@ -3239,7 +3233,7 @@
],
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 34,
+ "line" : 50,
"column" : 8,
"source_fragment" : "meta.wcmp_metadata.group_id = group_id"
}
@@ -3266,7 +3260,7 @@
],
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 35,
+ "line" : 51,
"column" : 8,
"source_fragment" : "hash(meta.wcmp_metadata.numBits, HashAlgorithm.crc16, (bit<64>)2, ..."
}
@@ -3275,7 +3269,7 @@
},
{
"name" : "wcmp_set_selector",
- "id" : 7,
+ "id" : 6,
"runtime_data" : [],
"primitives" : [
{
@@ -3375,7 +3369,7 @@
],
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 42,
+ "line" : 58,
"column" : 8,
"source_fragment" : "meta.wcmp_metadata.selector = ((ONE << meta.wcmp_metadata.numBits) - ONE) << (64 - meta.wcmp_metadata.numBits)"
}
@@ -3384,7 +3378,7 @@
},
{
"name" : "act",
- "id" : 8,
+ "id" : 7,
"runtime_data" : [],
"primitives" : [
{
@@ -3410,7 +3404,7 @@
},
{
"name" : "act_0",
- "id" : 9,
+ "id" : 8,
"runtime_data" : [],
"primitives" : [
{
@@ -3453,7 +3447,7 @@
],
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 11,
+ "line" : 27,
"column" : 12,
"source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
}
@@ -3498,7 +3492,7 @@
],
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 12,
+ "line" : 28,
"column" : 12,
"source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
}
@@ -3507,7 +3501,7 @@
},
{
"name" : "act_1",
- "id" : 10,
+ "id" : 9,
"runtime_data" : [],
"primitives" : [
{
@@ -3548,7 +3542,7 @@
},
{
"name" : "act_2",
- "id" : 11,
+ "id" : 10,
"runtime_data" : [],
"primitives" : [
{
@@ -3575,7 +3569,7 @@
"id" : 0,
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 28,
+ "line" : 44,
"column" : 8,
"source_fragment" : "ingress"
},
@@ -3591,14 +3585,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [8],
+ "action_ids" : [7],
"actions" : ["act"],
"base_default_next" : "node_4",
"next_tables" : {
"act" : "node_4"
},
"default_entry" : {
- "action_id" : 8,
+ "action_id" : 7,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
@@ -3609,7 +3603,7 @@
"id" : 1,
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 45,
+ "line" : 61,
"column" : 10,
"source_fragment" : "table0"
},
@@ -3640,18 +3634,17 @@
"max_size" : 1024,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [0, 6, 2, 3, 4],
- "actions" : ["set_egress_port", "wcmp_group", "send_to_cpu", "drop", "NoAction"],
+ "action_ids" : [0, 5, 2, 3],
+ "actions" : ["set_egress_port", "wcmp_group", "send_to_cpu", "_drop"],
"base_default_next" : "node_8",
"next_tables" : {
"wcmp_group" : "tbl_wcmp_set_selector",
"set_egress_port" : "node_8",
"send_to_cpu" : "node_8",
- "drop" : "node_8",
- "NoAction" : "node_8"
+ "_drop" : "node_8"
},
"default_entry" : {
- "action_id" : 4,
+ "action_id" : 3,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -3667,14 +3660,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [7],
+ "action_ids" : [6],
"actions" : ["wcmp_set_selector"],
"base_default_next" : "wcmp_group_table",
"next_tables" : {
"wcmp_set_selector" : "wcmp_group_table"
},
"default_entry" : {
- "action_id" : 7,
+ "action_id" : 6,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
@@ -3685,7 +3678,7 @@
"id" : 3,
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 62,
+ "line" : 79,
"column" : 10,
"source_fragment" : "wcmp_group_table"
},
@@ -3706,7 +3699,7 @@
"max_size" : 1024,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [1, 5],
+ "action_ids" : [1, 4],
"actions" : ["set_egress_port", "NoAction"],
"base_default_next" : "node_8",
"next_tables" : {
@@ -3714,7 +3707,7 @@
"NoAction" : "node_8"
},
"default_entry" : {
- "action_id" : 5,
+ "action_id" : 4,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
@@ -3730,14 +3723,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [9],
+ "action_ids" : [8],
"actions" : ["act_0"],
"base_default_next" : null,
"next_tables" : {
"act_0" : null
},
"default_entry" : {
- "action_id" : 9,
+ "action_id" : 8,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
@@ -3777,7 +3770,7 @@
"id" : 1,
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 78,
+ "line" : 95,
"column" : 13,
"source_fragment" : "hdr.packet_out.isValid()"
},
@@ -3803,7 +3796,7 @@
"id" : 2,
"source_info" : {
"filename" : "include/port_counters.p4",
- "line" : 10,
+ "line" : 26,
"column" : 12,
"source_fragment" : "standard_metadata.egress_spec < 254"
},
@@ -3831,7 +3824,7 @@
"id" : 1,
"source_info" : {
"filename" : "wcmp.p4",
- "line" : 90,
+ "line" : 107,
"column" : 8,
"source_fragment" : "egress"
},
@@ -3847,14 +3840,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [11],
+ "action_ids" : [10],
"actions" : ["act_2"],
"base_default_next" : "node_13",
"next_tables" : {
"act_2" : "node_13"
},
"default_entry" : {
- "action_id" : 11,
+ "action_id" : 10,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
@@ -3870,14 +3863,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
- "action_ids" : [10],
+ "action_ids" : [9],
"actions" : ["act_1"],
"base_default_next" : null,
"next_tables" : {
"act_1" : null
},
"default_entry" : {
- "action_id" : 10,
+ "action_id" : 9,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
diff --git a/tools/test/p4src/p4-16/p4c-out/wcmp.p4info b/tools/test/p4src/p4-16/p4c-out/wcmp.p4info
index 8846b67..41aabf4 100644
--- a/tools/test/p4src/p4-16/p4c-out/wcmp.p4info
+++ b/tools/test/p4src/p4-16/p4c-out/wcmp.p4info
@@ -38,11 +38,7 @@
id: 16829080
}
action_refs {
- id: 16793508
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
+ id: 16784184
}
direct_resource_ids: 301990488
size: 1024
@@ -97,9 +93,9 @@
}
actions {
preamble {
- id: 16793508
- name: "drop"
- alias: "drop"
+ id: 16784184
+ name: "_drop"
+ alias: "_drop"
}
}
actions {
diff --git a/tools/test/p4src/p4-16/wcmp.p4 b/tools/test/p4src/p4-16/wcmp.p4
index 419ba83..8123bfb 100644
--- a/tools/test/p4src/p4-16/wcmp.p4
+++ b/tools/test/p4src/p4-16/wcmp.p4
@@ -64,7 +64,7 @@
set_egress_port(standard_metadata);
wcmp_group;
send_to_cpu(standard_metadata);
- drop(standard_metadata);
+ _drop(standard_metadata);
}
key = {
standard_metadata.ingress_port: ternary;
@@ -73,6 +73,7 @@
hdr.ethernet.etherType : ternary;
}
counters = table0_counter;
+ default_action = _drop(standard_metadata);
}
table wcmp_group_table {
diff --git a/tools/test/topos/tofino-demo.json b/tools/test/topos/tofino-demo.json
new file mode 100644
index 0000000..d992970
--- /dev/null
+++ b/tools/test/topos/tofino-demo.json
@@ -0,0 +1,253 @@
+{
+ "devices": {
+ "device:tofino:21": {
+ "generalprovider": {
+ "p4runtime": {
+ "ip": "10.254.1.40",
+ "deviceKeyId": "p4runtime:device:tofino:21",
+ "port": 50051,
+ "deviceId": 21
+ }
+ },
+ "piPipeconf": {
+ "piPipeconfId": "pi-demo-ecmp"
+ },
+ "ports": {
+ "1": {
+ "name": "s21-1",
+ "speed": 100000,
+ "enabled": true,
+ "number": 1,
+ "removed": false,
+ "type": "copper"
+ },
+ "2": {
+ "name": "s21-2",
+ "speed": 100000,
+ "enabled": true,
+ "number": 2,
+ "removed": false,
+ "type": "copper"
+ }
+ },
+ "basic": {
+ "name": "Spine 1",
+ "latitude": 41,
+ "driver": "tofino",
+ "longitude": -107
+ }
+ },
+ "device:tofino:22": {
+ "generalprovider": {
+ "p4runtime": {
+ "ip": "10.254.1.39",
+ "deviceKeyId": "p4runtime:device:tofino:22",
+ "port": 50051,
+ "deviceId": 22
+ }
+ },
+ "piPipeconf": {
+ "piPipeconfId": "pi-demo-ecmp"
+ },
+ "ports": {
+ "1": {
+ "name": "s22-1",
+ "speed": 100000,
+ "enabled": true,
+ "number": 1,
+ "removed": false,
+ "type": "copper"
+ },
+ "2": {
+ "name": "s22-2",
+ "speed": 100000,
+ "enabled": true,
+ "number": 2,
+ "removed": false,
+ "type": "copper"
+ }
+ },
+ "basic": {
+ "name": "Spine 2",
+ "latitude": 41,
+ "driver": "tofino",
+ "longitude": -99
+ }
+ },
+ "device:tofino:11": {
+ "generalprovider": {
+ "p4runtime": {
+ "ip": "10.254.1.38",
+ "deviceKeyId": "p4runtime:device:tofino:11",
+ "port": 50051,
+ "deviceId": 11
+ }
+ },
+ "piPipeconf": {
+ "piPipeconfId": "pi-demo-ecmp"
+ },
+ "ports": {
+ "1": {
+ "name": "s11-1",
+ "speed": 100000,
+ "enabled": true,
+ "number": 1,
+ "removed": false,
+ "type": "copper"
+ },
+ "2": {
+ "name": "s11-2",
+ "speed": 100000,
+ "enabled": true,
+ "number": 2,
+ "removed": false,
+ "type": "copper"
+ },
+ "3": {
+ "name": "s11-3",
+ "speed": 40000,
+ "enabled": true,
+ "number": 3,
+ "removed": false,
+ "type": "copper"
+ }
+ },
+ "basic": {
+ "name": "Leaf 1",
+ "latitude": 33,
+ "driver": "tofino",
+ "longitude": -107
+ }
+ },
+ "device:tofino:12": {
+ "generalprovider": {
+ "p4runtime": {
+ "ip": "10.254.1.37",
+ "deviceKeyId": "p4runtime:device:tofino:12",
+ "port": 50051,
+ "deviceId": 12
+ }
+ },
+ "piPipeconf": {
+ "piPipeconfId": "pi-demo-ecmp"
+ },
+ "ports": {
+ "1": {
+ "name": "s12-1",
+ "speed": 100000,
+ "enabled": true,
+ "number": 1,
+ "removed": false,
+ "type": "copper"
+ },
+ "2": {
+ "name": "s12-2",
+ "speed": 100000,
+ "enabled": true,
+ "number": 2,
+ "removed": false,
+ "type": "copper"
+ },
+ "3": {
+ "name": "s12-3",
+ "speed": 40000,
+ "enabled": true,
+ "number": 3,
+ "removed": false,
+ "type": "copper"
+ }
+ },
+ "basic": {
+ "name": "Leaf 2",
+ "latitude": 33,
+ "driver": "tofino",
+ "longitude": -99
+ }
+ }
+ },
+ "links": {
+ "device:tofino:11/1-device:tofino:21/1": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ },
+ "device:tofino:11/2-device:tofino:22/1": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ },
+ "device:tofino:12/1-device:tofino:21/2": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ },
+ "device:tofino:12/2-device:tofino:22/2": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ },
+ "device:tofino:21/1-device:tofino:11/1": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ },
+ "device:tofino:22/1-device:tofino:11/2": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ },
+ "device:tofino:21/2-device:tofino:12/1": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ },
+ "device:tofino:22/2-device:tofino:12/2": {
+ "basic": {
+ "bandwidth": 100000,
+ "type": "DIRECT"
+ }
+ }
+ },
+ "hosts": {
+ "3c:fd:fe:a6:e7:08/-1": {
+ "basic": {
+ "latitude": 28,
+ "ips": [
+ "10.0.0.1"
+ ],
+ "locations": [
+ "device:tofino:21/3"
+ ],
+ "longitude": -107,
+ "name": "h1"
+ }
+ },
+ "3c:fd:fe:a6:e7:09/-1": {
+ "basic": {
+ "latitude": 28,
+ "ips": [
+ "10.0.0.2"
+ ],
+ "locations": [
+ "device:tofino:22/3"
+ ],
+ "longitude": -99,
+ "name": "h2"
+ }
+ }
+ },
+ "apps": {
+ "org.onosproject.core": {
+ "core": {
+ "linkDiscoveryMode": "STRICT"
+ }
+ }
+ }
+}