isisd: move old BFD command to fabricd only

The `isisd` will receive a northbound version of the BFD command, so
this is the first step to implement it.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
Rafael Zalamena 2019-06-12 15:18:19 -03:00
parent af13de0af6
commit f2971ce34b
6 changed files with 71 additions and 147 deletions

View File

@ -53,4 +53,6 @@ void fabricd_update_lsp_no_flood(struct isis_lsp *lsp,
void fabricd_configure_triggered_csnp(struct isis_area *area, int delay,
bool always_send_csnp);
void fabricd_init(void);
void isis_vty_daemon_init(void);
#endif

View File

@ -53,7 +53,6 @@
#include "isisd/isis_zebra.h"
#include "isisd/isis_te.h"
#include "isisd/isis_errors.h"
#include "isisd/isis_vty_common.h"
#include "isisd/isis_bfd.h"
#include "isisd/isis_lsp.h"
#include "isisd/isis_mt.h"
@ -230,7 +229,9 @@ int main(int argc, char **argv, char **envp)
prefix_list_init();
isis_init();
isis_circuit_init();
isis_vty_init();
#ifdef FABRICD
isis_vty_daemon_init();
#endif /* FABRICD */
#ifndef FABRICD
isis_cli_init();
#endif /* ifdef FABRICD */

View File

@ -1,109 +0,0 @@
/*
* IS-IS Rout(e)ing protocol - isis_vty_common.c
*
* This file contains the CLI that is shared between OpenFabric and IS-IS
*
* Copyright (C) 2001,2002 Sampo Saaristo
* Tampere University of Technology
* Institute of Communications Engineering
* Copyright (C) 2016 David Lamparter, for NetDEF, Inc.
* Copyright (C) 2018 Christian Franke, for NetDEF, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public Licenseas published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; see the file COPYING; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <zebra.h>
#include "command.h"
#include "bfd.h"
#include "isis_circuit.h"
#include "isis_csm.h"
#include "isis_misc.h"
#include "isisd.h"
#include "isis_bfd.h"
#include "isis_vty_common.h"
struct isis_circuit *isis_circuit_lookup(struct vty *vty)
{
struct interface *ifp = VTY_GET_CONTEXT(interface);
struct isis_circuit *circuit;
if (!ifp) {
vty_out(vty, "Invalid interface \n");
return NULL;
}
circuit = circuit_scan_by_ifp(ifp);
if (!circuit) {
vty_out(vty, "ISIS is not enabled on circuit %s\n", ifp->name);
return NULL;
}
return circuit;
}
DEFUN (isis_bfd,
isis_bfd_cmd,
PROTO_NAME " bfd",
PROTO_HELP
"Enable BFD support\n")
{
struct isis_circuit *circuit = isis_circuit_lookup(vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
if (circuit->bfd_info
&& CHECK_FLAG(circuit->bfd_info->flags, BFD_FLAG_PARAM_CFG)) {
return CMD_SUCCESS;
}
isis_bfd_circuit_param_set(circuit, BFD_DEF_MIN_RX,
BFD_DEF_MIN_TX, BFD_DEF_DETECT_MULT, true);
return CMD_SUCCESS;
}
DEFUN (no_isis_bfd,
no_isis_bfd_cmd,
"no " PROTO_NAME " bfd",
NO_STR
PROTO_HELP
"Disables BFD support\n"
)
{
struct isis_circuit *circuit = isis_circuit_lookup(vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
if (!circuit->bfd_info)
return CMD_SUCCESS;
isis_bfd_circuit_cmd(circuit, ZEBRA_BFD_DEST_DEREGISTER);
bfd_info_free(&circuit->bfd_info);
return CMD_SUCCESS;
}
void isis_vty_init(void)
{
install_element(INTERFACE_NODE, &isis_bfd_cmd);
install_element(INTERFACE_NODE, &no_isis_bfd_cmd);
#ifdef FABRICD
isis_vty_daemon_init();
#endif /* ifdef FABRICD */
}

View File

