testing vlan untag
diff --git a/accton/accton_util.py b/accton/accton_util.py
index 67a7191..155849f 100755
--- a/accton/accton_util.py
+++ b/accton/accton_util.py
@@ -548,20 +548,56 @@
     logging.info("Add allow all vlan on port %d " %(in_port))
     ctrl.message_send(request)    
 
-def add_untag_vlan_table_flow(ctrl, in_port, send_barrier=False):
+def add_untag_vlan_table(ctrl, in_port,vlan_id=0x0000, send_barrier=False):
     """it a flow to allow all vlan untag on this port"""
     match = ofp.match()
     match.oxm_list.append(ofp.oxm.in_port(in_port))
-    match.oxm_list.append(ofp.oxm.vlan_vid_masked(0x1000, 0x0fff))
+    match.oxm_list.append(ofp.oxm.vlan_vid(vlan_id))
+    actions=[]
+    #actions.append(ofp.action.push_vlan(0x8100))
+    actions.append(ofp.action.set_field(ofp.oxm.vlan_vid(0x100a)))
     request = ofp.message.flow_add(
         table_id=10,
         cookie=42,
         match=match,
         instructions=[
+            ofp.instruction.apply_actions(
+                actions=actions
+            ),
             ofp.instruction.goto_table(20)
         ],
         priority=0)
     logging.info("Add allow all untag on port %d " %(in_port))
+    print "REQUEST:"
+    print request.show()
+    print "END"
+
+    ctrl.message_send(request)
+
+def add_untag_vlan_table_flow(ctrl, in_port,vlan_id=0x1001, vlan_mask=0x1fff, send_barrier=False):
+    """it a flow to allow all vlan untag on this port"""
+    match = ofp.match()
+    match.oxm_list.append(ofp.oxm.in_port(in_port))
+    match.oxm_list.append(ofp.oxm.vlan_vid_masked(vlan_id, vlan_mask))
+    actions=[]
+    #actions.append(ofp.action.push_vlan(0x8100))
+    actions.append(ofp.action.set_field(ofp.oxm.vlan_vid(0x100a)))
+    request = ofp.message.flow_add(
+        table_id=10,
+        cookie=42,
+        match=match,
+        instructions=[
+            ofp.instruction.apply_actions(
+                actions=actions
+            ),
+            ofp.instruction.goto_table(20)
+        ],
+        priority=0)
+    logging.info("Add allow all untag on port %d " %(in_port))
+    print "REQUEST:"
+    print request.show()
+    print "END"
+
     ctrl.message_send(request)
     
 def add_one_vlan_table_flow(ctrl, of_port, vlan_id=1, vrf=0, flag=VLAN_TABLE_FLAG_ONLY_BOTH, send_barrier=False):
@@ -576,7 +612,7 @@
         if vrf!=0:
             actions.append(ofp.action.set_field(ofp.oxm.exp2ByteValue(exp_type=1, value=vrf)))
             
