ospfd: Change struct ospf_path *oi to ifindex.

* global: In struct ospf_path, change struct ospf_interface *oi to int
  ifindex.  It is unsafe to reference *oi as an ospf interface can be
  deleted under your feet. Use a weak reference instead.
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);
               }
            }