diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 2e4b607..7c3dec8 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -7138,15 +7138,15 @@
         if (or->type == OSPF_DESTINATION_NETWORK)
           for (ALL_LIST_ELEMENTS (or->paths, pnode, pnnode, path))
             {
-              if (path->oi != NULL && ospf_if_exists(path->oi))
+              if (if_lookup_by_index(path->ifindex))
                 {
                   if (path->nexthop.s_addr == 0)
                     vty_out (vty, "%24s   directly attached to %s%s",
-                             "", path->oi->ifp->name, VTY_NEWLINE);
+                             "", ifindex2ifname (path->ifindex), VTY_NEWLINE);
                   else
                     vty_out (vty, "%24s   via %s, %s%s", "",
-                             inet_ntoa (path->nexthop), path->oi->ifp->name,
-                             VTY_NEWLINE);
+                             inet_ntoa (path->nexthop),
+			     ifindex2ifname (path->ifindex), VTY_NEWLINE);
                 }
             }
       }
@@ -7188,15 +7188,17 @@
                   
                   for (ALL_LIST_ELEMENTS_RO (or->paths, pnode, path))
                     {
-		      if (path->oi != NULL && ospf_if_exists(path->oi))
+		      if (if_lookup_by_index(path->ifindex))
 			{
 			  if (path->nexthop.s_addr == 0)
 			    vty_out (vty, "%24s   directly attached to %s%s",
-				     "", path->oi->ifp->name, VTY_NEWLINE);
+				     "", ifindex2ifname (path->ifindex),
+				     VTY_NEWLINE);
 			  else
 			    vty_out (vty, "%24s   via %s, %s%s", "",
 				     inet_ntoa (path->nexthop),
-				     path->oi->ifp->name, VTY_NEWLINE);
+				     ifindex2ifname (path->ifindex),
+				     VTY_NEWLINE);
 			}
                     }
           }
@@ -7235,14 +7237,15 @@
 
         for (ALL_LIST_ELEMENTS (er->paths, pnode, pnnode, path))
           {
-            if (path->oi != NULL && ospf_if_exists(path->oi))
+            if (if_lookup_by_index(path->ifindex))
               {
                 if (path->nexthop.s_addr == 0)
                   vty_out (vty, "%24s   directly attached to %s%s",
-                           "", path->oi->ifp->name, VTY_NEWLINE);
+                           "", ifindex2ifname (path->ifindex), VTY_NEWLINE);
                 else
                   vty_out (vty, "%24s   via %s, %s%s", "",
-                           inet_ntoa (path->nexthop), path->oi->ifp->name,
+                           inet_ntoa (path->nexthop),
+			   ifindex2ifname (path->ifindex),
                            VTY_NEWLINE);
               }
            }
