From e047b39dc13698f59681809e10a4191b2ad4b16f Mon Sep 17 00:00:00 2001 From: Carmine Scarpitta Date: Tue, 14 Mar 2023 02:40:34 +0100 Subject: [PATCH] isisd: Add SRv6 SID data structure Add `struct isis_srv6_sid` data structure to represent an SRv6 SID. The struct has the following members: * next: pointer to the next SID, used to build linked lists of SRv6 SIDs * flags: SID flags * behavior: the behavior bound to the SRv6 SID (as defined in RFC 8986) * value: the SID value (i.e., an IPv6 address) * locator: a backpointer to the parent locator from which the SID has been allocated. Signed-off-by: Carmine Scarpitta --- isisd/isis_srv6.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/isisd/isis_srv6.h b/isisd/isis_srv6.h index 40a0faaa99..1378ef0291 100644 --- a/isisd/isis_srv6.h +++ b/isisd/isis_srv6.h @@ -10,12 +10,34 @@ #ifndef _FRR_ISIS_SRV6_H #define _FRR_ISIS_SRV6_H +#include "lib/srv6.h" + /* Maximum SRv6 SID Depths supported by the router */ #define SRV6_MAX_SEG_LEFT 3 #define SRV6_MAX_END_POP 3 #define SRV6_MAX_H_ENCAPS 2 #define SRV6_MAX_END_D 5 +/* SRv6 SID not bound to any adjacency */ +struct isis_srv6_sid { + struct isis_srv6_sid *next; + + /* SID flags */ + uint8_t flags; + + /* SID value */ + struct in6_addr sid; + + /* Endpoint behavior bound to the SID */ + enum srv6_endpoint_behavior_codepoint behavior; + + /* Parent SRv6 locator */ + struct srv6_locator_chunk *locator; + + /* Backpointer to IS-IS area */ + struct isis_area *area; +}; + /* Per-area IS-IS SRv6 Data Base (SRv6 DB) */ struct isis_srv6_db {