diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index f25e7c8..a1af72f 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,9 @@
+2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* ospf_vty.c (show_ip_ospf_interface_sub): Display interface MTU and
+	bandwidth; this is useful for debugging problems.  Also, the function
+	should be static.
+
 2005-03-27 Hasso Tepper <hasso at quagga.net>
 
 	* ospf_snmp.c: Don't crash in snmp query if ospf instance doesn't
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index e3f8f1b..1d2550d 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -2570,40 +2570,34 @@
 }
 
 
-void
+static void
 show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf,
 			    struct interface *ifp)
 {
+  int is_up;
   struct ospf_neighbor *nbr;
-  int oi_count;
   struct route_node *rn;
   char buf[9];
 
-  oi_count = ospf_oi_count (ifp);
-  
   /* Is interface up? */
-  if (if_is_operative (ifp)) {
-  	vty_out (vty, "%s is up%s", ifp->name, VTY_NEWLINE);
-  } else
-  	{
-  		vty_out (vty, "%s is down%s", ifp->name, VTY_NEWLINE);
-
-      
-      if (oi_count == 0)
-	vty_out (vty, "  OSPF not enabled on this interface%s", VTY_NEWLINE);
-      else
-	vty_out (vty, "  OSPF is enabled, but not running on this interface%s",
-		 VTY_NEWLINE);
-      return;
-    }
+  vty_out (vty, "%s is %s%s", ifp->name,
+	   ((is_up = if_is_operative(ifp)) ? "up" : "down"), VTY_NEWLINE);
+  vty_out (vty, "  MTU %u bytes, BW %u Kbit%s",
+  	   ifp->mtu, ifp->bandwidth, VTY_NEWLINE);
 
   /* Is interface OSPF enabled? */
-  if (oi_count == 0)
+  if (ospf_oi_count(ifp) == 0)
     {
       vty_out (vty, "  OSPF not enabled on this interface%s", VTY_NEWLINE);
       return;
     }
-  
+  else if (!is_up)
+    {
+      vty_out (vty, "  OSPF is enabled, but not running on this interface%s",
+	       VTY_NEWLINE);
+      return;
+    }
+
   for (rn = route_top (IF_OIFS (ifp)); rn; rn = route_next (rn))
     {
       struct ospf_interface *oi = rn->info;
