summaryrefslogtreecommitdiffstats
path: root/isisd
diff options
context:
space:
mode:
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-02-22 00:03:49 +0100
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-09-11 17:35:07 +0200
commit911ec6b474ea48d9097af07a76a7b6a4d33fc39b (patch)
tree98cc91463f4de85f3d2725ba59f4587673b88f00 /isisd
parentisisd: Add IS-IS SRv6 Locator TLV Codepoint (diff)
downloadfrr-911ec6b474ea48d9097af07a76a7b6a4d33fc39b.tar.xz
frr-911ec6b474ea48d9097af07a76a7b6a4d33fc39b.zip
isisd: Add SRv6 Locator TLV data structure
Add a data structure to represent an SRv6 Locator TLV as per RFC 9352 section #7.1. Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd')
-rw-r--r--isisd/isis_tlvs.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/isisd/isis_tlvs.h b/isisd/isis_tlvs.h
index fd7a0306a..4fa0fe81d 100644
--- a/isisd/isis_tlvs.h
+++ b/isisd/isis_tlvs.h
@@ -193,6 +193,23 @@ struct isis_router_cap_fad {
};
#endif /* ifndef FABRICD */
+/* RFC 9352 section 7.1 */
+struct isis_srv6_locator_tlv {
+ struct isis_srv6_locator_tlv *next;
+
+ uint32_t metric;
+
+ uint8_t flags;
+#define ISIS_TLV_SRV6_LOCATOR_FLAG_D 1 << 7
+
+ uint8_t algorithm;
+ struct prefix_ipv6 prefix;
+
+ struct isis_subtlvs *subtlvs;
+};
+
+#define ISIS_SRV6_LOCATOR_HDR_SIZE 22
+
/* Maximum SRv6 SID Depths (MSD) as per RFC 9352 section #4 */
struct isis_srv6_msd {
/* RFC 9352 section #4.1 */
@@ -338,6 +355,7 @@ struct isis_tlvs {
struct isis_threeway_adj *threeway_adj;
struct isis_router_cap *router_cap;
struct isis_spine_leaf *spine_leaf;
+ struct isis_mt_item_list srv6_locator;
};
enum isis_tlv_context {