@ -1,32 +0,0 @@
/*
* IS-IS Rout(e)ing protocol - isis_vty_common.h
*
* Copyright (C) 2001,2002 Sampo Saaristo
* Tampere University of Technology
* Institute of Communications Engineering
* Copyright (C) 2016 David Lamparter, for NetDEF, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public Licenseas published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; see the file COPYING; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef ISIS_VTY_COMMON_H
#define ISIS_VTY_COMMON_H
struct isis_circuit *isis_circuit_lookup(struct vty *vty);
void isis_vty_daemon_init(void);
void isis_vty_init(void);
#endif

View File

@ -23,8 +23,9 @@
#include "command.h"
#include "lib/bfd.h"
#include "isisd/isis_bfd.h"
#include "isisd/isisd.h"
#include "isisd/isis_vty_common.h"
#include "isisd/fabricd.h"
#include "isisd/isis_tlvs.h"
#include "isisd/isis_misc.h"
@ -34,6 +35,25 @@
#include "lib/spf_backoff.h"
#include "isisd/isis_mt.h"
static struct isis_circuit *isis_circuit_lookup(struct vty *vty)
{
struct interface *ifp = VTY_GET_CONTEXT(interface);
struct isis_circuit *circuit;
if (!ifp) {
vty_out(vty, "Invalid interface \n");
return NULL;
}
circuit = circuit_scan_by_ifp(ifp);
if (!circuit) {
vty_out(vty, "ISIS is not enabled on circuit %s\n", ifp->name);
return NULL;
}
return circuit;
}
DEFUN (fabric_tier,
fabric_tier_cmd,
"fabric-tier (0-14)",
@ -288,6 +308,49 @@ DEFUN (no_ip_router_isis,
return CMD_SUCCESS;
}
DEFUN (isis_bfd,
isis_bfd_cmd,
PROTO_NAME " bfd",
PROTO_HELP
"Enable BFD support\n")
{
struct isis_circuit *circuit = isis_circuit_lookup(vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
if (circuit->bfd_info
&& CHECK_FLAG(circuit->bfd_info->flags, BFD_FLAG_PARAM_CFG)) {
return CMD_SUCCESS;
}
isis_bfd_circuit_param_set(circuit, BFD_DEF_MIN_RX,
BFD_DEF_MIN_TX, BFD_DEF_DETECT_MULT, true);
return CMD_SUCCESS;
}
DEFUN (no_isis_bfd,
no_isis_bfd_cmd,
"no " PROTO_NAME " bfd",
NO_STR
PROTO_HELP
"Disables BFD support\n"
)
{
struct isis_circuit *circuit = isis_circuit_lookup(vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
if (!circuit->bfd_info)
return CMD_SUCCESS;
isis_bfd_circuit_cmd(circuit, ZEBRA_BFD_DEST_DEREGISTER);
bfd_info_free(&circuit->bfd_info);
return CMD_SUCCESS;
}
DEFUN (set_overload_bit,
set_overload_bit_cmd,
"set-overload-bit",
@ -1045,6 +1108,8 @@ void isis_vty_daemon_init(void)
install_element(INTERFACE_NODE, &ip_router_isis_cmd);
install_element(INTERFACE_NODE, &ip6_router_isis_cmd);
install_element(INTERFACE_NODE, &no_ip_router_isis_cmd);
install_element(INTERFACE_NODE, &isis_bfd_cmd);
install_element(INTERFACE_NODE, &no_isis_bfd_cmd);
install_element(ROUTER_NODE, &set_overload_bit_cmd);
install_element(ROUTER_NODE, &no_set_overload_bit_cmd);

View File

@ -11,7 +11,6 @@ vtysh_scan += \
$(top_srcdir)/isisd/isis_redist.c \
$(top_srcdir)/isisd/isis_spf.c \
$(top_srcdir)/isisd/isis_te.c \
$(top_srcdir)/isisd/isis_vty_common.c \
$(top_srcdir)/isisd/isis_vty_fabricd.c \
$(top_srcdir)/isisd/isisd.c \
# end
@ -51,7 +50,6 @@ noinst_HEADERS += \
isisd/isis_te.h \
isisd/isis_tlvs.h \
isisd/isis_tx_queue.h \
isisd/isis_vty_common.h \
isisd/isis_zebra.h \
isisd/isisd.h \
isisd/iso_checksum.h \
@ -82,7 +80,6 @@ LIBISIS_SOURCES = \
isisd/isis_te.c \
isisd/isis_tlvs.c \
isisd/isis_tx_queue.c \
isisd/isis_vty_common.c \
isisd/isis_zebra.c \
isisd/isisd.c \
isisd/iso_checksum.c \