From: Carmine Scarpitta Date: Tue, 14 Mar 2023 01:40:34 +0000 (+0100) Subject: isisd: Add SRv6 SID data structure X-Git-Tag: base_9.1~88^2~119 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=e047b39dc13698f59681809e10a4191b2ad4b16f;p=matthieu%2Ffrr.git 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 --- 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 {