Break out double tagging tests

It is not clear in the 1.0 spec what the treatment of double
tagged packets should be.  It doesn't really get clearer in
later specs, though they are more explicitly discussed in 1.1.
Wildcarding VLAN has the effect on some switches of ignoring
all VLAN tags.  This is not a clear violation of the spec.  As
a result, this commit proposes to break out the double tagged
VLAN test cases to a separate test and mark it nonstandard.
diff --git a/tests/pktact.py b/tests/pktact.py
index 6e2e573..fe92aa0 100644
--- a/tests/pktact.py
+++ b/tests/pktact.py
@@ -2749,6 +2749,51 @@
                 scapy.IP(),
             self.RESULT_NOMATCH
         )
+        testPacket("IP matching - VLAN tag",
+            self.createMatch(dl_dst=parse_mac(dl_dst), dl_src=parse_mac(dl_src),
+                             dl_type=0x0800,
+                             nw_src=parse_ip(ip_src), nw_dst=parse_ip(ip_dst)),
+            scapy.Ether(dst=dl_dst, src=dl_src)/ \
+                scapy.Dot1Q(prio=5, vlan=1000)/ \
+                scapy.IP(src=ip_src, dst=ip_dst),
+            self.RESULT_MATCH
+        )
+        # XXX:
+        # - Matching on VLAN ID and Prio
+        # - Actions
+
+@nonstandard
+class DirectVlanPacketsDoubleTagged(DirectVlanPackets):
+    """
+    VLAN parsing for double tagged packets.  Spec is ambiguous about
+    the treatment of these cases, so broken out to be non-standard
+    """
+    def runTest(self):
+        dl_dst='00:01:02:03:04:05'
+        dl_src='00:06:07:08:09:0a'
+        ip_src='192.168.0.1'
+        ip_dst='192.168.0.2'
+        ip_src2='192.168.1.1'
+        ip_dst2='192.168.1.2'
+        ip_tos=0
+        tcp_sport=1234
+        tcp_dport=80
+
+        def testPacket(title, match, pkt, result):
+            pkts = []
+    
+            self.assertTrue(match is not None, 
+                            "Could not generate flow match from pkt")
+            match.wildcards &= ~ofp.OFPFW_IN_PORT
+            
+            pkts.append([
+                "%s" % title,
+                pkt,
+                result,
+            ])
+    
+            act = action.action_output()
+            self.testPktsAgainstFlow(pkts, act, match)
         testPacket("Ether matching with double VLAN tag - Wrong type match",
             self.createMatch(dl_dst=parse_mac(dl_dst), dl_src=parse_mac(dl_src),
                              dl_type=0x800),
@@ -2767,18 +2812,6 @@
                 scapy.IP(),
             self.RESULT_MATCH
         )
-        testPacket("IP matching - VLAN tag",
-            self.createMatch(dl_dst=parse_mac(dl_dst), dl_src=parse_mac(dl_src),
-                             dl_type=0x0800,
-                             nw_src=parse_ip(ip_src), nw_dst=parse_ip(ip_dst)),
-            scapy.Ether(dst=dl_dst, src=dl_src)/ \
-                scapy.Dot1Q(prio=5, vlan=1000)/ \
-                scapy.IP(src=ip_src, dst=ip_dst),
-            self.RESULT_MATCH
-        )
-        # XXX:
-        # - Matching on VLAN ID and Prio
-        # - Actions