summaryrefslogtreecommitdiff
path: root/isisd/isis_srv6.h
diff options
context:
space:
mode:
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-06-03 02:08:08 +0200
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-09-11 22:11:47 +0200
commitecb2675f1ef4819f3e6f9e729ad0f6e2a59da898 (patch)
tree01e55cb00f70de803431691373d7e895ae5e0851 /isisd/isis_srv6.h
parent7db1a9047553ab11a10c15350d0fa8f1688476ec (diff)
isisd: Add support for SRv6 Adjacency SIDs
An SRv6 adjacency SID is a SID that is associated with a particular adjacency. Adjacency SIDs are advertised using the SRv6 End.X SID Sub-TLV (RFC 9352 section #8.1) or SRv6 LAN End.X SID Sub-TLV (RFC 9352 section #8.2). This commit defines the following Adj SIDs management functions: * srv6_endx_sid_add_single: add a new SRv6 Adjacency SID * srv6_endx_sid_del: delete an SRv6 Adjacency SID * isis_srv6_endx_sid_find: lookup SRv6 End.X SID by type It also attaches some callbacks to the hooks isis_adj_state_change_hook, isis_adj_ip_enabled_hook, isis_adj_ip_disabled_hook, which are responsible for installing/removing an SRv6 Adjacency SID automatically when the state of an IS-IS adjacency changes. Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd/isis_srv6.h')
-rw-r--r--isisd/isis_srv6.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/isisd/isis_srv6.h b/isisd/isis_srv6.h
index 5db844737e..c6eb0739e9 100644
--- a/isisd/isis_srv6.h
+++ b/isisd/isis_srv6.h
@@ -120,6 +120,9 @@ struct isis_srv6_db {
/* List of SRv6 SIDs allocated by the IS-IS instance */
struct list *srv6_sids;
+ /* List of SRv6 End.X SIDs allocated by the IS-IS instance */
+ struct list *srv6_endx_sids;
+
/* Area SRv6 configuration. */
struct {
/* Administrative status of SRv6 */
@@ -164,4 +167,12 @@ void isis_srv6_end_sid2subtlv(const struct isis_srv6_sid *sid,
void isis_srv6_locator2tlv(const struct isis_srv6_locator *loc,
struct isis_srv6_locator_tlv *loc_tlv);
+void srv6_endx_sid_add_single(struct isis_adjacency *adj, bool backup,
+ struct list *nexthops);
+void srv6_endx_sid_add(struct isis_adjacency *adj);
+void srv6_endx_sid_del(struct srv6_adjacency *sra);
+struct srv6_adjacency *isis_srv6_endx_sid_find(struct isis_adjacency *adj,
+ enum srv6_adj_type type);
+void isis_area_delete_backup_srv6_endx_sids(struct isis_area *area, int level);
+
#endif /* _FRR_ISIS_SRV6_H */