diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index b546bbd..07e2b15 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,8 @@
+2005-08-21 Hasso Tepper <hasso at quagga.net>
+
+	* ospf_vty.c: Make "show ip ospf neighbor xxx" commands work.
+	  Interface should be specified by name now.
+
 2005-08-17 Hasso Tepper <hasso at quagga.net>
 
 	* ospf_vty.c: Check carefully if interface exists before trying to
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 0f2a0fc..1c1f2fc 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -2835,7 +2835,7 @@
 
 DEFUN (show_ip_ospf_neighbor_int,
        show_ip_ospf_neighbor_int_cmd,
-       "show ip ospf neighbor A.B.C.D",
+       "show ip ospf neighbor IFNAME",
        SHOW_STR
        IP_STR
        "OSPF information\n"
@@ -2843,15 +2843,13 @@
        "Interface name\n")
 {
   struct ospf *ospf;
-  struct ospf_interface *oi;
-  struct in_addr addr;
-  int ret;
-  
-  ret = inet_aton (argv[0], &addr);
-  if (!ret)
+  struct interface *ifp;
+  struct route_node *rn;
+ 
+  ifp = if_lookup_by_name (argv[0]);
+  if (!ifp)
     {
-      vty_out (vty, "Please specify interface address by A.B.C.D%s",
-	       VTY_NEWLINE);
+      vty_out (vty, "No such interface.%s", VTY_NEWLINE);
       return CMD_WARNING;
     }
 
@@ -2862,13 +2860,17 @@
       return CMD_SUCCESS;
     }
 
-  if ((oi = ospf_if_is_configured (ospf, &addr)) == NULL)
-    vty_out (vty, "No such interface address%s", VTY_NEWLINE);
-  else
+  vty_out (vty, "%sNeighbor ID     Pri   State           Dead "
+           "Time   Address         Interface           RXmtL "
+           "RqstL DBsmL%s", VTY_NEWLINE, VTY_NEWLINE);
+
+  for (rn = route_top (IF_OIFS (ifp)); rn; rn = route_next (rn))
     {
-      vty_out (vty, "%sNeighbor ID     Pri   State           Dead "
-               "Time   Address         Interface           RXmtL "
-               "RqstL DBsmL%s", VTY_NEWLINE, VTY_NEWLINE);
+      struct ospf_interface *oi = rn->info;
+
+      if (oi == NULL)
+	continue;
+
       show_ip_ospf_neighbor_sub (vty, oi);
     }
 
@@ -3090,24 +3092,24 @@
 
 DEFUN (show_ip_ospf_neighbor_int_detail,
        show_ip_ospf_neighbor_int_detail_cmd,
-       "show ip ospf neighbor A.B.C.D detail",
+       "show ip ospf neighbor IFNAME detail",
        SHOW_STR
        IP_STR
        "OSPF information\n"
        "Neighbor list\n"
-       "Interface address\n"
+       "Interface name\n"
        "detail of all neighbors")
 {
   struct ospf *ospf;
   struct ospf_interface *oi;
-  struct in_addr addr;
-  int ret;
-  
-  ret = inet_aton (argv[0], &addr);
-  if (!ret)
+  struct interface *ifp;
+  struct route_node *rn, *nrn;
+  struct ospf_neighbor *nbr;
+
+  ifp = if_lookup_by_name (argv[0]);
+  if (!ifp)
     {
-      vty_out (vty, "Please specify interface address by A.B.C.D%s",
-	       VTY_NEWLINE);
+      vty_out (vty, "No such interface.%s", VTY_NEWLINE);
       return CMD_WARNING;
     }
 
@@ -3118,19 +3120,14 @@
       return CMD_SUCCESS;
     }
 
-  if ((oi = ospf_if_is_configured (ospf, &addr)) == NULL)
-    vty_out (vty, "No such interface address%s", VTY_NEWLINE);
-  else
-    {
-      struct route_node *rn;
-      struct ospf_neighbor *nbr;
 
-      for (rn = route_top (oi->nbrs); rn; rn = route_next (rn))
-	if ((nbr = rn->info))
+  for (rn = route_top (IF_OIFS (ifp)); rn; rn = route_next (rn))
+    if ((oi = rn->info))
+      for (nrn = route_top (oi->nbrs); nrn; nrn = route_next (nrn))
+	if ((nbr = nrn->info))
 	  if (nbr != oi->nbr_self)
 	    if (nbr->state != NSM_Down)
 	      show_ip_ospf_neighbor_detail_sub (vty, oi, nbr);
-    }
 
   return CMD_SUCCESS;
 }
