summaryrefslogtreecommitdiff
path: root/zebra/zebra_srv6_vty.c
diff options
context:
space:
mode:
authorHiroki Shirokura <slank.dev@gmail.com>2020-12-29 07:30:47 +0000
committerMark Stapp <mjs@voltanet.io>2021-06-02 10:24:48 -0400
commitdaedb8b3cfee5639d9997b1a0c3193b31bfbb5ad (patch)
tree3e7db7edc218855f3bbf2c3e557fce22da72df17 /zebra/zebra_srv6_vty.c
parent7de4c88525f9f234fbf68f7fdbd7fcdf4fc2aacd (diff)
zebra: rewrite locator_prefix_cmd with DEFPY
Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
Diffstat (limited to 'zebra/zebra_srv6_vty.c')
-rw-r--r--zebra/zebra_srv6_vty.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/zebra/zebra_srv6_vty.c b/zebra/zebra_srv6_vty.c
index e2685141bb..0bc48f6339 100644
--- a/zebra/zebra_srv6_vty.c
+++ b/zebra/zebra_srv6_vty.c
@@ -40,6 +40,10 @@
#include "zebra/zebra_routemap.h"
#include "zebra/zebra_dplane.h"
+#ifndef VTYSH_EXTRACT_PL
+#include "zebra/zebra_srv6_vty_clippy.c"
+#endif
+
static int zebra_sr_config(struct vty *vty);
static struct cmd_node sr_node = {
@@ -229,37 +233,24 @@ DEFUN_NOSH (srv6_locator,
return CMD_SUCCESS;
}
-DEFUN (locator_prefix,
+DEFPY (locator_prefix,
locator_prefix_cmd,
- "prefix X:X::X:X/M [func-bits (8-64)]",
+ "prefix X:X::X:X/M$prefix [func-bits (16-64)$func_bit_len]",
"Configure SRv6 locator prefix\n"
"Specify SRv6 locator prefix\n"
"Configure SRv6 locator function length in bits\n"
"Specify SRv6 locator function length in bits\n")
{
VTY_DECLVAR_CONTEXT(srv6_locator, locator);
- struct prefix_ipv6 prefix;
struct srv6_locator_chunk *chunk = NULL;
struct listnode *node = NULL;
- uint8_t function_bits_length = 16;
- int ret;
-
- ret = str2prefix_ipv6(argv[1]->arg, &prefix);
- if (ret <= 0) {
- vty_out(vty, "%% Malformed address\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
- apply_mask_ipv6(&prefix);
-
- if (argc >= 3)
- function_bits_length = strtoul(argv[3]->arg, NULL, 10);
- locator->prefix = prefix;
- locator->function_bits_length = function_bits_length;
+ locator->prefix = *prefix;
+ locator->function_bits_length = func_bit_len;
if (list_isempty(locator->chunks)) {
chunk = srv6_locator_chunk_alloc();
- chunk->prefix = prefix;
+ chunk->prefix = *prefix;
chunk->proto = 0;
listnode_add(locator->chunks, chunk);
} else {
@@ -270,7 +261,7 @@ DEFUN (locator_prefix,
struct zserv *client;
struct listnode *client_node;
- chunk->prefix = prefix;
+ chunk->prefix = *prefix;
for (ALL_LIST_ELEMENTS_RO(zrouter.client_list,
client_node,
client)) {