From 7e340af13bdb9347e504edb4614dbc2ec777b303 Mon Sep 17 00:00:00 2001 From: Carmine Scarpitta Date: Wed, 15 Feb 2023 11:49:11 +0100 Subject: [PATCH] isisd: Add func to fill in SID Struct Sub-Sub-TLV Add a function to fill in an SRv6 SID Structure Sub-Sub-TLV with information from an SRv6 SID (RFC 9352 section #9). Signed-off-by: Carmine Scarpitta --- isisd/isis_srv6.c | 23 +++++++++++++++++++++++ isisd/isis_srv6.h | 3 +++ 2 files changed, 26 insertions(+) diff --git a/isisd/isis_srv6.c b/isisd/isis_srv6.c index c4d4c369b5..a26552d4e9 100644 --- a/isisd/isis_srv6.c +++ b/isisd/isis_srv6.c @@ -20,6 +20,29 @@ /* Local variables and functions */ DEFINE_MTYPE_STATIC(ISISD, ISIS_SRV6_SID, "ISIS SRv6 Segment ID"); +/** + * Fill in SRv6 SID Structure Sub-Sub-TLV with information from an SRv6 SID. + * + * @param sid SRv6 SID configuration + * @param structure_subsubtlv SRv6 SID Structure Sub-Sub-TLV to be updated + */ +void isis_srv6_sid_structure2subsubtlv( + const struct isis_srv6_sid *sid, + struct isis_srv6_sid_structure_subsubtlv *structure_subsubtlv) +{ + /* Set Locator Block length */ + structure_subsubtlv->loc_block_len = sid->structure.loc_block_len; + + /* Set Locator Node length */ + structure_subsubtlv->loc_node_len = sid->structure.loc_node_len; + + /* Set Function length */ + structure_subsubtlv->func_len = sid->structure.func_len; + + /* Set Argument length */ + structure_subsubtlv->arg_len = sid->structure.arg_len; +} + /** * Fill in SRv6 End SID Sub-TLV with information from an SRv6 SID. * diff --git a/isisd/isis_srv6.h b/isisd/isis_srv6.h index 601ea79664..89e8044f38 100644 --- a/isisd/isis_srv6.h +++ b/isisd/isis_srv6.h @@ -114,6 +114,9 @@ extern void isis_srv6_area_term(struct isis_area *area); void isis_srv6_init(void); void isis_srv6_term(void); +void isis_srv6_sid_structure2subsubtlv( + const struct isis_srv6_sid *sid, + struct isis_srv6_sid_structure_subsubtlv *structure_subsubtlv); void isis_srv6_end_sid2subtlv(const struct isis_srv6_sid *sid, struct isis_srv6_end_sid_subtlv *sid_subtlv); void isis_srv6_locator2tlv(const struct isis_srv6_locator *loc, -- 2.39.5