]>
git.proxmox.com Git - mirror_frr.git/blob - isisd/isis_spf.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * IS-IS Rout(e)ing protocol - isis_spf.h
4 * IS-IS Shortest Path First algorithm
6 * Copyright (C) 2001,2002 Sampo Saaristo
7 * Tampere University of Technology
8 * Institute of Communications Engineering
11 #ifndef _ZEBRA_ISIS_SPF_H
12 #define _ZEBRA_ISIS_SPF_H
14 #include "isisd/isis_lfa.h"
27 uint8_t id
[ISIS_SYS_ID_LEN
+ 1];
28 struct isis_adjacency
*adj
;
30 struct isis_ext_subtlvs
*subtlvs
;
33 uint8_t desig_is_id
[ISIS_SYS_ID_LEN
+ 1];
36 #define F_ISIS_SPF_ADJ_BROADCAST 0x01
37 #define F_ISIS_SPF_ADJ_OLDMETRIC 0x02
38 #define F_ISIS_SPF_ADJ_METRIC_INFINITY 0x04
42 isis_spftree_new(struct isis_area
*area
, struct lspdb_head
*lspdb
,
43 const uint8_t *sysid
, int level
, enum spf_tree_id tree_id
,
44 enum spf_type type
, uint8_t flags
, uint8_t algorithm
);
45 struct isis_vertex
*isis_spf_prefix_sid_lookup(struct isis_spftree
*spftree
,
46 struct isis_prefix_sid
*psid
);
47 void isis_spf_invalidate_routes(struct isis_spftree
*tree
);
48 void isis_spf_verify_routes(struct isis_area
*area
, struct isis_spftree
**trees
,
50 void isis_spf_switchover_routes(struct isis_area
*area
,
51 struct isis_spftree
**trees
, int family
,
52 union g_addr
*nexthop_ip
, ifindex_t ifindex
,
54 void isis_spftree_del(struct isis_spftree
*spftree
);
55 void spftree_area_init(struct isis_area
*area
);
56 void spftree_area_del(struct isis_area
*area
);
57 struct isis_lsp
*isis_root_system_lsp(struct lspdb_head
*lspdb
,
58 const uint8_t *sysid
);
59 #define isis_spf_schedule(area, level) \
60 _isis_spf_schedule((area), (level), __func__, \
62 int _isis_spf_schedule(struct isis_area
*area
, int level
,
63 const char *func
, const char *file
, int line
);
64 void isis_print_spftree(struct vty
*vty
, struct isis_spftree
*spftree
);
65 void isis_print_routes(struct vty
*vty
, struct isis_spftree
*spftree
,
66 json_object
**json
, bool prefix_sid
, bool backup
);
67 void isis_spf_init(void);
68 void isis_spf_print(struct isis_spftree
*spftree
, struct vty
*vty
);
69 void isis_spf_print_json(struct isis_spftree
*spftree
,
70 struct json_object
*json
);
71 void isis_run_spf(struct isis_spftree
*spftree
);
72 struct isis_spftree
*isis_run_hopcount_spf(struct isis_area
*area
,
74 struct isis_spftree
*spftree
);
76 void isis_spf_timer_free(void *run
);
77 #endif /* _ZEBRA_ISIS_SPF_H */