diff --git a/TestON/drivers/common/cli/networkdriver.py b/TestON/drivers/common/cli/networkdriver.py
index b1dfd78..2b70be6 100755
--- a/TestON/drivers/common/cli/networkdriver.py
+++ b/TestON/drivers/common/cli/networkdriver.py
@@ -519,7 +519,6 @@
             failedPings = 0
             hostPairs = itertools.permutations( list( hostComponentList ), 2 )
             for hostPair in list( hostPairs ):
-                pingResponse += hostPair[ 0 ].options[ 'shortName' ] + " -> "
                 ipDst = hostPair[ 1 ].options.get( 'ip6', hostPair[ 1 ].options[ 'ip' ] ) if ipv6 else hostPair[ 1 ].options[ 'ip' ]
                 srcIface = hostPair[ 0 ].interfaces[0].get( 'name' )
                 dstIface = hostPair[ 1 ].interfaces[0].get( 'name' )
@@ -529,60 +528,76 @@
                     main.log.debug( "Pinging from " + str( hostPair[ 0 ].shortName ) + " to " + str( hostPair[ 1 ].shortName ) )
                     srcIPs = hostPair[ 0 ].interfaces[0].get( 'ips' )
                     dstIPs = hostPair[ 1 ].interfaces[0].get( 'ips' )
-                    srcVLANs = hostPair[0].interfaces[0].get( 'vlan' )
-                    if srcVLANs:
-                        VLAN = srcVLANs[0]
-                    else:
-                        VLAN=None
-                    dstVLANs = hostPair[1].interfaces[0].get( 'vlan' )
-                    # Use scapy to send and recieve packets
-                    hostPair[ 1 ].startScapy( ifaceName=dstIface )
-                    hostPair[ 1 ].addRoutes()
-                    filters = []
-                    if srcMac:
-                        filters.append( "ether src host %s" % srcMac )
-                    if srcIPs[0]:
-                        filters.append( "ip src host %s" % srcIPs[0] )
-                    hostPair[ 1 ].startFilter( ifaceName=dstIface, pktFilter=" and ".join(filters) )
-                    hostPair[ 0 ].startScapy( ifaceName=srcIface )
-                    hostPair[ 0 ].addRoutes()
-                    hostPair[ 0 ].buildEther( src=srcMac, dst=dstMac )
-                    if VLAN:
-                        hostPair[ 0 ].buildVLAN( vlan=VLAN )
-                    hostPair[ 0 ].buildIP( src=srcIPs[0], dst=dstIPs[0] )
-                    hostPair[ 0 ].buildICMP( vlan=VLAN )
-                    hostPair[ 0 ].sendPacket( iface=srcIface )
+                    srcVLANs = hostPair[0].interfaces[0].get( 'vlan', [None] )
+                    main.log.debug( srcVLANs )
+                    for VLAN in srcVLANs:
+                        pingResponse += hostPair[ 0 ].options[ 'shortName' ]
+                        if VLAN:
+                            pingResponse += "." + str( VLAN )
+                        pingResponse += " -> "
+                        main.log.debug( VLAN )
+                        dstVLANs = hostPair[1].interfaces[0].get( 'vlan' )
+                        # Use scapy to send and recieve packets
+                        hostPair[ 1 ].startScapy( ifaceName=dstIface )
+                        hostPair[ 1 ].addRoutes()
+                        filters = []
+                        if srcMac:
+                            filters.append( "ether src host %s" % srcMac )
+                        if srcIPs[0]:
+                            filters.append( "ip src host %s" % srcIPs[0] )
+                        hostPair[ 1 ].startFilter( ifaceName=dstIface, pktFilter=" and ".join(filters) )
+                        hostPair[ 0 ].startScapy( ifaceName=srcIface )
+                        hostPair[ 0 ].addRoutes()
+                        hostPair[ 0 ].buildEther( src=srcMac, dst=dstMac )
+                        if VLAN:
+                            hostPair[ 0 ].buildVLAN( vlan=VLAN )
+                        hostPair[ 0 ].buildIP( src=srcIPs[0], dst=dstIPs[0] )
+                        hostPair[ 0 ].buildICMP( vlan=VLAN )
+                        hostPair[ 0 ].sendPacket( iface=srcIface )
 
