summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/if.c26
-rw-r--r--lib/if.h1
-rw-r--r--ospf6d/ospf6d.c1
-rw-r--r--ospfd/ospf_vty.c1
-rw-r--r--ripngd/ripng_interface.c1
-rw-r--r--vtysh/vtysh.c8
-rw-r--r--zebra/interface.c4
7 files changed, 40 insertions, 2 deletions
diff --git a/lib/if.c b/lib/if.c
index e1a18393..2ca8c94b 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -440,6 +440,32 @@ DEFUN (interface,
return CMD_SUCCESS;
}
+DEFUN_NOSH (no_interface,
+ no_interface_cmd,
+ "no interface IFNAME",
+ NO_STR
+ "Delete a pseudo interface's configuration\n"
+ "Interface's name\n")
+{
+ // deleting interface
+ struct interface *ifp;
+
+ ifp = if_lookup_by_name (argv[0]);
+
+ if (ifp == NULL)
+ return CMD_SUCCESS;
+
+ if (if_is_up(ifp)) {
+ vty_out (vty, "%% Only inactive interfaces can be deleted%s",
+ VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ if_delete(ifp);
+
+ return CMD_SUCCESS;
+}
+
/* For debug purpose. */
DEFUN (show_address,
show_address_cmd,
diff --git a/lib/if.h b/lib/if.h
index 554126fd..9ffe74cf 100644
--- a/lib/if.h
+++ b/lib/if.h
@@ -220,6 +220,7 @@ extern list iflist;
extern struct cmd_element interface_desc_cmd;
extern struct cmd_element no_interface_desc_cmd;
extern struct cmd_element interface_cmd;
+extern struct cmd_element no_interface_cmd;
extern struct cmd_element interface_pseudo_cmd;
extern struct cmd_element no_interface_pseudo_cmd;
diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c
index 8b50b5ab..04609ba8 100644
--- a/ospf6d/ospf6d.c
+++ b/ospf6d/ospf6d.c
@@ -729,6 +729,7 @@ ospf6_init ()
install_element (ENABLE_NODE, &reload_cmd);
install_element (CONFIG_NODE, &router_ospf6_cmd);
install_element (CONFIG_NODE, &interface_cmd);
+ install_element (CONFIG_NODE, &no_interface_cmd);
#ifdef OSPF6_STATISTICS
install_element (VIEW_NODE, &show_ipv6_ospf6_statistics_cmd);
install_element (ENABLE_NODE, &show_ipv6_ospf6_statistics_cmd);
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 482ef6fc..ed4b4fd1 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -7377,6 +7377,7 @@ ospf_vty_if_init ()
install_node (&interface_node, config_write_interface);
install_element (CONFIG_NODE, &interface_cmd);
+ install_element (CONFIG_NODE, &no_interface_cmd);
install_default (INTERFACE_NODE);
/* "description" commands. */
diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c
index c177381a..369c3d6f 100644
--- a/ripngd/ripng_interface.c
+++ b/ripngd/ripng_interface.c
@@ -822,6 +822,7 @@ ripng_if_init ()
install_node (&interface_node, interface_config_write);
install_element (CONFIG_NODE, &interface_cmd);
+ install_element (CONFIG_NODE, &no_interface_cmd);
install_element (INTERFACE_NODE, &config_end_cmd);
install_element (INTERFACE_NODE, &config_exit_cmd);
install_element (INTERFACE_NODE, &config_help_cmd);
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index be1f03e4..f6ab6035 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -1165,6 +1165,13 @@ DEFUNSH (VTYSH_ZEBRA|VTYSH_RIPD|VTYSH_OSPFD|VTYSH_OSPF6D,
return CMD_SUCCESS;
}
+DEFSH (VTYSH_ZEBRA|VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D,
+ vtysh_no_interface_cmd,
+ "no interface IFNAME",
+ NO_STR
+ "Delete a pseudo interface's configuration\n"
+ "Interface's name\n")
+
DEFSH (VTYSH_ZEBRA|VTYSH_RIPD|VTYSH_OSPFD,
interface_desc_cmd,
"description .LINE",
@@ -1838,6 +1845,7 @@ vtysh_init_vty ()
install_element (KEYCHAIN_NODE, &key_chain_cmd);
install_element (KEYCHAIN_KEY_NODE, &key_chain_cmd);
install_element (CONFIG_NODE, &vtysh_interface_cmd);
+ install_element (CONFIG_NODE, &vtysh_no_interface_cmd);
install_element (ENABLE_NODE, &vtysh_show_running_config_cmd);
install_element (ENABLE_NODE, &vtysh_copy_runningconfig_startupconfig_cmd);
install_element (ENABLE_NODE, &vtysh_write_file_cmd);
diff --git a/zebra/interface.c b/zebra/interface.c
index ed3ece25..c9f71320 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -674,7 +674,7 @@ DEFUN_NOSH (zebra_interface,
return ret;
}
-DEFUN (no_zebra_interface,
+DEFUN_NOSH (no_zebra_interface,
no_zebra_interface_cmd,
"no interface IFNAME",
"Delete a pseudo interface's configuration\n"
@@ -694,7 +694,7 @@ DEFUN (no_zebra_interface,
if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE))
{
- vty_out(vty, "Only inactive interfaces can be deleted%s", VTY_NEWLINE);
+ vty_out(vty, "%% Only inactive interfaces can be deleted%s", VTY_NEWLINE);
return CMD_WARNING;
}