ONOS-7807: Fix to provide inner-tag of Q-in-Q flows correctly to VOLTHA

Change-Id: Ied996f53a388731afc7978ea901a09d8e47e7c1c
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
index 6cc63c2..b483cf1 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
@@ -428,7 +428,11 @@
         Criterion outerVlan = selector.getCriterion(Criterion.Type.VLAN_VID);
         Criterion innerVlan = selector.getCriterion(Criterion.Type.INNER_VLAN_VID);
         Criterion inport = selector.getCriterion(Criterion.Type.IN_PORT);
-        Criterion bullshit = Criteria.matchMetadata(output.port().toLong());
+
+        long cvid = ((VlanIdCriterion) innerVlan).vlanId().toShort();
+        long outPort = output.port().toLong() & 0x0FFFFFFFFL;
+
+        Criterion metadata = Criteria.matchMetadata((cvid << 32) | outPort);
 
         if (outerVlan == null || innerVlan == null || inport == null) {
             log.error("Forwarding objective is underspecified: {}", fwd);
@@ -443,7 +447,7 @@
                 .forDevice(deviceId)
                 .makePermanent()
                 .withPriority(fwd.priority())
-                .withSelector(buildSelector(inport, outerVlan, bullshit))
+                .withSelector(buildSelector(inport, outerVlan, metadata))
                 .withTreatment(buildTreatment(popAndRewrite.getLeft(),
                                               Instructions.transition(QQ_TABLE)));