[VOL-4577] : Update ONOS olt-app for adding FTTB DPU Management, ANCP traffic & trap rules
Change-Id: Ibb8aad6e68e8bd3b5f5824f0b04f4c5bc2f84a9e
diff --git a/impl/src/main/java/org/opencord/olt/impl/OltUtils.java b/impl/src/main/java/org/opencord/olt/impl/OltUtils.java
index 6300ff9..869a01d 100644
--- a/impl/src/main/java/org/opencord/olt/impl/OltUtils.java
+++ b/impl/src/main/java/org/opencord/olt/impl/OltUtils.java
@@ -16,8 +16,11 @@
package org.opencord.olt.impl;
+import org.onlab.packet.VlanId;
import org.onosproject.net.AnnotationKeys;
import org.onosproject.net.Port;
+import org.opencord.sadis.SubscriberAndDeviceInformation;
+import org.opencord.sadis.UniTagInformation;
import static org.opencord.olt.impl.OltFlowService.FlowOperation.ADD;
@@ -57,4 +60,28 @@
static String completeFlowOpToString(OltFlowService.FlowOperation op) {
return op == ADD ? "Added" : "Removed";
}
+
+ /**
+ * Search and return the matching UniTagInfomation from the list of UniTagInfomation in the
+ * SubscriberAndDeviceInformation.
+ * For the match : cvlan, svlan and tpId are used.
+ *
+ * @param subInfo Subscriber information.
+ * @param innerVlan cTag
+ * @param outerVlan sTag
+ * @param tpId Techprofile Id
+ * @return UniTagInformation
+ */
+ static UniTagInformation getUniTagInformation(SubscriberAndDeviceInformation subInfo, VlanId innerVlan,
+ VlanId outerVlan, int tpId) {
+ UniTagInformation service = null;
+ for (UniTagInformation tagInfo : subInfo.uniTagList()) {
+ if (innerVlan.equals(tagInfo.getPonCTag()) && outerVlan.equals(tagInfo.getPonSTag())
+ && tpId == tagInfo.getTechnologyProfileId()) {
+ service = tagInfo;
+ break;
+ }
+ }
+ return service;
+ }
}