]>
git.proxmox.com Git - mirror_frr.git/blob - 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.
7 * isis_flex_algo.h: IS-IS Flexible Algorithm
16 #ifndef ISIS_FLEX_ALGO_H
17 #define ISIS_FLEX_ALGO_H
19 #include "flex_algo.h"
20 #include "isisd/isis_constants.h"
24 struct isis_flex_algo_data
{
25 struct isis_spftree
*spftree
[SPFTREE_COUNT
][ISIS_LEVELS
];
26 struct isis_area
*area
;
29 struct isis_flex_algo_alloc_arg
{
31 struct isis_area
*area
;
34 void *isis_flex_algo_data_alloc(void *arg
);
35 void isis_flex_algo_data_free(void *data
);
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
);
47 bool sr_algorithm_participated(const struct isis_lsp
*lsp
, uint8_t algorithm
);
49 bool isis_flex_algo_constraint_drop(struct isis_spftree
*spftree
,
51 struct isis_extended_reach
*reach
);
53 #endif /* ifndef FABRICD */
55 #endif /* ISIS_FLEX_ALGO_H */