-                    waiting = not hostPair[ 1 ].checkFilter()
-                    if not waiting:
-                        pingResult = main.FALSE
-                        packets = hostPair[ 1 ].readPackets()
-                        main.log.warn( repr( packets ) )
-                        for packet in packets.splitlines():
-                            main.log.debug( packet )
-                            if srcIPs[0] in packet:
-                                pingResult = main.TRUE
-                    else:
-                        main.log.warn( "Did not receive packets, killing filter" )
-                        kill = hostPair[ 1 ].killFilter()
-                        main.log.debug( kill )
-                        hostPair[ 1 ].handle.sendline( "" )
-                        hostPair[ 1 ].handle.expect( hostPair[ 1 ].scapyPrompt )
-                        main.log.debug( hostPair[ 1 ].handle.before )
-                        # One of the host to host pair is unreachable
-                        pingResult = main.FALSE
-                    hostPair[ 0 ].stopScapy()
-                    hostPair[ 1 ].stopScapy()
+                        waiting = not hostPair[ 1 ].checkFilter()
+                        if not waiting:
+                            pingResult = main.FALSE
+                            packets = hostPair[ 1 ].readPackets()
+                            main.log.warn( repr( packets ) )
+                            for packet in packets.splitlines():
+                                main.log.debug( packet )
+                                if srcIPs[0] in packet:
+                                    pingResult = main.TRUE
+                        else:
+                            main.log.warn( "Did not receive packets, killing filter" )
+                            kill = hostPair[ 1 ].killFilter()
+                            main.log.debug( kill )
+                            hostPair[ 1 ].handle.sendline( "" )
+                            hostPair[ 1 ].handle.expect( hostPair[ 1 ].scapyPrompt )
+                            main.log.debug( hostPair[ 1 ].handle.before )
+                            # One of the host to host pair is unreachable
+                            pingResult = main.FALSE
+                        hostPair[ 0 ].stopScapy()
+                        hostPair[ 1 ].stopScapy()
+                        if pingResult:
+                            pingResponse += hostPair[ 1 ].options[ 'shortName' ]
+                            if VLAN:
+                                pingResponse += "." + str( VLAN )
+                        else:
+                            pingResponse += "X"
+                            # One of the host to host pair is unreachable
+                            isReachable = main.FALSE
+                            failedPings += 1
+                        pingResponse += "\n"
                 else:
+                    pingResponse += hostPair[ 0 ].options[ 'shortName' ] + " -> "
                     pingResult = hostPair[ 0 ].ping( ipDst, interface=srcIface, wait=int( wait ) )
-                if pingResult:
-                    pingResponse += hostPair[ 1 ].options[ 'shortName' ]
-                else:
-                    pingResponse += "X"
-                    # One of the host to host pair is unreachable
-                    isReachable = main.FALSE
-                    failedPings += 1
-                pingResponse += "\n"
+                    if pingResult:
+                        pingResponse += hostPair[ 1 ].options[ 'shortName' ]
+                        if VLAN:
+                            pingResponse += "." + str( VLAN )
+                    else:
+                        pingResponse += "X"
+                        # One of the host to host pair is unreachable
+                        isReachable = main.FALSE
+                        failedPings += 1
+                    pingResponse += "\n"
             main.log.info( pingResponse + "Failed pings: " + str( failedPings ) )
             return isReachable
         except Exception:
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
index 67b0d48..145a28b 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
@@ -1,5 +1,5 @@
 <PARAMS>
-    <testcases>6</testcases>
+    <testcases>6,16,26,36,46,56,66,76</testcases>
 
     <GRAPH>
         <nodeCluster>pairedleaves</nodeCluster>
@@ -24,7 +24,7 @@
         <lib>routinglib.py,trellislib.py,stratum.py</lib>
     </DEPENDENCY>
 
-    <jsonFileSuffix>.hw</jsonFileSuffix>
+    <jsonFileSuffix>.tucson</jsonFileSuffix>
 
     <persistent_setup>True</persistent_setup>
 
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
index 61ff208..5aa179c 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
@@ -66,7 +66,7 @@
             <COMPONENTS>
                 <mac></mac>
                 <inband>false</inband>
-                <dhcp>True</dhcp>
+                <dhcp>False</dhcp>
                 <ip>10.32.11.2</ip>
                 <shortName>h1</shortName>
                 <port1></port1>
@@ -95,7 +95,7 @@
             <COMPONENTS>
                 <mac></mac>
                 <inband>false</inband>
-                <dhcp>True</dhcp>
+                <dhcp>False</dhcp>
                 <ip>10.32.11.3</ip>
                 <shortName>h2</shortName>
                 <port1></port1>
@@ -124,7 +124,7 @@
             <COMPONENTS>
                 <mac></mac>
                 <inband>false</inband>
-                <dhcp>True</dhcp>
+                <dhcp>False</dhcp>
                 <ip>10.32.11.194</ip>
                 <shortName>h3</shortName>
                 <port1></port1>
@@ -152,7 +152,7 @@
             <COMPONENTS>
                 <mac></mac>
                 <inband>false</inband>
-                <dhcp>True</dhcp>
+                <dhcp>False</dhcp>
                 <ip>10.32.11.1</ip>
                 <shortName>mgmt</shortName>
                 <port1></port1>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
index e2b175f..098db74 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
@@ -59,6 +59,7 @@
             print (main.cfgName, "Testcase : CASE 09")
             main.Cluster.setRunningNode( onosNodes )
             run.installOnos( main, skipPackage=skipPackage, cliSleep=5 )
+            suf = main.params.get( 'jsonFileSuffix', None)
             if not main.persistentSetup:
                 if main.useBmv2:
                     switchPrefix = main.params[ 'DEPENDENCY' ].get( 'switchPrefix', '' )
