[SDFAB-357] Backport slicing in fabric and add support for QFI in PDR and fabric

Change-Id: Ieb10140dc0029a0cbf59ddfbb77f64f9a8c7379e
(cherry picked from commit 411f6f7f461db6491d627c2cb31642bdd6e7c8d8)
diff --git a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/FabricUpfTranslatorTest.java b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/FabricUpfTranslatorTest.java
index e490572..a07826d 100644
--- a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/FabricUpfTranslatorTest.java
+++ b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/FabricUpfTranslatorTest.java
@@ -32,60 +32,49 @@
 
     @Test
     public void fabricEntryToUplinkPdrTest() {
-        PacketDetectionRule expectedPdr = TestUpfConstants.UPLINK_PDR;
-        PacketDetectionRule translatedPdr;
-        try {
-            translatedPdr = upfTranslator.fabricEntryToPdr(TestUpfConstants.FABRIC_UPLINK_PDR);
-        } catch (UpfProgrammableException e) {
-            assertThat("Fabric uplink PDR should translate to abstract PDR without error.", false);
-            return;
-        }
-        assertThat("Translated PDR should be uplink.", translatedPdr.matchesEncapped());
-        assertThat(translatedPdr, equalTo(expectedPdr));
+        fabricToPdrUplink(TestUpfConstants.UPLINK_PDR, TestUpfConstants.FABRIC_UPLINK_PDR);
     }
 
     @Test
