summaryrefslogtreecommitdiffstats
path: root/yang/frr-bfdd.yang
diff options
context:
space:
mode:
Diffstat (limited to 'yang/frr-bfdd.yang')
-rw-r--r--yang/frr-bfdd.yang481
1 files changed, 481 insertions, 0 deletions
diff --git a/yang/frr-bfdd.yang b/yang/frr-bfdd.yang
new file mode 100644
index 0000000..08b6073
--- /dev/null
+++ b/yang/frr-bfdd.yang
@@ -0,0 +1,481 @@
+module frr-bfdd {
+ yang-version 1.1;
+ namespace "http://frrouting.org/yang/bfdd";
+ prefix frr-bfdd;
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+ import ietf-yang-types {
+ prefix yang;
+ }
+ import frr-interface {
+ prefix frr-interface;
+ }
+ import frr-vrf {
+ prefix frr-vrf;
+ }
+ import frr-route-types {
+ prefix frr-route-types;
+ }
+
+ organization "FRRouting";
+ contact
+ "FRR Users List: <mailto:frog@lists.frrouting.org>
+ FRR Development List: <mailto:dev@lists.frrouting.org>";
+ description
+ "This module defines a model for managing FRR bfdd daemon.
+
+ Copyright 2020 FRRouting
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
+
+ revision 2019-05-09 {
+ description "Initial revision.";
+ reference
+ "RFC 5880: Bidirectional Forwarding Detection (BFD).
+ RFC 5881: Bidirectional Forwarding Detection (BFD)
+ for IPv4 and IPv6 (Single Hop).
+ RFC 5883: Bidirectional Forwarding Detection (BFD) for Multihop Paths.";
+ }
+
+
+ /*
+ * BFD types declaration.
+ */
+ typedef multiplier {
+ description "Detection multiplier";
+ type uint8 {
+ range "2..255";
+ }
+ }
+
+ typedef discriminator {
+ description "BFD session identification";
+ type uint32 {
+ range "1..4294967295";
+ }
+ }
+
+ typedef state {
+ description "BFD session state";
+ type enumeration {
+ enum admin-down {
+ value 0;
+ description "Administratively down";
+ }
+ enum down {
+ value 1;
+ description "Down";
+ }
+ enum init {
+ value 2;
+ description "Initializing";
+ }
+ enum up {
+ value 3;
+ description "Up";
+ }
+ }
+ }
+
+ typedef diagnostic {
+ description "BFD session diagnostic";
+ type enumeration {
+ enum ok {
+ value 0;
+ description "Ok";
+ }
+ enum control-expired {
+ value 1;
+ description "Control timer expired";
+ }
+ enum echo-failed {
+ value 2;
+ description "Echo function failed";
+ }
+ enum neighbor-down {
+ value 3;
+ description "Neighbor signaled session down";
+ }
+ enum forwarding-reset {
+ value 4;
+ description "Forwarding plane reset";
+ }
+ enum path-down {
+ value 5;
+ description "Path down";
+ }
+ enum concatenated-path-down {
+ value 6;
+ description "Concatenated path down";
+ }
+ enum administratively-down {
+ value 7;
+ description "Administratively down";
+ }
+ enum reverse-concat-path-down {
+ value 8;
+ description "Reverse concatenated path down";
+ }
+ }
+ }
+
+ typedef profile-name {
+ type string {
+ length "1..64";
+ }
+ description "Profile name format";
+ }
+
+ typedef profile-ref {
+ type leafref {
+ path "/frr-bfdd:bfdd/frr-bfdd:bfd/frr-bfdd:profile/frr-bfdd:name";
+ require-instance false;
+ }
+ description "Reference to a BFD profile";
+ }
+
+ /*
+ * Shared BFD items.
+ */
+ grouping session-common {
+ description "Common BFD session settings";
+
+ leaf detection-multiplier {
+ type multiplier;
+ default 3;
+ description "Local session detection multiplier";
+ }
+
+ leaf desired-transmission-interval {
+ type uint32 {
+ range "10000..60000000";
+ }
+ units microseconds;
+ default 300000;
+ description "Minimum desired control packet transmission interval";
+ }
+
+ leaf required-receive-interval {
+ type uint32 {
+ range "10000..60000000";
+ }
+ units microseconds;
+ default 300000;
+ description "Minimum required control packet receive interval";
+ }
+
+ leaf administrative-down {
+ type boolean;
+ default false;
+ description "Disables or enables the session administratively";
+ }
+
+ leaf passive-mode {
+ type boolean;
+ default false;
+ description
+ "Don't attempt to start session establishment.";
+ }
+ }
+
+ grouping session-echo {
+ description "BFD session echo settings";
+
+ leaf echo-mode {
+ type boolean;
+ default false;
+ description "Use echo packets to detect failures";
+ }
+
+ leaf desired-echo-transmission-interval {
+ type uint32 {
+ range "10000..60000000";
+ }
+ units microseconds;
+ default 50000;
+ description "Minimum desired echo packet transmission interval";
+ }
+
+ leaf required-echo-receive-interval {
+ type uint32 {
+ range "0 | 10000..60000000";
+ }
+ units microseconds;
+ default 50000;
+ description "Minimum required echo packet receive interval";
+ }
+ }
+
+ grouping session-multi-hop {
+ description "BFD session multi hop settings.";
+
+ leaf minimum-ttl {
+ type uint8 {
+ range "1..254";
+ }
+ default "254";
+ description
+ "Minimum expected TTL on received packets.";
+ }
+ }
+
+ grouping session-states {
+ /*
+ * Local settings.
+ */
+ leaf local-discriminator {
+ type discriminator;
+ description "Local session identifier";
+ }
+
+ leaf local-state {
+ type state;
+ description "Local session state";
+ }
+
+ leaf local-diagnostic {
+ type diagnostic;
+ description "Local session diagnostic";
+ }
+
+ leaf local-multiplier {
+ type multiplier;
+ description "Local session current multiplier";
+ }
+
+ /*
+ * Remote settings.
+ */
+ leaf remote-discriminator {
+ type discriminator;
+ description "Remote session identifier";
+ }
+
+ leaf remote-state {
+ type state;
+ description "Remote session state";
+ }
+
+ leaf remote-diagnostic {
+ type diagnostic;
+ description "Local session diagnostic";
+ }
+
+ leaf remote-multiplier {
+ type multiplier;
+ description "Remote session detection multiplier";
+ }
+
+ /*
+ * Negotiated settings.
+ */
+ leaf negotiated-transmission-interval {
+ description "Negotiated transmit interval";
+ type uint32;
+ units microseconds;
+ }
+
+ leaf negotiated-receive-interval {
+ description "Negotiated receive interval";
+ type uint32;
+ units microseconds;
+ }
+
+ leaf detection-mode {
+ description "Detection mode";
+
+ type enumeration {
+ enum async-with-echo {
+ value "1";
+ description "Async with echo";
+ }
+ enum async-without-echo {
+ value "2";
+ description "Async without echo";
+ }
+ enum demand-with-echo {
+ value "3";
+ description "Demand with echo";
+ }
+ enum demand-without-echo {
+ value "4";
+ description "Demand without echo";
+ }
+ }
+ }
+
+ /*
+ * Statistics.
+ */
+ leaf last-down-time {
+ type yang:date-and-time;
+ description "Time and date of the last time session was down";
+ }
+
+ leaf last-up-time {
+ type yang:date-and-time;
+ description "Time and date of the last time session was up";
+ }
+
+ leaf session-down-count {
+ type uint32;
+ description "Number of times the session went down";
+ }
+
+ leaf session-up-count {
+ type uint32;
+ description "Number of times the session went up";
+ }
+
+ leaf control-packet-input-count {
+ type uint64;
+ description "Number of control packets received";
+ }
+
+ leaf control-packet-output-count {
+ type uint64;
+ description "Number of control packets sent";
+ }
+
+ /*
+ * Echo mode operational data.
+ */
+ leaf negotiated-echo-transmission-interval {
+ type uint32;
+ units microseconds;
+ description "Negotiated echo transmit interval";
+ }
+
+ /*
+ * Statistics.
+ */
+ leaf echo-packet-input-count {
+ type uint64;
+ description "Number of echo packets received";
+ }
+
+ leaf echo-packet-output-count {
+ type uint64;
+ description "Number of echo packets sent";
+ }
+ }
+
+ /*
+ * BFD operational.
+ */
+ container bfdd {
+ container bfd {
+ presence "Present if the BFD protocol is enabled";
+
+ list profile {
+ key "name";
+ description "BFD pre configuration profiles";
+
+ leaf name {
+ type profile-name;
+ description "Profile name";
+ }
+
+ uses session-common;
+ uses session-echo;
+ uses session-multi-hop;
+ }
+
+ container sessions {
+ list single-hop {
+ key "dest-addr interface vrf";
+ description "List of single hop sessions";
+
+ leaf dest-addr {
+ type inet:ip-address;
+ description "IP address of the peer";
+ }
+
+ leaf interface {
+ type frr-interface:interface-ref;
+ description "Interface to use to contact peer";
+ }
+
+ leaf vrf {
+ type frr-vrf:vrf-ref;
+ description "Virtual Routing Domain name";
+ }
+
+ leaf source-addr {
+ type inet:ip-address;
+ description "Local IP address";
+ }
+
+ leaf profile {
+ type profile-ref;
+ description "Override defaults with profile.";
+ }
+
+ uses session-common;
+ uses session-echo;
+
+ container stats {
+ uses session-states;
+ config false;
+ }
+ }
+
+ list multi-hop {
+ key "source-addr dest-addr vrf";
+ description "List of multi hop sessions";
+
+ leaf source-addr {
+ type inet:ip-address;
+ description "Local IP address";
+ }
+
+ leaf dest-addr {
+ type inet:ip-address;
+ description "IP address of the peer";
+ }
+
+ leaf vrf {
+ type frr-vrf:vrf-ref;
+ description "Virtual Routing Domain name";
+ }
+
+ leaf profile {
+ type profile-ref;
+ description "Override defaults with profile.";
+ }
+
+ uses session-common;
+ uses session-multi-hop;
+
+ container stats {
+ uses session-states;
+ config false;
+ }
+ }
+ }
+ }
+ }
+}