OltPipeline: Add VLAN_PUSH treatment if match is VlanId.NONE.

Previous code is assuming there will always be an existing VLAN
tag and is just setting the VLAN_VID value.

Change-Id: I2e90a11ca569cb1124c5fa86e6a35824142a487f
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 86e8200..b995c2b 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
@@ -451,14 +451,28 @@
 
         Pair<Instruction, Instruction> outerPair = vlanOps.remove(0);
 
+        // Add the VLAN_PUSH treatment if we're matching on VlanId.NONE
+        Criterion vlanMatchCriterion = filterForCriterion(fwd.selector().criteria(), Criterion.Type.VLAN_VID);
+        boolean push = false;
+        if (vlanMatchCriterion != null) {
+            push = ((VlanIdCriterion) vlanMatchCriterion).vlanId().equals(VlanId.NONE);
+        }
+
+        TrafficTreatment treatment;
+        if (push) {
+            treatment = buildTreatment(innerPair.getLeft(), innerPair.getRight(),
+                    Instructions.transition(QQ_TABLE));
+        } else {
+            treatment = buildTreatment(innerPair.getRight(), Instructions.transition(QQ_TABLE));
+        }
+
         FlowRule.Builder inner = DefaultFlowRule.builder()
                 .fromApp(fwd.appId())
                 .forDevice(deviceId)
                 .makePermanent()
                 .withPriority(fwd.priority())
                 .withSelector(fwd.selector())
-                .withTreatment(buildTreatment(innerPair.getRight(),
-                                              Instructions.transition(QQ_TABLE)));
+                .withTreatment(treatment);
 
         PortCriterion inPort = (PortCriterion)
                 fwd.selector().getCriterion(Criterion.Type.IN_PORT);