From: Hasso Tepper <hasso@estpak.ee>

ensure only interfaces that are inactive or do not exist can be deleted
diff --git a/lib/if.c b/lib/if.c
index 2ca8c94..f003754 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -453,9 +453,13 @@
   ifp = if_lookup_by_name (argv[0]);
 
   if (ifp == NULL)
-    return CMD_SUCCESS;
+  {
+    vty_out (vty, "%% Inteface %s does not exist%s", argv[0], VTY_NEWLINE);
+    return CMD_WARNING;
+  }
 
-  if (if_is_up(ifp)) {
+  if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) 
+  {
     vty_out (vty, "%% Only inactive interfaces can be deleted%s",
             VTY_NEWLINE);
     return CMD_WARNING;
diff --git a/zebra/interface.c b/zebra/interface.c
index c9f7132..f237431 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -674,36 +674,6 @@
   return ret;
 }
 
-DEFUN_NOSH (no_zebra_interface,
-       no_zebra_interface_cmd,
-       "no interface IFNAME",
-       "Delete a pseudo interface's configuration\n"
-       "Interface's name\n")
-{
-  struct interface *ifp;
-  
-  ifp = if_lookup_by_name(argv[0]);
-  
-  if (ifp == NULL) 
-    {
-      vty_out (vty, "Inteface %s does not exist%s", 
-              argv[0],
-              VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE))
-    {
-      vty_out(vty, "%% Only inactive interfaces can be deleted%s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  /* Delete interface */
-  if_delete(ifp);
-
-  return CMD_SUCCESS;
-} 
-
 struct cmd_node interface_node =
 {
   INTERFACE_NODE,
@@ -1431,7 +1401,7 @@
   install_element (VIEW_NODE, &show_interface_cmd);
   install_element (ENABLE_NODE, &show_interface_cmd);
   install_element (CONFIG_NODE, &zebra_interface_cmd);
-  install_element (CONFIG_NODE, &no_zebra_interface_cmd);
+  install_element (CONFIG_NODE, &no_interface_cmd);
   install_default (INTERFACE_NODE);
   install_element (INTERFACE_NODE, &interface_desc_cmd);
   install_element (INTERFACE_NODE, &no_interface_desc_cmd);