summaryrefslogtreecommitdiff
path: root/zebra/zebra_srv6_vty.c
diff options
context:
space:
mode:
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2022-08-23 16:20:07 +0200
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2022-10-18 16:08:24 +0200
commit34e3711fb49212bc643a238d8a1e285a2fd5980d (patch)
treec4ea2407b710a785c1fc69e9866c0145b472a738 /zebra/zebra_srv6_vty.c
parentb3c5e11c8df2c7ec8f9e9a74c89dd5222ed35848 (diff)
zebra: Ensure SRv6 SID length does not exceed 128
According to RFC 8986, the SRv6 SID length cannot exceed 128 bits. This commit ensures that the condition `block_len + node_len + function_len + arg_len <= 128` is satisfied when a new SRv6 locator is created. Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'zebra/zebra_srv6_vty.c')
-rw-r--r--zebra/zebra_srv6_vty.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/zebra/zebra_srv6_vty.c b/zebra/zebra_srv6_vty.c
index 09c0a9af59..e00f974e77 100644
--- a/zebra/zebra_srv6_vty.c
+++ b/zebra/zebra_srv6_vty.c
@@ -311,6 +311,13 @@ DEFPY (locator_prefix,
}
}
+ if (prefix->prefixlen + func_bit_len + 0 > 128) {
+ vty_out(vty,
+ "%% prefix-len + function-len + arg-len (%ld) cannot be greater than 128\n",
+ prefix->prefixlen + func_bit_len + 0);
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
locator->block_bits_length = block_bit_len;
locator->node_bits_length = node_bit_len;
locator->function_bits_length = func_bit_len;