diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-06-03 02:08:08 +0200 | 
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-09-11 22:11:47 +0200 | 
| commit | ecb2675f1ef4819f3e6f9e729ad0f6e2a59da898 (patch) | |
| tree | 01e55cb00f70de803431691373d7e895ae5e0851 /isisd/isis_srv6.h | |
| parent | 7db1a9047553ab11a10c15350d0fa8f1688476ec (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.h | 11 | 
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 */  | 
