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

Change-Id: I056c22a34b5a21e8969ecaa43d50d3f9c86b115d
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 6fcf5f4..19532cd 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
@@ -430,7 +430,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);
@@ -445,7 +449,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)));