summaryrefslogtreecommitdiff
path: root/isisd/isis_tlvs.c
diff options
context:
space:
mode:
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-02-14 15:52:01 +0100
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-09-11 22:11:31 +0200
commit5ff2f97d006ca98059ae530346b72be4a8e38004 (patch)
tree084766abae0a15b821cf881d0a2c136c11b78734 /isisd/isis_tlvs.c
parentb46b6e9986c6e01e35795e141330299d2dc5c810 (diff)
isisd: Add copy func for SID Structure Sub-Sub-TLV
Add a function to copy an SRv6 SID Structure Sub-Sub-TLV (RFC 9352 section #9). Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd/isis_tlvs.c')
-rw-r--r--isisd/isis_tlvs.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/isisd/isis_tlvs.c b/isisd/isis_tlvs.c
index a9cc7e1c6b..fe6f80e0a0 100644
--- a/isisd/isis_tlvs.c
+++ b/isisd/isis_tlvs.c
@@ -1955,6 +1955,26 @@ static int unpack_subtlv_ipv6_source_prefix(enum isis_tlv_context context,
return 0;
}
+/* Functions related to Sub-Sub-TLV 1 SRv6 SID Structure
+ * as per RFC 9352 section #9 */
+static struct isis_srv6_sid_structure_subsubtlv *
+copy_subsubtlv_srv6_sid_structure(
+ struct isis_srv6_sid_structure_subsubtlv *sid_struct)
+{
+ if (!sid_struct)
+ return NULL;
+
+ struct isis_srv6_sid_structure_subsubtlv *rv =
+ XCALLOC(MTYPE_ISIS_SUBSUBTLV, sizeof(*rv));
+
+ rv->loc_block_len = sid_struct->loc_block_len;
+ rv->loc_node_len = sid_struct->loc_node_len;
+ rv->func_len = sid_struct->func_len;
+ rv->arg_len = sid_struct->arg_len;
+
+ return rv;
+}
+
static struct isis_item *copy_item(enum isis_tlv_context context,
enum isis_tlv_type type,
struct isis_item *item);