diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2019-08-03 22:02:37 -0300 | 
|---|---|---|
| committer | Olivier Dugeon <olivier.dugeon@orange.com> | 2020-04-30 12:15:47 +0200 | 
| commit | 26f6acafc369f1c126870b4282d5e252cc830f26 (patch) | |
| tree | a61a225ed9eddcd972abf6216e533606e559789c /isisd/isis_adjacency.h | |
| parent | 8f6c893629f609c2313150ef9ceaecd8125a3357 (diff) | |
isisd: add support for segment routing
This is an implementation of the IS-IS SR draft [1] for FRR.
The following features are supported:
* IPv4 and IPv6 Prefix-SIDs;
* IPv4 and IPv6 Adj-SIDs and LAN-Adj-SIDs;
* Index and absolute labels;
* The no-php and explicit-null Prefix-SID flags;
* Full integration with the Label Manager.
Known limitations:
* No support for Anycast-SIDs;
* No support for the SID/Label Binding TLV (required for LDP interop).
* No support for persistent Adj-SIDs;
* No support for multiple SRGBs.
[1] draft-ietf-isis-segment-routing-extensions-25
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'isisd/isis_adjacency.h')
| -rw-r--r-- | isisd/isis_adjacency.h | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/isisd/isis_adjacency.h b/isisd/isis_adjacency.h index 834eba7925..ec17446ade 100644 --- a/isisd/isis_adjacency.h +++ b/isisd/isis_adjacency.h @@ -69,6 +69,7 @@ struct isis_dis_record {  };  struct bfd_session; +struct isis_area;  struct isis_adjacency {  	uint8_t snpa[ETH_ALEN];		    /* NeighbourSNPAAddress */ @@ -103,6 +104,7 @@ struct isis_adjacency {  	uint16_t *mt_set;      /* Topologies this adjacency is valid for */  	unsigned int mt_count; /* Number of entries in mt_set */  	struct bfd_session *bfd_session; +	struct list *adj_sids; /* Segment Routing Adj-SIDs. */  };  struct isis_threeway_adj; @@ -111,6 +113,8 @@ struct isis_adjacency *isis_adj_lookup(const uint8_t *sysid,  				       struct list *adjdb);  struct isis_adjacency *isis_adj_lookup_snpa(const uint8_t *ssnpa,  					    struct list *adjdb); +bool isis_adj_exists(const struct isis_area *area, int level, +		     const uint8_t *sysid);  struct isis_adjacency *isis_new_adj(const uint8_t *id, const uint8_t *snpa,  				    int level, struct isis_circuit *circuit);  void isis_delete_adj(void *adj);  | 
