diff --git a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
index 7e4b4bc..6bb2001 100644
--- a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
+++ b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
@@ -190,7 +190,24 @@
 
     @Override
     public DeviceId tunBridge() {
-        return tunBridge;
+
+        if (mode == PASSTHROUGH) {
+            K8sHostService hostService =
+                    DefaultServiceDirectory.getService(K8sHostService.class);
+            DeviceId deviceId = null;
+            for (K8sHost host : hostService.hosts()) {
+                if (host.nodeNames().contains(hostname())) {
+                    for (K8sTunnelBridge bridge : host.tunBridges()) {
+                        if (bridge.tunnelId() == segmentId()) {
+                            deviceId = bridge.deviceId();
+                        }
+                    }
+                }
+            }
+            return deviceId;
+        } else {
+            return tunBridge;
+        }
     }
 
     @Override
@@ -403,7 +420,28 @@
 
     @Override
     public PortNumber tunToIntgPortNum() {
-        return portNumber(tunBridge, tunToIntgPatchPortName());
+        if (mode() == PASSTHROUGH) {
+            K8sHostService hostService =
+                    DefaultServiceDirectory.getService(K8sHostService.class);
+            Port port = null;
+            for (K8sHost host : hostService.hosts()) {
+                if (host.nodeNames().contains(hostname())) {
+                    for (K8sTunnelBridge bridge : host.tunBridges()) {
+                        if (bridge.tunnelId() == segmentId()) {
+                            port = port(bridge.deviceId(), tunToIntgPatchPortName());
+                        }
+                    }
+                }
+            }
+
+            if (port == null) {
+                return null;
+            } else {
+                return port.number();
+            }
+        } else {
+            return portNumber(tunBridge, tunToIntgPatchPortName());
+        }
     }
 
     @Override