-        actions.append(ofp.action.set_field(ofp.oxm.vlan_vid(value=vlan_id)))
+        #actions.append(ofp.action.set_field(ofp.oxm.vlan_vid(value=vlan_id)))
 
         request = ofp.message.flow_add(
             table_id=10,
diff --git a/ofdpa/dev.py b/ofdpa/dev.py
index ba850a6..b5140b4 100644
--- a/ofdpa/dev.py
+++ b/ofdpa/dev.py
@@ -13,6 +13,7 @@
 from oftest.testutils import *
 from accton_util import *
 
+@disabled 
 class Purge(base_tests.SimpleDataPlane):
     def runTest(self):
         delete_all_flows(self.controller)
@@ -21,7 +22,7 @@
         add_vlan_table_flow(self.controller, config["port_map"].keys(), 1)
         verify_no_other_packets(self)
            
-
+@disabled 
 class FlowStats(base_tests.SimpleProtocol):
     """
     Flow stats multipart transaction
@@ -35,3 +36,64 @@
         for entry in stats:
             print(entry.show())
 
+class TagFlow20to10(base_tests.SimpleDataPlane):
+    def runTest(self):
+        do_barrier(self.controller)
+        for port in config["port_map"].keys():
+            add_one_vlan_table_flow(self.controller, port, 10)
+            do_barrier(self.controller)
+            logging.info("Sending flow stats request")
+            stats = get_flow_stats(self, ofp.match())
+            print "STATS"
+            for entry in stats:
+                print(entry.show())
+            print "END"
+        do_barrier(self.controller)
+        verify_no_other_packets(self)
+@disabled
+class UnTagFlow0(base_tests.SimpleDataPlane):
+    def runTest(self):
+        do_barrier(self.controller)
+        for port in config["port_map"].keys():
+            add_untag_vlan_table_flow(self.controller, port, 0x0000, 0x1000)
+            do_barrier(self.controller)
+            logging.info("Sending flow stats request")
+            stats = get_flow_stats(self, ofp.match())
+            print "STATS"
+            for entry in stats:
+                print(entry.show())
+            print "END"
+        do_barrier(self.controller)
+        verify_no_other_packets(self)
+
+class UnTagFlow10(base_tests.SimpleDataPlane):
+    def runTest(self):
+        do_barrier(self.controller)
+        for port in config["port_map"].keys():
+            add_untag_vlan_table_flow(self.controller, port, 0x0000, 0x1fff)
+            do_barrier(self.controller)
+            logging.info("Sending flow stats request")
+            stats = get_flow_stats(self, ofp.match())
+            print "STATS"
+            for entry in stats:
+                print(entry.show())
+            print "END"
+        do_barrier(self.controller)
+        verify_no_other_packets(self)
+
+
+@disabled
+class UnTagFlow1(base_tests.SimpleDataPlane):
+    def runTest(self):
+        do_barrier(self.controller)
+        for port in config["port_map"].keys():
+            add_untag_vlan_table(self.controller, port)
+            do_barrier(self.controller)
+            logging.info("Sending flow stats request")
+            stats = get_flow_stats(self, ofp.match())
+            print "STATS"
+            for entry in stats:
+                print(entry.show())
+            print "END"
+        do_barrier(self.controller)
+        verify_no_other_packets(self)
diff --git a/ofdpa/onos.py b/ofdpa/onos.py
index 4f13c0d..abee77a 100644
--- a/ofdpa/onos.py
+++ b/ofdpa/onos.py
@@ -51,6 +51,57 @@
 
             verify_no_other_packets(self)
 
+class PacketInMiss(base_tests.SimpleDataPlane):
+    """
+    Test packet in function for a table-miss flow
+    Send a packet to each dataplane port and verify that a packet
+    in message is received from the controller for each
+    
+    NOTE: Verify This case the oft option shall not use --switch-ip
+    """
+
+    def runTest(self):
+        delete_all_flows(self.controller)
+        delete_all_groups(self.controller)
+        
+        parsed_vlan_pkt = simple_udp_packet(pktlen=104, 
+                      vlan_vid=0x1001, dl_vlan_enable=True)
+        vlan_pkt = str(parsed_vlan_pkt)
+        ports = sorted(config["port_map"].keys())
+        for port in ports:
+            add_one_l2_interface_group(self.controller, port, 1, True, False)
+            add_one_vlan_table_flow(self.controller, port, 1, flag=VLAN_TABLE_FLAG_ONLY_TAG)
+
+        # create match
+        match = ofp.match()
+        match.oxm_list.append(ofp.oxm.eth_type(0x0800))
+        match.oxm_list.append(ofp.oxm.ip_proto(17))
+        request = ofp.message.flow_add(
+            table_id=60,
+            cookie=42,
+            match=match,
+            instructions=[
+                ofp.instruction.apply_actions(
+                    actions=[
+                        ofp.action.output(
+                            port=ofp.OFPP_CONTROLLER,
+                            max_len=ofp.OFPCML_NO_BUFFER)]),
+            ],
+            buffer_id=ofp.OFP_NO_BUFFER,
+            priority=1)
+
+        logging.info("Inserting packet in flow to controller")
+        self.controller.message_send(request)
+        do_barrier(self.controller)
+
+        for of_port in config["port_map"].keys():
+            logging.info("PacketInMiss test, port %d", of_port)
+            self.dataplane.send(of_port, vlan_pkt)
+
+            verify_packet_in(self, vlan_pkt, of_port, ofp.OFPR_ACTION)
+
+            verify_no_other_packets(self)
+
 class VlanSupport(base_tests.SimpleDataPlane):
     """
     Test L2 forwarding of both, untagged and double-tagged packets