]> git.proxmox.com Git - mirror_frr.git/blob - isisd/isis_zebra.h
isisd: add support for Anycast-SIDs
[mirror_frr.git] / isisd / isis_zebra.h
1 /*
2 * IS-IS Rout(e)ing protocol - isis_zebra.h
3 *
4 * Copyright (C) 2001,2002 Sampo Saaristo
5 * Tampere University of Technology
6 * Institute of Communications Engineering
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public Licenseas published by the Free
10 * Software Foundation; either version 2 of the License, or (at your option)
11 * any later version.
12 *
13 * This program is distributed in the hope that it will be useful,but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 * more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; see the file COPYING; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22 #ifndef _ZEBRA_ISIS_ZEBRA_H
23 #define _ZEBRA_ISIS_ZEBRA_H
24
25 #include "isisd.h"
26
27 extern struct zclient *zclient;
28
29 struct label_chunk {
30 uint32_t start;
31 uint32_t end;
32 uint64_t used_mask;
33 };
34 #define CHUNK_SIZE 64
35
36 void isis_zebra_init(struct thread_master *master, int instance);
37 void isis_zebra_stop(void);
38
39 struct isis_route_info;
40 struct sr_adjacency;
41
42 void isis_zebra_route_add_route(struct isis *isis,
43 struct prefix *prefix,
44 struct prefix_ipv6 *src_p,
45 struct isis_route_info *route_info);
46 void isis_zebra_route_del_route(struct isis *isis,
47 struct prefix *prefix,
48 struct prefix_ipv6 *src_p,
49 struct isis_route_info *route_info);
50 void isis_zebra_prefix_sid_install(struct isis_area *area,
51 struct prefix *prefix,
52 struct isis_route_info *rinfo,
53 struct isis_sr_psid_info *psid);
54 void isis_zebra_prefix_sid_uninstall(struct isis_area *area,
55 struct prefix *prefix,
56 struct isis_route_info *rinfo,
57 struct isis_sr_psid_info *psid);
58 void isis_zebra_send_adjacency_sid(int cmd, const struct sr_adjacency *sra);
59 int isis_distribute_list_update(int routetype);
60 void isis_zebra_redistribute_set(afi_t afi, int type);
61 void isis_zebra_redistribute_unset(afi_t afi, int type);
62 bool isis_zebra_label_manager_ready(void);
63 int isis_zebra_label_manager_connect(void);
64 int isis_zebra_request_label_range(uint32_t base, uint32_t chunk_size);
65 int isis_zebra_release_label_range(uint32_t start, uint32_t end);
66 void isis_zebra_vrf_register(struct isis *isis);
67
68 #endif /* _ZEBRA_ISIS_ZEBRA_H */