]> git.proxmox.com Git - mirror_frr.git/blame - eigrpd/eigrp_topology.h
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
[mirror_frr.git] / eigrpd / eigrp_topology.h
CommitLineData
acddc0ed 1// SPDX-License-Identifier: GPL-2.0-or-later
7f57883e
DS
2/*
3 * EIGRP Topology Table.
4 * Copyright (C) 2013-2016
5 * Authors:
6 * Donnie Savage
7 * Jan Janovic
8 * Matej Perina
9 * Peter Orsag
10 * Peter Paluch
11 * Frantisek Gazo
12 * Tomas Hvorkovy
13 * Martin Kontsek
14 * Lukas Koribsky
7f57883e
DS
15 */
16
17#ifndef _ZEBRA_EIGRP_TOPOLOGY_H
18#define _ZEBRA_EIGRP_TOPOLOGY_H
19
b4216e2c
DL
20#include "memory.h"
21
22DECLARE_MTYPE(EIGRP_PREFIX_DESCRIPTOR);
23
7f57883e 24/* EIGRP Topology table related functions. */
9ca66cc7
DS
25extern struct route_table *eigrp_topology_new(void);
26extern void eigrp_topology_init(struct route_table *table);
dc4accdd
DS
27extern struct eigrp_prefix_descriptor *eigrp_prefix_descriptor_new(void);
28extern struct eigrp_route_descriptor *eigrp_route_descriptor_new(void);
0da93ecf 29extern void eigrp_topology_free(struct eigrp *eigrp, struct route_table *table);
dc4accdd
DS
30extern void eigrp_prefix_descriptor_add(struct route_table *table,
31 struct eigrp_prefix_descriptor *pe);
32extern void eigrp_route_descriptor_add(struct eigrp *eigrp,
33 struct eigrp_prefix_descriptor *pe,
34 struct eigrp_route_descriptor *ne);
35extern void eigrp_prefix_descriptor_delete(struct eigrp *eigrp,
36 struct route_table *table,
37 struct eigrp_prefix_descriptor *pe);
38extern void eigrp_route_descriptor_delete(struct eigrp *eigrp,
39 struct eigrp_prefix_descriptor *pe,
40 struct eigrp_route_descriptor *ne);
0da93ecf
DS
41extern void eigrp_topology_delete_all(struct eigrp *eigrp,
42 struct route_table *table);
dc4accdd 43extern struct eigrp_prefix_descriptor *
996c9314 44eigrp_topology_table_lookup_ipv4(struct route_table *table, struct prefix *p);
d62a17ae 45extern struct list *
dc4accdd
DS
46eigrp_topology_get_successor(struct eigrp_prefix_descriptor *pe);
47extern struct list *
48eigrp_topology_get_successor_max(struct eigrp_prefix_descriptor *pe,
d62a17ae 49 unsigned int maxpaths);
dc4accdd
DS
50extern struct eigrp_route_descriptor *
51eigrp_route_descriptor_lookup(struct list *entries,
52 struct eigrp_neighbor *neigh);
0da93ecf
DS
53extern struct list *eigrp_neighbor_prefixes_lookup(struct eigrp *eigrp,
54 struct eigrp_neighbor *n);
55extern void eigrp_topology_update_all_node_flags(struct eigrp *eigrp);
dc4accdd
DS
56extern void
57eigrp_topology_update_node_flags(struct eigrp *eigrp,
58 struct eigrp_prefix_descriptor *pe);
996c9314 59extern enum metric_change
0da93ecf
DS
60eigrp_topology_update_distance(struct eigrp_fsm_action_message *msg);
61extern void eigrp_update_routing_table(struct eigrp *eigrp,
dc4accdd 62 struct eigrp_prefix_descriptor *pe);
0da93ecf
DS
63extern void eigrp_topology_neighbor_down(struct eigrp *eigrp,
64 struct eigrp_neighbor *neigh);
dc4accdd
DS
65extern void
66eigrp_update_topology_table_prefix(struct eigrp *eigrp,
67 struct route_table *table,
68 struct eigrp_prefix_descriptor *pe);
f6709c16 69
7f57883e 70#endif