]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: rewrite locator_prefix_cmd with DEFPY
authorHiroki Shirokura <slank.dev@gmail.com>
Tue, 29 Dec 2020 07:30:47 +0000 (07:30 +0000)
committerMark Stapp <mjs@voltanet.io>
Wed, 2 Jun 2021 14:24:48 +0000 (10:24 -0400)
Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
zebra/subdir.am
zebra/zebra_srv6_vty.c

index 4d8115597bb92abab7b780aa3c29b31145c44bd3..70d8c4005d94b0f79ac9532253d556b160aeefa7 100644 (file)
@@ -131,6 +131,7 @@ clippy_scan += \
        zebra/zebra_mlag_vty.c \
        zebra/zebra_routemap.c \
        zebra/zebra_vty.c \
+       zebra/zebra_srv6_vty.c \
        # end
 
 noinst_HEADERS += \
index e2685141bb30065c252dd3611e2651a9d6ad76b2..0bc48f6339a55a687a6927f818c2de779e5ec64e 100644 (file)
 #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)) {