From: paul Date: Fri, 23 May 2003 09:25:20 +0000 (+0000) Subject: From: Hasso Tepper X-Git-Tag: frr-2.0-rc1~4051 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=32d2463ca26529ad4700af6d5748f927e1305694;p=matthieu%2Ffrr.git 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 --- diff --git a/lib/if.c b/lib/if.c index e1a18393bd..2ca8c94bb0 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 554126fded..9ffe74cfbf 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 8b50b5ab74..04609ba8aa 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 482ef6fcd2..ed4b4fd185 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 c177381a62..369c3d6fb7 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 be1f03e4d5..f6ab603558 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 ed3ece2580..c9f713208b 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; }