diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2022-08-23 16:20:07 +0200 |
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2022-10-18 16:08:24 +0200 |
| commit | 34e3711fb49212bc643a238d8a1e285a2fd5980d (patch) | |
| tree | c4ea2407b710a785c1fc69e9866c0145b472a738 /zebra/zebra_srv6_vty.c | |
| parent | b3c5e11c8df2c7ec8f9e9a74c89dd5222ed35848 (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.c | 7 |
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; |