-    public void fabricEntryToUplinkPriorityPdrTest() {
-        PacketDetectionRule expectedPdr = TestUpfConstants.UPLINK_PRIORITY_PDR;
+    public void fabricEntryToUplinkQosPdrTest() {
+        fabricToPdrUplink(TestUpfConstants.UPLINK_QOS_PDR, TestUpfConstants.FABRIC_UPLINK_QOS_PDR);
+        fabricToPdrUplink(TestUpfConstants.UPLINK_QOS_4G_PDR, TestUpfConstants.FABRIC_UPLINK_QOS_4G_PDR);
+    }
+
+    private void fabricToPdrUplink(PacketDetectionRule expected, FlowRule fabricFlow) {
         PacketDetectionRule translatedPdr;
         try {
-            translatedPdr = upfTranslator.fabricEntryToPdr(TestUpfConstants.FABRIC_UPLINK_PRIORITY_PDR);
+            translatedPdr = upfTranslator.fabricEntryToPdr(fabricFlow);
         } catch (UpfProgrammableException e) {
             assertThat("Fabric uplink PDR should translate to abstract PDR without error.", false);
             return;
         }
         assertThat("Translated PDR should be uplink.", translatedPdr.matchesEncapped());
-        assertThat(translatedPdr, equalTo(expectedPdr));
+        assertThat(translatedPdr, equalTo(expected));
     }
 
     @Test
     public void fabricEntryToDownlinkPdrTest() {
-        PacketDetectionRule expectedPdr = TestUpfConstants.DOWNLINK_PDR;
-        PacketDetectionRule translatedPdr;
-        try {
-            translatedPdr = upfTranslator.fabricEntryToPdr(TestUpfConstants.FABRIC_DOWNLINK_PDR);
-        } catch (UpfProgrammableException e) {
-            assertThat("Fabric downlink PDR should translate to abstract PDR without error.", false);
-            return;
-        }
-
-        assertThat("Translated PDR should be downlink.", translatedPdr.matchesUnencapped());
-        assertThat(translatedPdr, equalTo(expectedPdr));
+        fabricToPdrDownlink(TestUpfConstants.DOWNLINK_PDR, TestUpfConstants.FABRIC_DOWNLINK_PDR);
     }
 
     @Test
-    public void fabricEntryToDownlinkPriorityPdrTest() {
-        PacketDetectionRule expectedPdr = TestUpfConstants.DOWNLINK_PRIORITY_PDR;
+    public void fabricEntryToDownlinkQosPdrTest() {
+        fabricToPdrDownlink(TestUpfConstants.DOWNLINK_QOS_PDR, TestUpfConstants.FABRIC_DOWNLINK_QOS_PDR);
+        fabricToPdrDownlink(TestUpfConstants.DOWNLINK_QOS_4G_PDR, TestUpfConstants.FABRIC_DOWNLINK_QOS_4G_PDR);
+    }
+
+    private void fabricToPdrDownlink(PacketDetectionRule expected, FlowRule fabricFlow) {
         PacketDetectionRule translatedPdr;
         try {
-            translatedPdr = upfTranslator.fabricEntryToPdr(TestUpfConstants.FABRIC_DOWNLINK_PRIORITY_PDR);
+            translatedPdr = upfTranslator.fabricEntryToPdr(fabricFlow);
         } catch (UpfProgrammableException e) {
             assertThat("Fabric downlink PDR should translate to abstract PDR without error.", false);
             return;
         }
 
         assertThat("Translated PDR should be downlink.", translatedPdr.matchesUnencapped());
-        assertThat(translatedPdr, equalTo(expectedPdr));
+        assertThat(translatedPdr, equalTo(expected));
     }
 
     @Test
@@ -184,27 +173,19 @@
 
     @Test
     public void downlinkPdrToFabricEntryTest() {
-        FlowRule translatedRule;
-        FlowRule expectedRule = TestUpfConstants.FABRIC_DOWNLINK_PDR;
-        try {
-            translatedRule = upfTranslator.pdrToFabricEntry(TestUpfConstants.DOWNLINK_PDR,
-                                                            TestUpfConstants.DEVICE_ID,
-                                                            TestUpfConstants.APP_ID,
-                                                            TestUpfConstants.DEFAULT_PRIORITY);
-        } catch (UpfProgrammableException e) {
-            assertThat("Abstract downlink PDR should correctly translate to Fabric PDR without error",
-                       false);
-            return;
-        }
-        assertThat(translatedRule, equalTo(expectedRule));
+        pdrToFabricDownlink(TestUpfConstants.FABRIC_DOWNLINK_PDR, TestUpfConstants.DOWNLINK_PDR);
     }
 
     @Test
-    public void downlinkPdrToFabricPriorityEntryTest() {
+    public void downlinkPdrToFabricQosEntryTest() {
+        pdrToFabricDownlink(TestUpfConstants.FABRIC_DOWNLINK_QOS_PDR, TestUpfConstants.DOWNLINK_QOS_PDR);
+        pdrToFabricDownlink(TestUpfConstants.FABRIC_DOWNLINK_QOS_4G_PDR, TestUpfConstants.DOWNLINK_QOS_4G_PDR);
+    }
+
+    private void pdrToFabricDownlink(FlowRule expected, PacketDetectionRule pdr) {
         FlowRule translatedRule;
-        FlowRule expectedRule = TestUpfConstants.FABRIC_DOWNLINK_PRIORITY_PDR;
         try {
-            translatedRule = upfTranslator.pdrToFabricEntry(TestUpfConstants.DOWNLINK_PRIORITY_PDR,
+            translatedRule = upfTranslator.pdrToFabricEntry(pdr,
                                                             TestUpfConstants.DEVICE_ID,
                                                             TestUpfConstants.APP_ID,
                                                             TestUpfConstants.DEFAULT_PRIORITY);
@@ -213,7 +194,7 @@
                        false);
             return;
         }
-        assertThat(translatedRule, equalTo(expectedRule));
+        assertThat(translatedRule, equalTo(expected));
     }
 
     @Test
@@ -235,27 +216,19 @@
 
     @Test
     public void uplinkPdrToFabricEntryTest() {
-        FlowRule translatedRule;
-        FlowRule expectedRule = TestUpfConstants.FABRIC_UPLINK_PDR;
-        try {
-            translatedRule = upfTranslator.pdrToFabricEntry(TestUpfConstants.UPLINK_PDR,
-                                                            TestUpfConstants.DEVICE_ID,
-                                                            TestUpfConstants.APP_ID,
-                                                            TestUpfConstants.DEFAULT_PRIORITY);
-        } catch (UpfProgrammableException e) {
-            assertThat("Abstract uplink PDR should correctly translate to Fabric PDR without error",
-                       false);
-            return;
-        }
-        assertThat(translatedRule, equalTo(expectedRule));
+        pdrToFabricUplink(TestUpfConstants.FABRIC_UPLINK_PDR, TestUpfConstants.UPLINK_PDR);
     }
 
     @Test
-    public void uplinkPriorityPdrToFabricEntryTest() {
+    public void uplinkQosPdrToFabricEntryTest() {
+        pdrToFabricUplink(TestUpfConstants.FABRIC_UPLINK_QOS_PDR, TestUpfConstants.UPLINK_QOS_PDR);
+        pdrToFabricUplink(TestUpfConstants.FABRIC_UPLINK_QOS_4G_PDR, TestUpfConstants.UPLINK_QOS_4G_PDR);
+    }
+
+    private void pdrToFabricUplink(FlowRule expected, PacketDetectionRule pdr) {
         FlowRule translatedRule;
-        FlowRule expectedRule = TestUpfConstants.FABRIC_UPLINK_PRIORITY_PDR;
         try {
-            translatedRule = upfTranslator.pdrToFabricEntry(TestUpfConstants.UPLINK_PRIORITY_PDR,
+            translatedRule = upfTranslator.pdrToFabricEntry(pdr,
                                                             TestUpfConstants.DEVICE_ID,
                                                             TestUpfConstants.APP_ID,
                                                             TestUpfConstants.DEFAULT_PRIORITY);
@@ -264,7 +237,7 @@
                        false);
             return;
         }
-        assertThat(translatedRule, equalTo(expectedRule));
+        assertThat(translatedRule, equalTo(expected));
     }
 
     @Test
diff --git a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/TestUpfConstants.java b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/TestUpfConstants.java
index 6fee244..71c7212 100644
--- a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/TestUpfConstants.java
+++ b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/upf/TestUpfConstants.java
@@ -50,18 +50,28 @@
 import static org.onosproject.pipelines.fabric.FabricConstants.FAR_ID;
 import static org.onosproject.pipelines.fabric.FabricConstants.HDR_FAR_ID;
 import static org.onosproject.pipelines.fabric.FabricConstants.HDR_GTPU_IS_VALID;
+import static org.onosproject.pipelines.fabric.FabricConstants.HDR_HAS_QFI;
 import static org.onosproject.pipelines.fabric.FabricConstants.HDR_IPV4_DST_ADDR;
+import static org.onosproject.pipelines.fabric.FabricConstants.HDR_QFI;
 import static org.onosproject.pipelines.fabric.FabricConstants.HDR_TEID;
 import static org.onosproject.pipelines.fabric.FabricConstants.HDR_TUNNEL_IPV4_DST;
 import static org.onosproject.pipelines.fabric.FabricConstants.HDR_UE_ADDR;
 import static org.onosproject.pipelines.fabric.FabricConstants.NEEDS_GTPU_DECAP;
+import static org.onosproject.pipelines.fabric.FabricConstants.NEEDS_QFI_PUSH;
 import static org.onosproject.pipelines.fabric.FabricConstants.NOTIFY_CP;
-import static org.onosproject.pipelines.fabric.FabricConstants.QID;
+import static org.onosproject.pipelines.fabric.FabricConstants.QFI;
+import static org.onosproject.pipelines.fabric.FabricConstants.SLICE_ID;
 import static org.onosproject.pipelines.fabric.FabricConstants.SRC_IFACE;
+import static org.onosproject.pipelines.fabric.FabricConstants.TC;
 import static org.onosproject.pipelines.fabric.FabricConstants.TEID;
 import static org.onosproject.pipelines.fabric.FabricConstants.TUNNEL_DST_ADDR;
 import static org.onosproject.pipelines.fabric.FabricConstants.TUNNEL_SRC_ADDR;
 import static org.onosproject.pipelines.fabric.FabricConstants.TUNNEL_SRC_PORT;
+import static org.onosproject.pipelines.fabric.impl.behaviour.Constants.DEFAULT_QFI;
+import static org.onosproject.pipelines.fabric.impl.behaviour.Constants.DEFAULT_SLICE_ID;
+import static org.onosproject.pipelines.fabric.impl.behaviour.Constants.DEFAULT_TC;
+import static org.onosproject.pipelines.fabric.impl.behaviour.Constants.FALSE;
+import static org.onosproject.pipelines.fabric.impl.behaviour.Constants.TRUE;
 import static org.onosproject.pipelines.fabric.impl.behaviour.upf.FabricUpfTranslator.INTERFACE_ACCESS;
 import static org.onosproject.pipelines.fabric.impl.behaviour.upf.FabricUpfTranslator.INTERFACE_CORE;
 
@@ -90,11 +100,8 @@
             .hash()
             .asInt();
 
-    public static final int UPLINK_PRIORITY = 9;
-    public static final int DOWNLINK_PRIORITY = 1;
-    public static final int UPLINK_QID = 1;
-    public static final int DOWNLINK_QID = 5;
-    public static final int DEFAULT_SCHEDULING_PRIORITY = 0;
+    public static final byte UPLINK_QFI = 1;
+    public static final byte DOWNLINK_QFI = 5;
 
     public static final ImmutableByteSequence TEID_VALUE = ImmutableByteSequence.copyFrom(0xff);
     public static final Ip4Address UE_ADDR = Ip4Address.valueOf("17.0.0.1");
@@ -116,7 +123,6 @@
             .withLocalFarId(UPLINK_FAR_ID)
             .withSessionId(SESSION_ID)
             .withCounterId(UPLINK_COUNTER_CELL_ID)
-            .withSchedulingPriority(DEFAULT_SCHEDULING_PRIORITY)
             .build();
 
     public static final PacketDetectionRule DOWNLINK_PDR = PacketDetectionRule.builder()
@@ -124,24 +130,42 @@
             .withLocalFarId(DOWNLINK_FAR_ID)
             .withSessionId(SESSION_ID)
             .withCounterId(DOWNLINK_COUNTER_CELL_ID)
-            .withSchedulingPriority(DEFAULT_SCHEDULING_PRIORITY)
             .build();
 
-    public static final PacketDetectionRule UPLINK_PRIORITY_PDR = PacketDetectionRule.builder()
+    public static final PacketDetectionRule UPLINK_QOS_PDR = PacketDetectionRule.builder()
             .withTunnelDst(S1U_ADDR)
             .withTeid(TEID_VALUE)
             .withLocalFarId(UPLINK_FAR_ID)
             .withSessionId(SESSION_ID)
             .withCounterId(UPLINK_COUNTER_CELL_ID)
-            .withSchedulingPriority(UPLINK_PRIORITY)
+            .withQfi(UPLINK_QFI)
+            .withQfiMatch()
             .build();
 
-    public static final PacketDetectionRule DOWNLINK_PRIORITY_PDR = PacketDetectionRule.builder()
+    public static final PacketDetectionRule UPLINK_QOS_4G_PDR = PacketDetectionRule.builder()
+            .withTunnelDst(S1U_ADDR)
+            .withTeid(TEID_VALUE)
+            .withLocalFarId(UPLINK_FAR_ID)
+            .withSessionId(SESSION_ID)
+            .withCounterId(UPLINK_COUNTER_CELL_ID)
+            .withQfi(UPLINK_QFI)
+            .build();
+
+    public static final PacketDetectionRule DOWNLINK_QOS_PDR = PacketDetectionRule.builder()
             .withUeAddr(UE_ADDR)
             .withLocalFarId(DOWNLINK_FAR_ID)
             .withSessionId(SESSION_ID)
             .withCounterId(DOWNLINK_COUNTER_CELL_ID)
-            .withSchedulingPriority(DOWNLINK_PRIORITY)
+            .withQfi(DOWNLINK_QFI)
+            .withQfiPush()
+            .build();
+
+    public static final PacketDetectionRule DOWNLINK_QOS_4G_PDR = PacketDetectionRule.builder()
+            .withUeAddr(UE_ADDR)
+            .withLocalFarId(DOWNLINK_FAR_ID)
+            .withSessionId(SESSION_ID)
+            .withCounterId(DOWNLINK_COUNTER_CELL_ID)
+            .withQfi(DOWNLINK_QFI)
             .build();
 
     public static final ForwardingActionRule UPLINK_FAR = ForwardingActionRule.builder()
@@ -158,13 +182,38 @@
 
     public static final UpfInterface DOWNLINK_INTERFACE = UpfInterface.createUePoolFrom(UE_POOL);
 
-    public static final FlowRule FABRIC_UPLINK_PRIORITY_PDR = DefaultFlowRule.builder()
+    public static final FlowRule FABRIC_UPLINK_QOS_PDR = DefaultFlowRule.builder()
             .forDevice(DEVICE_ID).fromApp(APP_ID).makePermanent()
             .forTable(FABRIC_INGRESS_SPGW_UPLINK_PDRS)
             .withSelector(DefaultTrafficSelector.builder()
                                   .matchPi(PiCriterion.builder()
                                                    .matchExact(HDR_TEID, TEID_VALUE.asArray())
                                                    .matchExact(HDR_TUNNEL_IPV4_DST, S1U_ADDR.toInt())
+                                                   .matchExact(HDR_HAS_QFI, TRUE)
+                                                   .matchExact(HDR_QFI, UPLINK_QFI)
+                                           .build()).build())
+            .withTreatment(DefaultTrafficTreatment.builder()
+                                   .piTableAction(PiAction.builder()
+                                                          .withId(FABRIC_INGRESS_SPGW_LOAD_PDR)
+                                                          .withParameters(Arrays.asList(
+                                                                  new PiActionParam(CTR_ID, UPLINK_COUNTER_CELL_ID),
+                                                                  new PiActionParam(FAR_ID, UPLINK_PHYSICAL_FAR_ID),
+                                                                  new PiActionParam(NEEDS_GTPU_DECAP, TRUE),
+                                                                  new PiActionParam(TC, DEFAULT_TC)
+                                                          ))
+                                                          .build()).build())
+            .withPriority(DEFAULT_PRIORITY)
+            .build();
+
+    public static final FlowRule FABRIC_UPLINK_QOS_4G_PDR = DefaultFlowRule.builder()
+            .forDevice(DEVICE_ID).fromApp(APP_ID).makePermanent()
+            .forTable(FABRIC_INGRESS_SPGW_UPLINK_PDRS)
+            .withSelector(DefaultTrafficSelector.builder()
+                                  .matchPi(PiCriterion.builder()
+                                                   .matchExact(HDR_TEID, TEID_VALUE.asArray())
+                                                   .matchExact(HDR_TUNNEL_IPV4_DST, S1U_ADDR.toInt())
+                                                   .matchExact(HDR_HAS_QFI, FALSE)
+                                                   .matchExact(HDR_QFI, DEFAULT_QFI)
                                                    .build()).build())
             .withTreatment(DefaultTrafficTreatment.builder()
                                    .piTableAction(PiAction.builder()
@@ -172,14 +221,17 @@
                                                           .withParameters(Arrays.asList(
                                                                   new PiActionParam(CTR_ID, UPLINK_COUNTER_CELL_ID),
                                                                   new PiActionParam(FAR_ID, UPLINK_PHYSICAL_FAR_ID),
-                                                                  new PiActionParam(NEEDS_GTPU_DECAP, 1),
-                                                                  new PiActionParam(QID, UPLINK_QID)
+                                                                  new PiActionParam(NEEDS_GTPU_DECAP, TRUE),
+                                                                  new PiActionParam(NEEDS_QFI_PUSH, FALSE),
+                                                                  new PiActionParam(QFI,
+                                                                                    UPLINK_QFI),
+                                                                  new PiActionParam(TC, DEFAULT_TC)
                                                           ))
                                                           .build()).build())
             .withPriority(DEFAULT_PRIORITY)
             .build();
 
-    public static final FlowRule FABRIC_DOWNLINK_PRIORITY_PDR = DefaultFlowRule.builder()
+    public static final FlowRule FABRIC_DOWNLINK_QOS_PDR = DefaultFlowRule.builder()
             .forDevice(DEVICE_ID).fromApp(APP_ID).makePermanent()
             .forTable(FABRIC_INGRESS_SPGW_DOWNLINK_PDRS)
             .withSelector(DefaultTrafficSelector.builder()
@@ -192,8 +244,32 @@
                                                           .withParameters(Arrays.asList(
                                                                   new PiActionParam(CTR_ID, DOWNLINK_COUNTER_CELL_ID),
                                                                   new PiActionParam(FAR_ID, DOWNLINK_PHYSICAL_FAR_ID),
-                                                                  new PiActionParam(NEEDS_GTPU_DECAP, 0),
-                                                                  new PiActionParam(QID, DOWNLINK_QID)
+                                                                  new PiActionParam(QFI, DOWNLINK_QFI),
+                                                                  new PiActionParam(NEEDS_GTPU_DECAP, FALSE),
+                                                                  new PiActionParam(NEEDS_QFI_PUSH, TRUE),
+                                                                  new PiActionParam(TC, DEFAULT_TC)
+                                                          ))
+                                                          .build()).build())
+            .withPriority(DEFAULT_PRIORITY)
+            .build();
+
+    public static final FlowRule FABRIC_DOWNLINK_QOS_4G_PDR = DefaultFlowRule.builder()
+            .forDevice(DEVICE_ID).fromApp(APP_ID).makePermanent()
+            .forTable(FABRIC_INGRESS_SPGW_DOWNLINK_PDRS)
+            .withSelector(DefaultTrafficSelector.builder()
+                                  .matchPi(PiCriterion.builder()
+                                                   .matchExact(HDR_UE_ADDR, UE_ADDR.toInt())
+                                                   .build()).build())
+            .withTreatment(DefaultTrafficTreatment.builder()
+                                   .piTableAction(PiAction.builder()
+                                                          .withId(FABRIC_INGRESS_SPGW_LOAD_PDR_QOS)
+                                                          .withParameters(Arrays.asList(
+                                                                  new PiActionParam(CTR_ID, DOWNLINK_COUNTER_CELL_ID),
+                                                                  new PiActionParam(FAR_ID, DOWNLINK_PHYSICAL_FAR_ID),
+                                                                  new PiActionParam(QFI, DOWNLINK_QFI),
+                                                                  new PiActionParam(NEEDS_GTPU_DECAP, FALSE),
+                                                                  new PiActionParam(NEEDS_QFI_PUSH, FALSE),
+                                                                  new PiActionParam(TC, DEFAULT_TC)
                                                           ))
                                                           .build()).build())
             .withPriority(DEFAULT_PRIORITY)
@@ -206,6 +282,8 @@
                                   .matchPi(PiCriterion.builder()
                                                    .matchExact(HDR_TEID, TEID_VALUE.asArray())
                                                    .matchExact(HDR_TUNNEL_IPV4_DST, S1U_ADDR.toInt())
+                                                   .matchExact(HDR_HAS_QFI, FALSE)
+                                                   .matchExact(HDR_QFI, DEFAULT_QFI)
                                                    .build()).build())
             .withTreatment(DefaultTrafficTreatment.builder()
                                    .piTableAction(PiAction.builder()
@@ -213,7 +291,8 @@
                                                           .withParameters(Arrays.asList(
                                                                   new PiActionParam(CTR_ID, UPLINK_COUNTER_CELL_ID),
                                                                   new PiActionParam(FAR_ID, UPLINK_PHYSICAL_FAR_ID),
-                                                                  new PiActionParam(NEEDS_GTPU_DECAP, 1)
+                                                                  new PiActionParam(NEEDS_GTPU_DECAP, TRUE),
+                                                                  new PiActionParam(TC, DEFAULT_TC)
                                                           ))
                                                           .build()).build())
             .withPriority(DEFAULT_PRIORITY)
@@ -232,7 +311,8 @@
                                                           .withParameters(Arrays.asList(
                                                                   new PiActionParam(CTR_ID, DOWNLINK_COUNTER_CELL_ID),
                                                                   new PiActionParam(FAR_ID, DOWNLINK_PHYSICAL_FAR_ID),
-                                                                  new PiActionParam(NEEDS_GTPU_DECAP, 0)
+                                                                  new PiActionParam(NEEDS_GTPU_DECAP, FALSE),
+                                                                  new PiActionParam(TC, DEFAULT_TC)
                                                           ))
                                                           .build()).build())
             .withPriority(DEFAULT_PRIORITY)
@@ -293,6 +373,7 @@
                                            PiAction.builder()
                                                    .withId(FABRIC_INGRESS_SPGW_LOAD_IFACE)
                                                    .withParameter(new PiActionParam(SRC_IFACE, INTERFACE_ACCESS))
+                                                   .withParameter(new PiActionParam(SLICE_ID, DEFAULT_SLICE_ID))
                                                    .build()).build())
             .withPriority(DEFAULT_PRIORITY)
             .build();
@@ -311,6 +392,7 @@
                                    .piTableAction(PiAction.builder()
                                                           .withId(FABRIC_INGRESS_SPGW_LOAD_IFACE)
                                                           .withParameter(new PiActionParam(SRC_IFACE, INTERFACE_CORE))
+                                                          .withParameter(new PiActionParam(SLICE_ID, DEFAULT_SLICE_ID))
                                                           .build()).build())
             .withPriority(DEFAULT_PRIORITY)
             .build();