diff --git a/acctonUseDpctl/vlan.py b/acctonUseDpctl/vlan.py
new file mode 100755
index 0000000..b7bf28a
--- /dev/null
+++ b/acctonUseDpctl/vlan.py
@@ -0,0 +1,32 @@
+import logging
+import oftest.base_tests as base_tests
+from oftest import config
+from oftest.testutils import *
+from util import *
+
+
+class features(base_tests.SimpleDataPlane):
+    def runTest(self):
+        delete_all_flows(self.controller)
+        delete_all_groups(self.controller)    
+		
+        test_ports = sorted(config["port_map"].keys())	
+      
+        json_result = apply_dpctl_cmd(self, config, "features")
+        #pprint(json_result)
+        result=json_result["RECEIVED"][1]
+        self.assertTrue(result["tabs"]==64, "Table size is not correct")
+        
+class get_config(base_tests.SimpleDataPlane):
+    def runTest(self):
+        delete_all_flows(self.controller)
+        delete_all_groups(self.controller)    
+		
+        test_ports = sorted(config["port_map"].keys())	
+      
+        json_result = apply_dpctl_cmd(self, config, "get-config")
+        #pprint(json_result)
+        result=json_result["RECEIVED"][1]
+        self.assertNotEqual(result["conf"], {}, "Config reply nothing")        
+        
+        
\ No newline at end of file
