diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VTNManager.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VTNManager.java
index 9213a84..53fa64a 100644
--- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VTNManager.java
+++ b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VTNManager.java
@@ -583,19 +583,22 @@
                             .behaviour(BridgeConfig.class);
                     Collection<BridgeDescription> bridgeDescriptions = bridgeConfig
                             .getBridges();
-                    Set<PortNumber> ports = bridgeConfig.getPortNumbers();
                     Iterator<BridgeDescription> it = bridgeDescriptions
                             .iterator();
-                    if (it.hasNext()) {
+                    while (it.hasNext()) {
                         BridgeDescription sw = it.next();
-                        ports.stream()
-                                .filter(p -> p.name()
-                                        .equalsIgnoreCase(tunnelName))
-                                .forEach(p -> {
-                            l2ForwardService.programTunnelOut(sw.deviceId(),
-                                                              segmentationId, p,
-                                                              dstMac, type, ipAddress);
-                        });
+                        if (sw.bridgeName().name().equals(VtnConfig.DEFAULT_BRIDGE_NAME)) {
+                            List<Port> ports = deviceService.getPorts(sw.deviceId());
+                            ports.stream()
+                                    .filter(p -> p.annotations().value(AnnotationKeys.PORT_NAME)
+                                            .equalsIgnoreCase(tunnelName))
+                                    .forEach(p -> {
+                                l2ForwardService.programTunnelOut(sw.deviceId(),
+                                                                  segmentationId, p.number(),
+                                                                  dstMac, type, ipAddress);
+                            });
+                            break;
+                        }
                     }
                 });
     }
