]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: Add function to fill in an SRv6 Locator TLV
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Wed, 15 Feb 2023 10:35:46 +0000 (11:35 +0100)
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Mon, 11 Sep 2023 20:11:37 +0000 (22:11 +0200)
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 <carmine.scarpitta@uniroma2.it>
isisd/isis_srv6.c
isisd/isis_srv6.h

index 588a8fdd402c1bddfe53dee99149fde1fb84cf1f..f8e3ca90d49f785b39c2ce3a2ff1d4814f8b1fea 100644 (file)
 /* 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.
  *
index 943a6c8b88607e4545476ae19e62ece26d28d068..80184ffa5e3248e7e027bcbeae9c9e96c578dea2 100644 (file)
@@ -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 */