]> git.proxmox.com Git - mirror_frr.git/blob - yang/frr-eigrpd.yang
ripd: Implement `allow-ecmp X` command
[mirror_frr.git] / yang / frr-eigrpd.yang
1 // SPDX-License-Identifier: BSD-2-Clause
2 module frr-eigrpd {
3 yang-version 1.1;
4 namespace "http://frrouting.org/yang/eigrpd";
5 prefix frr-eigrpd;
6
7 import ietf-inet-types {
8 prefix inet;
9 }
10 import ietf-yang-types {
11 prefix yang;
12 }
13 import frr-interface {
14 prefix frr-interface;
15 }
16 import frr-vrf {
17 prefix frr-vrf;
18 }
19 import frr-route-map {
20 prefix frr-route-map;
21 }
22 import frr-route-types {
23 prefix frr-route-types;
24 }
25
26 organization "FRRouting";
27 contact
28 "FRR Users List: <mailto:frog@lists.frrouting.org>
29 FRR Development List: <mailto:dev@lists.frrouting.org>";
30 description
31 "This module defines a model for managing FRR eigrpd daemon.
32
33 Copyright 2020 FRRouting
34
35 Redistribution and use in source and binary forms, with or without
36 modification, are permitted provided that the following conditions
37 are met:
38
39 1. Redistributions of source code must retain the above copyright notice,
40 this list of conditions and the following disclaimer.
41
42 2. Redistributions in binary form must reproduce the above copyright
43 notice, this list of conditions and the following disclaimer in the
44 documentation and/or other materials provided with the distribution.
45
46 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
47 \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
48 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
49 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
50 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
51 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
52 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
53 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
54 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
55 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
56 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
57
58 revision 2019-09-09 {
59 description
60 "Changed interface references to use
61 frr-interface:interface-ref typedef";
62 }
63 revision 2019-06-19 {
64 description "Initial revision.";
65 reference
66 "RFC 7868: Cisco's Enhanced Interior Gateway Routing Protocol (EIGRP).";
67 }
68
69 /*
70 * Types specification.
71 */
72 typedef autonomous-system {
73 description "Administrative domain identification for a network";
74 type uint16 {
75 range 1..65535;
76 }
77 }
78
79 typedef authentication-type {
80 description "Authentication types";
81 type enumeration {
82 enum none {
83 description "Don't authenticate";
84 value 0;
85 }
86
87 enum text {
88 description "User defined text";
89 value 1;
90 }
91
92 enum md5 {
93 description "MD5 algorithm";
94 value 2;
95 }
96
97 enum hmac-sha-256 {
98 description "HMAC SHA256 algorithm";
99 value 3;
100 }
101 }
102 }
103
104 /*
105 * EIGRP operational data.
106 */
107 container eigrpd {
108 list instance {
109 key "asn vrf";
110 description "EIGRP autonomous system instance";
111
112 leaf asn {
113 description "Autonomous System Number";
114 type autonomous-system;
115 }
116
117 leaf vrf {
118 description "Virtual Routing Domain name";
119 type frr-vrf:vrf-ref;
120 }
121
122 /*
123 * Configurations.
124 */
125 leaf router-id {
126 description "Router identification";
127 type inet:ipv4-address;
128 }
129
130 leaf-list passive-interface {
131 description "List of suppressed interfaces";
132 type frr-interface:interface-ref;
133 }
134
135 leaf active-time {
136 description "ACTIVE time limit in seconds (0 disables limit)";
137 type uint16 {
138 range "0..65535";
139 }
140 units seconds;
141 default 180;
142 }
143
144 leaf variance {
145 description "Control load balance variance";
146 type uint8 {
147 range "1..128";
148 }
149 }
150
151 leaf maximum-paths {
152 description "Most number of paths to forward packets to";
153 type uint8 {
154 range "1..32";
155 }
156 }
157
158 container metric-weights {
159 description
160 "Metrics and parameters for advertisement.
161
162 EIGRP calculates the composite metric with the following formula:
163
164 metric = 256 * ({(K1*BW) + [(K2*BW)/(256-LOAD)] + (K3*DELAY)} *
165 (K5/(REL+K4)))
166
167 Composite calculation:
168 K5
169 metric =[(K1*Net-Throughput) + Latency)+(K6*ExtAttr)] * ------
170 K4+Rel
171
172 RFC 7868 Sections 5.5 and 5.6.2.5.";
173
174 leaf K1 {
175 description "Bandwidth coefficient.";
176 type uint8 {
177 range "0..255";
178 }
179 }
180
181 leaf K2 {
182 description "Bandwidth on load coefficient.";
183 type uint8 {
184 range "0..255";
185 }
186 }
187
188 leaf K3 {
189 description "Delay or latency-based coefficient.";
190 type uint8 {
191 range "0..255";
192 }
193 }
194
195 leaf K4 {
196 description "Link quality coefficient.";
197 type uint8 {
198 range "0..255";
199 }
200 }
201
202 leaf K5 {
203 description "Packet loss coefficient.";
204 type uint8 {
205 range "0..255";
206 }
207 }
208
209 leaf K6 {
210 description "Jitter coefficient.";
211 type uint8 {
212 range "0..255";
213 }
214 }
215 }
216
217 leaf-list network {
218 description "Enable EIGRP on the specific network";
219 type inet:ipv4-prefix;
220 }
221
222 leaf-list neighbor {
223 description "Specific EIGRP neighbor";
224 type inet:ipv4-address;
225 }
226
227 list redistribute {
228 description "Redistribute routes learned from other routing protocols";
229
230 key "protocol";
231
232 leaf protocol {
233 description "Routing protocol";
234 type frr-route-types:frr-route-types-v4;
235 must '. != "eigrp"';
236 }
237
238 leaf route-map {
239 description
240 "Applies the conditions of the specified route-map to
241 routes that are redistributed into the EIGRP routing
242 instance";
243 type frr-route-map:route-map-ref;
244 }
245
246 container metrics {
247 description "Metric for the redistributed routes";
248
249 leaf bandwidth {
250 description "Bandwidth metric in Kbits per second";
251 type uint32 {
252 range "1..4294967295";
253 }
254 }
255
256 leaf delay {
257 description "Delay metric";
258 units microseconds;
259 type uint32 {
260 range "0..4294967295";
261 }
262 }
263
264 leaf reliability {
265 description "Reliability metric";
266 type uint32 {
267 range "0..255";
268 }
269 }
270
271 leaf load {
272 description "Effective bandwidth usage";
273 type uint32 {
274 range "1..255";
275 }
276 }
277
278 leaf mtu {
279 description "Path Maximum Transmission Unit";
280 type uint32 {
281 range "1..65535";
282 }
283 }
284 }
285 }
286 }
287 }
288
289 /*
290 * EIGRP interface configurations.
291 */
292 augment "/frr-interface:lib/frr-interface:interface" {
293 container eigrp {
294 description "EIGRP interface parameters";
295
296 leaf delay {
297 description "Throughput delay";
298 type uint32 {
299 range "1..16777215";
300 }
301 default 10;
302 }
303
304 leaf bandwidth {
305 description "Interface bandwidth value";
306 type uint32 {
307 range "1..10000000";
308 }
309 default 100000;
310 }
311
312 leaf hello-interval {
313 description "Hello packet interval";
314 type uint16 {
315 range "1..65535";
316 }
317 units seconds;
318 default 5;
319 }
320
321 leaf hold-time {
322 description "Timeout amount to consider neighbor down";
323 type uint16 {
324 range "1..65535";
325 }
326 units seconds;
327 default 15;
328 }
329
330 leaf split-horizon {
331 description "Perform split horizon loop preventing technique";
332 type boolean;
333 default true;
334 }
335
336 /*
337 * Per AS configuration.
338 */
339 list instance {
340 description "Autonomous System specific configuration";
341
342 key "asn";
343
344 leaf asn {
345 description "Autonomous System Number";
346 type autonomous-system;
347 }
348
349 leaf-list summarize-addresses {
350 description "Peform address summarization";
351 type inet:ipv4-prefix;
352 }
353
354 leaf authentication {
355 description "Authentication digest algorithm";
356 type authentication-type;
357 default "none";
358 }
359
360 leaf keychain {
361 description "FRR key chain name to use with authentication";
362 type string;
363 }
364 }
365 }
366 }
367 }