]> git.proxmox.com Git - mirror_frr.git/blob - eigrpd/eigrpd.h
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
[mirror_frr.git] / eigrpd / eigrpd.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * EIGRP main header.
4 * Copyright (C) 2013-2014
5 * Authors:
6 * Donnie Savage
7 * Jan Janovic
8 * Matej Perina
9 * Peter Orsag
10 * Peter Paluch
11 */
12
13 #ifndef _ZEBRA_EIGRPD_H
14 #define _ZEBRA_EIGRPD_H
15
16 #include <zebra.h>
17
18 #include "filter.h"
19 #include "log.h"
20 #include "memory.h"
21
22 DECLARE_MGROUP(EIGRPD);
23
24 /* Set EIGRP version is "classic" - wide metrics comes next */
25 #define EIGRP_MAJOR_VERSION 1
26 #define EIGRP_MINOR_VERSION 2
27
28 #define EIGRP_TLV_32B_VERSION 1 /* Original 32bit scaled metrics */
29 #define EIGRP_TLV_64B_VERSION 2 /* Current 64bit 'wide' metrics */
30 #define EIGRP_TLV_MTR_VERSION 3 /* MTR TLVs with 32bit metric *Not Supported */
31 #define EIGRP_TLV_SAF_VERSION 4 /* SAF TLVs with 64bit metric *Not Supported */
32
33 struct eigrp_master {
34 /* EIGRP instance. */
35 struct list *eigrp;
36
37 /* EIGRP thread master. */
38 struct event_loop *master;
39
40 /* Zebra interface list. */
41 struct list *iflist;
42
43 /* EIGRP start time. */
44 time_t start_time;
45
46 /* Various EIGRP global configuration. */
47 uint8_t options;
48
49 #define EIGRP_MASTER_SHUTDOWN (1 << 0) /* deferred-shutdown */
50 };
51
52 /* Extern variables. */
53 extern struct zclient *zclient;
54 extern struct event_loop *master;
55 extern struct eigrp_master *eigrp_om;
56 extern struct zebra_privs_t eigrpd_privs;
57
58 /* Prototypes */
59 extern void eigrp_master_init(void);
60 extern void eigrp_terminate(void);
61 extern void eigrp_finish_final(struct eigrp *eigrp);
62 extern void eigrp_finish(struct eigrp *eigrp);
63 extern struct eigrp *eigrp_get(uint16_t as, vrf_id_t vrf_id);
64 extern struct eigrp *eigrp_lookup(vrf_id_t vrf_id);
65 extern void eigrp_router_id_update(struct eigrp *eigrp);
66
67 #endif /* _ZEBRA_EIGRPD_H */