]> git.proxmox.com Git - mirror_frr.git/blob - yang/frr-bfdd.yang
Merge pull request #7590 from opensourcerouting/isisd-lfa
[mirror_frr.git] / yang / frr-bfdd.yang
1 module frr-bfdd {
2 yang-version 1.1;
3 namespace "http://frrouting.org/yang/bfdd";
4 prefix frr-bfdd;
5
6 import ietf-inet-types {
7 prefix inet;
8 }
9 import ietf-yang-types {
10 prefix yang;
11 }
12 import frr-interface {
13 prefix frr-interface;
14 }
15 import frr-vrf {
16 prefix frr-vrf;
17 }
18 import frr-route-types {
19 prefix frr-route-types;
20 }
21
22 organization "FRRouting";
23 contact
24 "FRR Users List: <mailto:frog@lists.frrouting.org>
25 FRR Development List: <mailto:dev@lists.frrouting.org>";
26 description
27 "This module defines a model for managing FRR bfdd daemon.
28
29 Copyright 2020 FRRouting
30
31 Redistribution and use in source and binary forms, with or without
32 modification, are permitted provided that the following conditions
33 are met:
34
35 1. Redistributions of source code must retain the above copyright notice,
36 this list of conditions and the following disclaimer.
37
38 2. Redistributions in binary form must reproduce the above copyright
39 notice, this list of conditions and the following disclaimer in the
40 documentation and/or other materials provided with the distribution.
41
42 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
43 \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
44 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
45 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
46 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
47 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
48 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
49 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
50 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
51 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
52 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
53
54 revision 2019-05-09 {
55 description "Initial revision.";
56 reference
57 "RFC 5880: Bidirectional Forwarding Detection (BFD).
58 RFC 5881: Bidirectional Forwarding Detection (BFD)
59 for IPv4 and IPv6 (Single Hop).
60 RFC 5883: Bidirectional Forwarding Detection (BFD) for Multihop Paths.";
61 }
62
63
64 /*
65 * BFD types declaration.
66 */
67 typedef multiplier {
68 description "Detection multiplier";
69 type uint8 {
70 range 2..255;
71 }
72 }
73
74 typedef discriminator {
75 description "BFD session identification";
76 type uint32 {
77 range 1..4294967295;
78 }
79 }
80
81 typedef state {
82 description "BFD session state";
83 type enumeration {
84 enum admin-down {
85 value 0;
86 description "Administratively down";
87 }
88 enum down {
89 value 1;
90 description "Down";
91 }
92 enum init {
93 value 2;
94 description "Initializing";
95 }
96 enum up {
97 value 3;
98 description "Up";
99 }
100 }
101 }
102
103 typedef diagnostic {
104 description "BFD session diagnostic";
105 type enumeration {
106 enum ok {
107 value 0;
108 description "Ok";
109 }
110 enum control-expired {
111 value 1;
112 description "Control timer expired";
113 }
114 enum echo-failed {
115 value 2;
116 description "Echo function failed";
117 }
118 enum neighbor-down {
119 value 3;
120 description "Neighbor signaled session down";
121 }
122 enum forwarding-reset {
123 value 4;
124 description "Forwarding plane reset";
125 }
126 enum path-down {
127 value 5;
128 description "Path down";
129 }
130 enum concatenated-path-down {
131 value 6;
132 description "Concatenated path down";
133 }
134 enum administratively-down {
135 value 7;
136 description "Administratively down";
137 }
138 enum reverse-concat-path-down {
139 value 8;
140 description "Reverse concatenated path down";
141 }
142 }
143 }
144
145 typedef profile-name {
146 type string {
147 length "1..64";
148 }
149 description "Profile name format";
150 }
151
152 typedef profile-ref {
153 type leafref {
154 path "/frr-bfdd:bfdd/frr-bfdd:bfd/frr-bfdd:profile/frr-bfdd:name";
155 require-instance false;
156 }
157 description "Reference to a BFD profile";
158 }
159
160 /*
161 * Shared BFD items.
162 */
163 grouping session-common {
164 description "Common BFD session settings";
165
166 leaf detection-multiplier {
167 type multiplier;
168 default 3;
169 description "Local session detection multiplier";
170 }
171
172 leaf desired-transmission-interval {
173 type uint32;
174 units microseconds;
175 default 300000;
176 description "Minimum desired control packet transmission interval";
177 }
178
179 leaf required-receive-interval {
180 type uint32;
181 units microseconds;
182 default 300000;
183 description "Minimum required control packet receive interval";
184 }
185
186 leaf administrative-down {
187 type boolean;
188 default true;
189 description "Disables or enables the session administratively";
190 }
191
192 leaf passive-mode {
193 type boolean;
194 default false;
195 description
196 "Don't attempt to start session establishment.";
197 }
198 }
199
200 grouping session-echo {
201 description "BFD session echo settings";
202
203 leaf echo-mode {
204 type boolean;
205 default false;
206 description "Use echo packets to detect failures";
207 }
208
209 leaf desired-echo-transmission-interval {
210 type uint32;
211 units microseconds;
212 default 50000;
213 description "Minimum desired control packet transmission interval";
214 }
215 }
216
217 grouping session-multi-hop {
218 description "BFD session multi hop settings.";
219
220 leaf minimum-ttl {
221 type uint8 {
222 range 1..254;
223 }
224 description
225 "Minimum expected TTL on received packets.";
226 }
227 }
228
229 grouping session-states {
230 /*
231 * Local settings.
232 */
233 leaf local-discriminator {
234 type discriminator;
235 description "Local session identifier";
236 }
237
238 leaf local-state {
239 type state;
240 description "Local session state";
241 }
242
243 leaf local-diagnostic {
244 type diagnostic;
245 description "Local session diagnostic";
246 }
247
248 leaf local-multiplier {
249 type multiplier;
250 description "Local session current multiplier";
251 }
252
253 /*
254 * Remote settings.
255 */
256 leaf remote-discriminator {
257 type discriminator;
258 description "Remote session identifier";
259 }
260
261 leaf remote-state {
262 type state;
263 description "Remote session state";
264 }
265
266 leaf remote-diagnostic {
267 type diagnostic;
268 description "Local session diagnostic";
269 }
270
271 leaf remote-multiplier {
272 type multiplier;
273 description "Remote session detection multiplier";
274 }
275
276 /*
277 * Negotiated settings.
278 */
279 leaf negotiated-transmission-interval {
280 description "Negotiated transmit interval";
281 type uint32;
282 units microseconds;
283 }
284
285 leaf negotiated-receive-interval {
286 description "Negotiated receive interval";
287 type uint32;
288 units microseconds;
289 }
290
291 leaf detection-mode {
292 description "Detection mode";
293
294 type enumeration {
295 enum async-with-echo {
296 value "1";
297 description "Async with echo";
298 }
299 enum async-without-echo {
300 value "2";
301 description "Async without echo";
302 }
303 enum demand-with-echo {
304 value "3";
305 description "Demand with echo";
306 }
307 enum demand-without-echo {
308 value "4";
309 description "Demand without echo";
310 }
311 }
312 }
313
314 /*
315 * Statistics.
316 */
317 leaf last-down-time {
318 type yang:date-and-time;
319 description "Time and date of the last time session was down";
320 }
321
322 leaf last-up-time {
323 type yang:date-and-time;
324 description "Time and date of the last time session was up";
325 }
326
327 leaf session-down-count {
328 type uint32;
329 description "Number of times the session went down";
330 }
331
332 leaf session-up-count {
333 type uint32;
334 description "Number of times the session went up";
335 }
336
337 leaf control-packet-input-count {
338 type uint64;
339 description "Number of control packets received";
340 }
341
342 leaf control-packet-output-count {
343 type uint64;
344 description "Number of control packets sent";
345 }
346
347 /*
348 * Echo mode operational data.
349 */
350 leaf negotiated-echo-transmission-interval {
351 type uint32;
352 units microseconds;
353 description "Negotiated echo transmit interval";
354 }
355
356 /*
357 * Statistics.
358 */
359 leaf echo-packet-input-count {
360 type uint64;
361 description "Number of echo packets received";
362 }
363
364 leaf echo-packet-output-count {
365 type uint64;
366 description "Number of echo packets sent";
367 }
368 }
369
370 /*
371 * BFD operational.
372 */
373 container bfdd {
374 container bfd {
375 presence "Present if the BFD protocol is enabled";
376
377 list profile {
378 key "name";
379 description "BFD pre configuration profiles";
380
381 leaf name {
382 type profile-name;
383 description "Profile name";
384 }
385
386 uses session-common;
387 uses session-echo;
388 uses session-multi-hop;
389 }
390
391 container sessions {
392 list single-hop {
393 key "dest-addr interface vrf";
394 description "List of single hop sessions";
395
396 leaf dest-addr {
397 type inet:ip-address;
398 description "IP address of the peer";
399 }
400
401 leaf interface {
402 type frr-interface:interface-ref;
403 description "Interface to use to contact peer";
404 }
405
406 leaf vrf {
407 type frr-vrf:vrf-ref;
408 description "Virtual Routing Domain name";
409 }
410
411 leaf source-addr {
412 type inet:ip-address;
413 description "Local IP address";
414 }
415
416 leaf profile {
417 type profile-ref;
418 description "Override defaults with profile.";
419 }
420
421 uses session-common;
422 uses session-echo;
423
424 container stats {
425 uses session-states;
426 config false;
427 }
428 }
429
430 list multi-hop {
431 key "source-addr dest-addr interface vrf";
432 description "List of multi hop sessions";
433
434 leaf source-addr {
435 type inet:ip-address;
436 description "Local IP address";
437 }
438
439 leaf dest-addr {
440 type inet:ip-address;
441 description "IP address of the peer";
442 }
443
444 leaf interface {
445 type frr-interface:interface-ref;
446 description "Interface to use to contact peer";
447 }
448
449 leaf vrf {
450 type frr-vrf:vrf-ref;
451 description "Virtual Routing Domain name";
452 }
453
454 leaf profile {
455 type profile-ref;
456 description "Override defaults with profile.";
457 }
458
459 uses session-common;
460 uses session-multi-hop;
461
462 container stats {
463 uses session-states;
464 config false;
465 }
466 }
467 }
468 }
469 }
470 }