From: Carmine Scarpitta Date: Wed, 15 Feb 2023 10:35:46 +0000 (+0100) Subject: isisd: Add function to fill in an SRv6 Locator TLV X-Git-Tag: base_9.1~88^2~36 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=6cd23c6d95e52b1a86b2a8a2b77d8c929252e251;p=matthieu%2Ffrr.git isisd: Add function to fill in an SRv6 Locator TLV Add a function to fill in an SRv6 Locator TLV with information from an SRv6 locator (RFC 9352 section #7.1). Signed-off-by: Carmine Scarpitta --- diff --git a/isisd/isis_srv6.c b/isisd/isis_srv6.c index 588a8fdd40..f8e3ca90d4 100644 --- a/isisd/isis_srv6.c +++ b/isisd/isis_srv6.c @@ -20,6 +20,28 @@ /* Local variables and functions */ DEFINE_MTYPE_STATIC(ISISD, ISIS_SRV6_SID, "ISIS SRv6 Segment ID"); +/** + * Fill in SRv6 Locator TLV with information from an SRv6 locator. + * + * @param loc SRv6 Locator configuration + * @param loc_tlv SRv6 Locator TLV to be updated + */ +void isis_srv6_locator2tlv(const struct isis_srv6_locator *loc, + struct isis_srv6_locator_tlv *loc_tlv) +{ + /* Set SRv6 Locator metric */ + loc_tlv->metric = loc->metric; + + /* Set SRv6 Locator flags */ + loc_tlv->flags = loc->flags; + + /* Set SRv6 Locator algorithm */ + loc_tlv->algorithm = loc->algorithm; + + /* Set SRv6 Locator prefix */ + loc_tlv->prefix = loc->prefix; +} + /** * Unset the SRv6 locator for a given IS-IS area. * diff --git a/isisd/isis_srv6.h b/isisd/isis_srv6.h index 943a6c8b88..80184ffa5e 100644 --- a/isisd/isis_srv6.h +++ b/isisd/isis_srv6.h @@ -12,6 +12,8 @@ #include "lib/srv6.h" +#include "isisd/isis_tlvs.h" + /* Maximum SRv6 SID Depths supported by the router */ #define SRV6_MAX_SEG_LEFT 3 #define SRV6_MAX_END_POP 3 @@ -112,4 +114,7 @@ extern void isis_srv6_area_term(struct isis_area *area); void isis_srv6_init(void); void isis_srv6_term(void); +void isis_srv6_locator2tlv(const struct isis_srv6_locator *loc, + struct isis_srv6_locator_tlv *loc_tlv); + #endif /* _FRR_ISIS_SRV6_H */