@@ -69,7 +70,6 @@
                     translator.ofdpaToBmv2( main, switchPrefix=switchPrefix )
                 else:
                     translator.bmv2ToOfdpa( main )
-                suf = main.params.get( 'jsonFileSuffix', None)
                 if suf:
                     run.loadJson( main, suffix=suf )
                 else:
@@ -93,7 +93,7 @@
                 # Run the test with physical devices
                 run.connectToPhysicalNetwork( main, hostDiscovery=False )  # We don't want to do host discovery in the pod
                 if main.cfgName:
-                    returnValue = run.loadNewJson( main )
+                    returnValue = run.loadNewJson( main, suffix=suf )
                     utilities.assert_equals( expect=main.TRUE,
                                  actual=returnValue,
                                  onpass="Successfully changed network config",
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
index a10a0ca..093b740 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
@@ -28,7 +28,7 @@
                 "ips": [
                   "10.32.11.126/25"
                 ],
-                "vlan-untagged": 111,
+                "vlan-untagged":111,
                 "name": "compute-2-1"
               }
             ]
@@ -39,7 +39,7 @@
                 "ips": [
                   "10.32.11.126/25"
                 ],
-                "vlan-untagged": 111,
+                "vlan-untagged":111,
                 "name": "compute-2-2"
               }
             ]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json
index c755a30..db7bc19 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json
@@ -103,4 +103,4 @@
             ]
         }
     }
-}
\ No newline at end of file
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json.tucson
new file mode 100644
index 0000000..06c8e7f
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE16.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-tagged":[111],
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-tagged":[111],
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":[111],
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":[111],
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE26.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE26.json.tucson
new file mode 100644
index 0000000..b3cd310
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE26.json.tucson
@@ -0,0 +1,52 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-native":111,
+                    "vlan-tagged":[120],
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-native":111,
+                    "vlan-tagged":[120],
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-native":111,
+                "vlan-tagged":[120],
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-native":111,
+                "vlan-tagged":[120],
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE36.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE36.json.tucson
new file mode 100644
index 0000000..25059e5
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE36.json.tucson
@@ -0,0 +1,50 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-native":111,
+                    "vlan-tagged":[120],
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-native":111,
+                    "vlan-tagged":[120],
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-untagged":111,
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-untagged":111,
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE46.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE46.json.tucson
new file mode 100644
index 0000000..d2b7ed7
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE46.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":111,
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":111,
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE56.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE56.json.tucson
new file mode 100644
index 0000000..d1e47c8
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE56.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-untagged":120,
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-untagged":120,
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE66.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE66.json.tucson
new file mode 100644
index 0000000..615d33b
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE66.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-tagged":[111],
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-tagged":[111],
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":[120],
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":[120],
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE76.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE76.json.tucson
new file mode 100644
index 0000000..de1aa12
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE76.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":[120],
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-tagged":[120],
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 78be8ac..4ff3a85 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -75,7 +75,7 @@
             main.configPath = main.path + ( "/.." if main.useCommonConf else "" ) + "/dependencies/"
             main.bmv2Path = "/tools/dev/mininet/"
             main.forJson = "json/"
-            main.forcfg = "netcfg/"
+            # main.forcfg = "netcfg/"
             main.forChart = "chart/"
             main.forConfig = "conf/"
             main.forHost = "host/"
@@ -217,7 +217,7 @@
     @staticmethod
     def loadNewJson( main, suffix='' ):
         returnValue = main.TRUE
-        with open( "%s%s.cfg%s" % ( main.configPath + main.forcfg,
+        with open( "%s%s.json%s" % ( main.configPath + main.forJson,
                                      main.cfgName, suffix ) ) as cfg:
             desiredJSON = json.load ( cfg )
             for device in desiredJSON ["ports"].keys():
@@ -846,6 +846,8 @@
                 srcIface = hostComponent.interfaces[0].get( 'name' )
                 #Get host location, check netcfg for that port's ip
                 hostIp = hostComponent.getIPAddress( iface=srcIface )
+                if not hostIp:
+                    hostIp=hostComponent.interfaces[0].get( 'ips' )[0]
                 main.log.warn( "Looking for allowed vlans for %s" % hostIp )
                 vlans = []
                 for obj in hostsJson:
@@ -863,11 +865,13 @@
                             # vlanid if vlan-tagged: vlanid
                             # None if vlan-native + any vlan ids from vlan-tagged
                             intf = netcfgJson[ portId ][ 'interfaces' ][0]
+                            main.log.debug( intf )
                             for field in intf.keys():
                                 if "vlan-untagged" in field:
                                     vlans.append( None )
                                 if "vlan-tagged" in field:
-                                    vlans.append( int( intf[ field ].encode( 'utf-8' ) ) )
+                                    for VLAN in intf[ field ]:
+                                        vlans.append( VLAN )
                                 if "vlan-native" in field:
                                     vlans.append( None )
                             if len( vlans ) == 0:
