]> git.proxmox.com Git - mirror_frr.git/blob - isisd/isis_flex_algo.h
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
[mirror_frr.git] / isisd / isis_flex_algo.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*********************************************************************
3 * Copyright 2022 Hiroki Shirokura, LINE Corporation
4 * Copyright 2022 Masakazu Asama
5 * Copyright 2022 6WIND S.A.
6 *
7 * isis_flex_algo.h: IS-IS Flexible Algorithm
8 *
9 * Authors
10 * -------
11 * Hiroki Shirokura
12 * Masakazu Asama
13 * Louis Scalbert
14 */
15
16 #ifndef ISIS_FLEX_ALGO_H
17 #define ISIS_FLEX_ALGO_H
18
19 #include "flex_algo.h"
20 #include "isisd/isis_constants.h"
21
22 #ifndef FABRICD
23
24 struct isis_flex_algo_data {
25 struct isis_spftree *spftree[SPFTREE_COUNT][ISIS_LEVELS];
26 struct isis_area *area;
27 };
28
29 struct isis_flex_algo_alloc_arg {
30 uint8_t algorithm;
31 struct isis_area *area;
32 };
33
34 void *isis_flex_algo_data_alloc(void *arg);
35 void isis_flex_algo_data_free(void *data);
36
37 struct isis_router_cap_fad *
38 isis_flex_algo_elected(int algorithm, const struct isis_area *area);
39 bool isis_flex_algo_supported(struct flex_algo *fad);
40 struct isis_router_cap_fad *
41 isis_flex_algo_elected_supported(int algorithm, const struct isis_area *area);
42 struct isis_router_cap_fad *
43 isis_flex_algo_elected_supported_local_fad(int algorithm,
44 const struct isis_area *area,
45 struct isis_router_cap_fad **fad);
46 struct isis_lsp;
47 bool sr_algorithm_participated(const struct isis_lsp *lsp, uint8_t algorithm);
48
49 bool isis_flex_algo_constraint_drop(struct isis_spftree *spftree,
50 struct isis_lsp *lsp,
51 struct isis_extended_reach *reach);
52
53 #endif /* ifndef FABRICD */
54
55 #endif /* ISIS_FLEX_ALGO_H */