diff options
author | Renato Westphal <renato@opensourcerouting.org> | 2019-08-04 03:02:37 +0200 |
---|---|---|
committer | Olivier Dugeon <olivier.dugeon@orange.com> | 2020-04-30 12:15:47 +0200 |
commit | 26f6acafc369f1c126870b4282d5e252cc830f26 (patch) | |
tree | a61a225ed9eddcd972abf6216e533606e559789c /isisd/isis_zebra.h | |
parent | isisd: add segment-routing CLI commands (diff) | |
download | frr-26f6acafc369f1c126870b4282d5e252cc830f26.tar.xz frr-26f6acafc369f1c126870b4282d5e252cc830f26.zip |
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_zebra.h')
-rw-r--r-- | isisd/isis_zebra.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/isisd/isis_zebra.h b/isisd/isis_zebra.h index d00f348c8..cca2b0881 100644 --- a/isisd/isis_zebra.h +++ b/isisd/isis_zebra.h @@ -24,10 +24,18 @@ extern struct zclient *zclient; -void isis_zebra_init(struct thread_master *); +struct label_chunk { + uint32_t start; + uint32_t end; + uint64_t used_mask; +}; +#define CHUNK_SIZE 64 + +void isis_zebra_init(struct thread_master *master, int instance); void isis_zebra_stop(void); struct isis_route_info; +struct sr_prefix; void isis_zebra_route_add_route(struct prefix *prefix, struct prefix_ipv6 *src_p, @@ -35,8 +43,14 @@ void isis_zebra_route_add_route(struct prefix *prefix, void isis_zebra_route_del_route(struct prefix *prefix, struct prefix_ipv6 *src_p, struct isis_route_info *route_info); +void isis_zebra_install_prefix_sid(const struct sr_prefix *srp); +void isis_zebra_uninstall_prefix_sid(const struct sr_prefix *srp); int isis_distribute_list_update(int routetype); void isis_zebra_redistribute_set(afi_t afi, int type); void isis_zebra_redistribute_unset(afi_t afi, int type); +int isis_zebra_request_label_range(uint32_t base, uint32_t chunk_size); +void isis_zebra_release_label_range(uint32_t start, uint32_t end); +mpls_label_t isis_zebra_request_dynamic_label(void); +void isis_zebra_release_dynamic_label(mpls_label_t label); #endif /* _ZEBRA_ISIS_ZEBRA_H */ |