]>
Commit | Line | Data |
---|---|---|
acddc0ed | 1 | // SPDX-License-Identifier: GPL-2.0-or-later |
e9f1847e DS |
2 | /* |
3 | * EIGRP Metric Math Functions. | |
4 | * Copyright (C) 2013-2016 | |
5 | * Authors: | |
6 | * Donnie Savage | |
e9f1847e DS |
7 | */ |
8 | ||
9 | #ifndef _ZEBRA_EIGRP_METRIC_H_ | |
10 | #define _ZEBRA_EIGRP_METRIC_H_ | |
11 | ||
12 | /* Constants */ | |
13 | #define EIGRP_BANDWIDTH_MIN 0x1ull /* 1 */ | |
14 | #define EIGRP_BANDWIDTH_SCALER 10000000ull /* Inversion value */ | |
15 | #define EIGRP_BANDWIDTH_MAX 0xffffffffffffffffull /* 1.84467441x10^19 */ | |
16 | ||
17 | #define EIGRP_DELAY_MIN 0x1ull /* 1 */ | |
18 | #define EIGRP_DELAY_PICO 1000000ull | |
19 | #define EIGRP_DELAY_MAX 0xffffffffffffffffull /* 1.84467441x10^19 */ | |
20 | ||
21 | #define EIGRP_MAX_LOAD 256 | |
22 | #define EIGRP_MAX_HOPS 100 | |
23 | ||
24 | #define EIGRP_INACCESSIBLE 0xFFFFFFFFFFFFFFFFull | |
25 | ||
26 | #define EIGRP_METRIC_MAX 0xffffffffffffffffull /* 1.84467441x10^19 */ | |
27 | #define EIGRP_METRIC_MAX_CLASSIC 0xffffffff | |
28 | #define EIGRP_METRIC_SCALER 65536 /* CLASSIC to WIDE conversion */ | |
29 | ||
30 | #define EIGRP_CLASSIC_MAX 0xffffffff /* 4294967295 */ | |
31 | #define EIGRP_CLASSIC_SCALER 256 /* IGRP to EIGRP conversion */ | |
32 | ||
33 | ||
34 | /* Prototypes */ | |
35 | extern eigrp_scaled_t eigrp_bandwidth_to_scaled(eigrp_bandwidth_t bw); | |
36 | extern eigrp_bandwidth_t eigrp_scaled_to_bandwidth(eigrp_scaled_t scale); | |
37 | extern eigrp_scaled_t eigrp_delay_to_scaled(eigrp_delay_t delay); | |
38 | extern eigrp_delay_t eigrp_scaled_to_delay(eigrp_scaled_t scale); | |
39 | ||
40 | extern eigrp_metric_t eigrp_calculate_metrics(struct eigrp *eigrp, | |
41 | struct eigrp_metrics metric); | |
42 | extern eigrp_metric_t | |
43 | eigrp_calculate_total_metrics(struct eigrp *eigrp, | |
44 | struct eigrp_route_descriptor *rd); | |
45 | extern bool eigrp_metrics_is_same(struct eigrp_metrics m1, | |
46 | struct eigrp_metrics m2); | |
47 | ||
48 | #endif /* _ZEBRA_EIGRP_METRIC_H_ */ |