mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 13:37:17 +02:00

This commit is a part of #5853 that add new cmd-node for SRv6 configuration. This commit just add cmd-node and moving node cli only, acutual SRv6 config command isn't added. (that is added later commit. of this branch) new cli nodes: * SRv6 * SRv6-locators * SRv6-locator Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
133 lines
3.3 KiB
C
133 lines
3.3 KiB
C
/*
|
|
* Zebra SRv6 VTY functions
|
|
* Copyright (C) 2020 Hiroki Shirokura, LINE Corporation
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as 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 "memory.h"
|
|
#include "if.h"
|
|
#include "prefix.h"
|
|
#include "command.h"
|
|
#include "table.h"
|
|
#include "rib.h"
|
|
#include "nexthop.h"
|
|
#include "vrf.h"
|
|
#include "srv6.h"
|
|
#include "lib/json.h"
|
|
|
|
#include "zebra/zserv.h"
|
|
#include "zebra/zebra_vrf.h"
|
|
#include "zebra/zebra_srv6_vty.h"
|
|
#include "zebra/zebra_rnh.h"
|
|
#include "zebra/redistribute.h"
|
|
#include "zebra/zebra_routemap.h"
|
|
#include "zebra/zebra_dplane.h"
|
|
|
|
static int zebra_sr_config(struct vty *vty);
|
|
|
|
static struct cmd_node sr_node = {
|
|
.name = "sr",
|
|
.node = SEGMENT_ROUTING_NODE,
|
|
.parent_node = CONFIG_NODE,
|
|
.prompt = "%s(config-sr)# ",
|
|
.config_write = zebra_sr_config,
|
|
};
|
|
|
|
static struct cmd_node srv6_node = {
|
|
.name = "srv6",
|
|
.node = SRV6_NODE,
|
|
.parent_node = SEGMENT_ROUTING_NODE,
|
|
.prompt = "%s(config-srv6)# ",
|
|
|
|
};
|
|
|
|
static struct cmd_node srv6_locs_node = {
|
|
.name = "srv6-locators",
|
|
.node = SRV6_LOCS_NODE,
|
|
.parent_node = SRV6_NODE,
|
|
.prompt = "%s(config-srv6-locators)# ",
|
|
};
|
|
|
|
static struct cmd_node srv6_loc_node = {
|
|
.name = "srv6-locator",
|
|
.node = SRV6_LOC_NODE,
|
|
.parent_node = SRV6_LOCS_NODE,
|
|
.prompt = "%s(config-srv6-locator)# "
|
|
};
|
|
|
|
DEFUN_NOSH (segment_routing,
|
|
segment_routing_cmd,
|
|
"segment-routing",
|
|
"Segment Routing\n")
|
|
{
|
|
vty->node = SEGMENT_ROUTING_NODE;
|
|
return CMD_SUCCESS;
|
|
}
|
|
|
|
DEFUN_NOSH (srv6,
|
|
srv6_cmd,
|
|
"srv6",
|
|
"Segment Routing SRv6\n")
|
|
{
|
|
vty->node = SRV6_NODE;
|
|
return CMD_SUCCESS;
|
|
}
|
|
|
|
DEFUN_NOSH (srv6_locators,
|
|
srv6_locators_cmd,
|
|
"locators",
|
|
"Segment Routing SRv6 locators\n")
|
|
{
|
|
vty->node = SRV6_LOCS_NODE;
|
|
return CMD_SUCCESS;
|
|
}
|
|
|
|
DEFUN_NOSH (srv6_locator,
|
|
srv6_locator_cmd,
|
|
"locator WORD",
|
|
"Segment Routing SRv6 locator\n"
|
|
"Specify locator-name\n")
|
|
{
|
|
vty->node = SRV6_LOC_NODE;
|
|
return CMD_SUCCESS;
|
|
}
|
|
|
|
static int zebra_sr_config(struct vty *vty)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void zebra_srv6_vty_init(void)
|
|
{
|
|
/* Install nodes and its default commands */
|
|
install_node(&sr_node);
|
|
install_node(&srv6_node);
|
|
install_node(&srv6_locs_node);
|
|
install_node(&srv6_loc_node);
|
|
install_default(SEGMENT_ROUTING_NODE);
|
|
install_default(SRV6_NODE);
|
|
install_default(SRV6_LOCS_NODE);
|
|
install_default(SRV6_LOC_NODE);
|
|
|
|
/* Command for change node */
|
|
install_element(CONFIG_NODE, &segment_routing_cmd);
|
|
install_element(SEGMENT_ROUTING_NODE, &srv6_cmd);
|
|
install_element(SRV6_NODE, &srv6_locators_cmd);
|
|
install_element(SRV6_LOCS_NODE, &srv6_locator_cmd);
|
|
}
|