summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyoga Saito <ryoga.saito@linecorp.com>2022-09-20 18:24:50 +0900
committerRyoga Saito <ryoga.saito@linecorp.com>2022-10-07 11:34:20 +0900
commit85521aaabd26d58939279440c0ebce5e69c84cae (patch)
treed620212a10a21001a6e7b99fbd5941fad8afb0fe
parent0f926d91416be5cb874a2af4a733f116013bd93b (diff)
zebra: add default SRv6 Function length
Add default SRv6 Function Length for usecases like SRv6 L3VPN. The default value (16) comes from the default Function length for SRv6 L3VPN in BGPd. Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
-rw-r--r--zebra/zebra_srv6_vty.c11
-rw-r--r--zebra/zebra_srv6_vty.h4
2 files changed, 13 insertions, 2 deletions
diff --git a/zebra/zebra_srv6_vty.c b/zebra/zebra_srv6_vty.c
index 62ce17326c..0572714669 100644
--- a/zebra/zebra_srv6_vty.c
+++ b/zebra/zebra_srv6_vty.c
@@ -281,7 +281,14 @@ DEFPY (locator_prefix,
struct srv6_locator_chunk *chunk = NULL;
struct listnode *node = NULL;
+ if (prefix->prefixlen != 64) {
+ vty_out(vty,
+ "%% Invalid argument: Unsupported locator format\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
locator->prefix = *prefix;
+ func_bit_len = func_bit_len ?: ZEBRA_SRV6_FUNCTION_LENGTH;
/*
* TODO(slankdev): please support variable node-bit-length.
@@ -298,8 +305,8 @@ DEFPY (locator_prefix,
* user should use a pattern of zeros as a filler.
* (3) The Node Id portion (LSBs) cannot exceed 24 bits.
*/
- locator->block_bits_length = prefix->prefixlen - 24;
- locator->node_bits_length = 24;
+ locator->block_bits_length = ZEBRA_SRV6_LOCATOR_BLOCK_LENGTH;
+ locator->node_bits_length = ZEBRA_SRV6_LOCATOR_NODE_LENGTH;
locator->function_bits_length = func_bit_len;
locator->argument_bits_length = 0;
diff --git a/zebra/zebra_srv6_vty.h b/zebra/zebra_srv6_vty.h
index 42d6aefa9a..2f8b5048d5 100644
--- a/zebra/zebra_srv6_vty.h
+++ b/zebra/zebra_srv6_vty.h
@@ -20,6 +20,10 @@
#ifndef _ZEBRA_SRV6_VTY_H
#define _ZEBRA_SRV6_VTY_H
+#define ZEBRA_SRV6_LOCATOR_BLOCK_LENGTH 40
+#define ZEBRA_SRV6_LOCATOR_NODE_LENGTH 24
+#define ZEBRA_SRV6_FUNCTION_LENGTH 16
+
extern void zebra_srv6_vty_init(void);
#endif /* _ZEBRA_SRV6_VTY_H */