summaryrefslogtreecommitdiff
path: root/zebra/zebra_srv6_vty.c
diff options
context:
space:
mode:
authorHiroki Shirokura <slank.dev@gmail.com>2021-09-05 10:07:56 +0000
committerHiroki Shirokura <slank.dev@gmail.com>2021-09-07 12:54:39 +0000
commit0a735cd52361db3fe3e16c2de5aa1d132c75258e (patch)
treee92ebd695a03737b9621bb35bb92209d20f13280 /zebra/zebra_srv6_vty.c
parentf6e52a81dc310e7a3a97154a2a6edca6e06fc130 (diff)
zebra: add srv6's no commands
CURRENT_CONFIGURATION: configure terminal segment-routing srv6 locators locator loc1 locator loc2 locator loc3 CMD1: delete single locator configure terminal segment-routing srv6 locators no locator loc1 CMD2: delete srv6 whole config (== delete all locators) configure terminal segment-routing no srv6 Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
Diffstat (limited to 'zebra/zebra_srv6_vty.c')
-rw-r--r--zebra/zebra_srv6_vty.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/zebra/zebra_srv6_vty.c b/zebra/zebra_srv6_vty.c
index d2b91b6c07..cb1e6c4228 100644
--- a/zebra/zebra_srv6_vty.c
+++ b/zebra/zebra_srv6_vty.c
@@ -197,6 +197,21 @@ DEFUN_NOSH (srv6,
return CMD_SUCCESS;
}
+DEFUN (no_srv6,
+ no_srv6_cmd,
+ "no srv6",
+ NO_STR
+ "Segment Routing SRv6\n")
+{
+ struct zebra_srv6 *srv6 = zebra_srv6_get_default();
+ struct srv6_locator *locator;
+ struct listnode *node, *nnode;
+
+ for (ALL_LIST_ELEMENTS(srv6->locators, node, nnode, locator))
+ zebra_srv6_locator_delete(locator);
+ return CMD_SUCCESS;
+}
+
DEFUN_NOSH (srv6_locators,
srv6_locators_cmd,
"locators",
@@ -233,6 +248,23 @@ DEFUN_NOSH (srv6_locator,
return CMD_SUCCESS;
}
+DEFUN (no_srv6_locator,
+ no_srv6_locator_cmd,
+ "no locator WORD",
+ NO_STR
+ "Segment Routing SRv6 locator\n"
+ "Specify locator-name\n")
+{
+ struct srv6_locator *locator = zebra_srv6_locator_lookup(argv[2]->arg);
+ if (!locator) {
+ vty_out(vty, "%% Can't find SRv6 locator\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
+ zebra_srv6_locator_delete(locator);
+ return CMD_SUCCESS;
+}
+
DEFPY (locator_prefix,
locator_prefix_cmd,
"prefix X:X::X:X/M$prefix [func-bits (16-64)$func_bit_len]",
@@ -348,8 +380,10 @@ void zebra_srv6_vty_init(void)
/* Command for change node */
install_element(CONFIG_NODE, &segment_routing_cmd);
install_element(SEGMENT_ROUTING_NODE, &srv6_cmd);
+ install_element(SEGMENT_ROUTING_NODE, &no_srv6_cmd);
install_element(SRV6_NODE, &srv6_locators_cmd);
install_element(SRV6_LOCS_NODE, &srv6_locator_cmd);
+ install_element(SRV6_LOCS_NODE, &no_srv6_locator_cmd);
/* Command for configuration */
install_element(SRV6_LOC_NODE, &locator_prefix_cmd);