diff options
-rw-r--r-- | lib/if.c | 26 | ||||
-rw-r--r-- | lib/if.h | 1 | ||||
-rw-r--r-- | ospf6d/ospf6d.c | 1 | ||||
-rw-r--r-- | ospfd/ospf_vty.c | 1 | ||||
-rw-r--r-- | ripngd/ripng_interface.c | 1 | ||||
-rw-r--r-- | vtysh/vtysh.c | 8 | ||||
-rw-r--r-- | zebra/interface.c | 4 |
7 files changed, 40 insertions, 2 deletions
@@ -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, @@ -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; } |