From 32d2463ca26529ad4700af6d5748f927e1305694 Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 23 May 2003 09:25:20 +0000 Subject: From: Hasso Tepper Add the 'no interface' command to all the daemons and vtysh. now it's possible to delete interface from routeing daemons as well only if it doesn't exist in os. http://hasso.linux.ee/zebra/ht-no_interface_fix.patch --- lib/if.c | 26 ++++++++++++++++++++++++++ lib/if.h | 1 + ospf6d/ospf6d.c | 1 + ospfd/ospf_vty.c | 1 + ripngd/ripng_interface.c | 1 + vtysh/vtysh.c | 8 ++++++++ zebra/interface.c | 4 ++-- 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; } -- cgit v1.2.1