]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: Add SRv6 SID data structure
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Tue, 14 Mar 2023 01:40:34 +0000 (02:40 +0100)
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Mon, 11 Sep 2023 15:34:58 +0000 (17:34 +0200)
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 <carmine.scarpitta@uniroma2.it>
isisd/isis_srv6.h

index 40a0faaa99025282b22216217bc8f568d216f3b2..1378ef0291c3267aa2fdf65ad8fe4eac2306acea 100644 (file)
 #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 {