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>
#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 {