Refactored PI-ECMP app to use action profiles of basic.p4
Also removed obsolete ecmp.p4-related code.
Change-Id: Idaca90becfff5fc312de2530bf7924ccd502e076
diff --git a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicConstants.java b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicConstants.java
index b71acbf..b6ee3c2 100644
--- a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicConstants.java
+++ b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicConstants.java
@@ -38,12 +38,15 @@
public static final String DOT = ".";
public static final String HDR = "hdr";
public static final String ETHERNET = "ethernet";
+ public static final String IPV4 = "ipv4";
public static final String LOCAL_METADATA = "local_metadata";
public static final String STANDARD_METADATA = "standard_metadata";
public static final PiMatchFieldId HDR_IN_PORT_ID = PiMatchFieldId.of(STANDARD_METADATA + DOT + "ingress_port");
public static final PiMatchFieldId HDR_ETH_DST_ID = PiMatchFieldId.of(HDR + DOT + ETHERNET + DOT + "dst_addr");
public static final PiMatchFieldId HDR_ETH_SRC_ID = PiMatchFieldId.of(HDR + DOT + ETHERNET + DOT + "src_addr");
public static final PiMatchFieldId HDR_ETH_TYPE_ID = PiMatchFieldId.of(HDR + DOT + ETHERNET + DOT + "ether_type");
+ public static final PiMatchFieldId HDR_IPV4_DST_ID = PiMatchFieldId.of(HDR + DOT + IPV4 + DOT + "dst_addr");
+ public static final PiMatchFieldId HDR_IPV4_SRC_ID = PiMatchFieldId.of(HDR + DOT + IPV4 + DOT + "src_addr");
public static final PiMatchFieldId HDR_NEXT_HOP_ID = PiMatchFieldId.of(LOCAL_METADATA + DOT + "next_hop_id");
public static final PiMatchFieldId HDR_SELECTOR_ID = PiMatchFieldId.of(LOCAL_METADATA + DOT + "selector");
// Table IDs
@@ -66,7 +69,7 @@
public static final PiActionParamId ACT_PRM_PORT_ID = PiActionParamId.of("port");
public static final PiActionParamId ACT_PRM_NEXT_HOP_ID = PiActionParamId.of("next_hop_id");
// Action Profile IDs
- public static final PiActionProfileId ACT_PRF_WCMP_SELECTOR_ID = PiActionProfileId.of("wcmp_selector");
+ public static final PiActionProfileId ACT_PRF_WCMP_SELECTOR_ID = PiActionProfileId.of("wcmp_control.wcmp_selector");
// Packet Metadata IDs
public static final PiControlMetadataId PKT_META_EGRESS_PORT_ID = PiControlMetadataId.of("egress_port");
public static final PiControlMetadataId PKT_META_INGRESS_PORT_ID = PiControlMetadataId.of("ingress_port");
diff --git a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicInterpreterImpl.java b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicInterpreterImpl.java
index cc0ef46..8e7b399 100644
--- a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicInterpreterImpl.java
+++ b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/BasicInterpreterImpl.java
@@ -66,6 +66,8 @@
import static org.onosproject.pipelines.basic.BasicConstants.HDR_ETH_SRC_ID;
import static org.onosproject.pipelines.basic.BasicConstants.HDR_ETH_TYPE_ID;
import static org.onosproject.pipelines.basic.BasicConstants.HDR_IN_PORT_ID;
+import static org.onosproject.pipelines.basic.BasicConstants.HDR_IPV4_DST_ID;
+import static org.onosproject.pipelines.basic.BasicConstants.HDR_IPV4_SRC_ID;
import static org.onosproject.pipelines.basic.BasicConstants.PKT_META_EGRESS_PORT_ID;
import static org.onosproject.pipelines.basic.BasicConstants.PKT_META_INGRESS_PORT_ID;
import static org.onosproject.pipelines.basic.BasicConstants.PORT_BITWIDTH;
@@ -93,6 +95,8 @@
.put(Criterion.Type.ETH_DST, HDR_ETH_DST_ID)
.put(Criterion.Type.ETH_SRC, HDR_ETH_SRC_ID)
.put(Criterion.Type.ETH_TYPE, HDR_ETH_TYPE_ID)
+ .put(Criterion.Type.IPV4_SRC, HDR_IPV4_SRC_ID)
+ .put(Criterion.Type.IPV4_DST, HDR_IPV4_DST_ID)
.build();
@Override
diff --git a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PipeconfLoader.java b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PipeconfLoader.java
index 399d4db..9b33883 100644
--- a/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PipeconfLoader.java
+++ b/pipelines/basic/src/main/java/org/onosproject/pipelines/basic/PipeconfLoader.java
@@ -50,14 +50,9 @@
private static final String BASIC_JSON_PATH = "/p4c-out/bmv2/basic.json";
private static final String BASIC_P4INFO = "/p4c-out/bmv2/basic.p4info";
- private static final PiPipeconfId ECMP_PIPECONF_ID = new PiPipeconfId("org.onosproject.pipelines.ecmp");
- private static final String ECMP_JSON_PATH = "/p4c-out/bmv2/ecmp.json";
- private static final String ECMP_P4INFO = "/p4c-out/bmv2/ecmp.p4info";
-
public static final PiPipeconf BASIC_PIPECONF = buildBasicPipeconf();
- public static final PiPipeconf ECMP_PIPECONF = buildEcmpPipeconf();
- private static final Collection<PiPipeconf> ALL_PIPECONFS = ImmutableList.of(BASIC_PIPECONF, ECMP_PIPECONF);
+ private static final Collection<PiPipeconf> ALL_PIPECONFS = ImmutableList.of(BASIC_PIPECONF);
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
private PiPipeconfService piPipeconfService;
@@ -90,21 +85,6 @@
.build();
}
- private static PiPipeconf buildEcmpPipeconf() {
- final URL jsonUrl = PipeconfLoader.class.getResource(ECMP_JSON_PATH);
- final URL p4InfoUrl = PipeconfLoader.class.getResource(ECMP_P4INFO);
-
- return DefaultPiPipeconf.builder()
- .withId(ECMP_PIPECONF_ID)
- .withPipelineModel(parseP4Info(p4InfoUrl))
- .addBehaviour(PiPipelineInterpreter.class, EcmpInterpreterImpl.class)
- .addBehaviour(Pipeliner.class, DefaultSingleTablePipeline.class)
- .addBehaviour(PortStatisticsDiscovery.class, PortStatisticsDiscoveryImpl.class)
- .addExtension(P4_INFO_TEXT, p4InfoUrl)
- .addExtension(BMV2_JSON, jsonUrl)
- .build();
- }
-
private static PiPipelineModel parseP4Info(URL p4InfoUrl) {
try {
return P4InfoParser.parse(p4InfoUrl);