summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Zalamena <rzalamena@opensourcerouting.org>2019-05-18 20:58:20 +0200
committerRafael Zalamena <rzalamena@opensourcerouting.org>2019-06-22 15:08:33 +0200
commit990e89e5edcc096527f291353289036aed3985a3 (patch)
treeda241ed2e3f7b4f84e2021f1050a5091874dda4a
parentMerge pull request #4589 from ton31337/fix/match_ip_next_hop_type_allows_with... (diff)
downloadfrr-990e89e5edcc096527f291353289036aed3985a3.tar.xz
frr-990e89e5edcc096527f291353289036aed3985a3.zip
yang: import BFD yang model
New yang model to support the BFD session configuration. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
-rw-r--r--yang/frr-bfdd.yang387
1 files changed, 387 insertions, 0 deletions
diff --git a/yang/frr-bfdd.yang b/yang/frr-bfdd.yang
new file mode 100644
index 000000000..4fb857e6d
--- /dev/null
+++ b/yang/frr-bfdd.yang
@@ -0,0 +1,387 @@
+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-route-types {
+ prefix frr-route-types;
+ }
+
+ organization "Free Range Routing";
+ 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.";
+
+ 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 5882: 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";
+ }
+ }
+ }
+
+ /*
+ * 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;
+ units milliseconds;
+ default 300;
+ description "Minimum desired control packet transmission interval";
+ }
+
+ leaf required-receive-interval {
+ type uint32;
+ units milliseconds;
+ default 300;
+ description "Minimum required control packet receive interval";
+ }
+
+ leaf administrative-down {
+ type boolean;
+ default true;
+ description "Disables or enables the session administratively";
+ }
+ }
+
+ 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;
+ units milliseconds;
+ default 50;
+ description "Minimum desired control packet transmission interval";
+ }
+ }
+
+ 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 milliseconds;
+ }
+
+ leaf negotiated-receive-interval {
+ description "Negotiated receive interval";
+ type uint32;
+ units milliseconds;
+ }
+
+ 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 "Amount of times the session went down";
+ }
+
+ leaf session-up-count {
+ type uint32;
+ description "Amount of times the session went up";
+ }
+
+ leaf control-packet-input-count {
+ type uint64;
+ description "Amount of control packets received";
+ }
+
+ leaf control-packet-output-count {
+ type uint64;
+ description "Amount of control packets sent";
+ }
+
+ /*
+ * Echo mode operational data.
+ */
+ leaf negotiated-echo-transmission-interval {
+ type uint32;
+ units milliseconds;
+ description "Negotiated echo transmit interval";
+ }
+
+ /*
+ * Statistics.
+ */
+ leaf echo-packet-input-count {
+ type uint64;
+ description "Amount of echo packets received";
+ }
+
+ leaf echo-packet-output-count {
+ type uint64;
+ description "Amount of echo packets sent";
+ }
+ }
+
+ /*
+ * BFD operational.
+ */
+ container bfdd {
+ container bfd {
+ presence "Present if the BFD protocol is enabled";
+
+ container sessions {
+ list single-hop {
+ key "dest-addr interface vrf";
+ description "List of single 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 interface {
+ type string {
+ length "0..16";
+ }
+ description "Interface to use to contact peer";
+ }
+
+ leaf vrf {
+ type string;
+ description "Virtual Routing Domain name";
+ }
+
+ uses session-common;
+ uses session-echo;
+
+ container stats {
+ uses session-states;
+ config false;
+ }
+ }
+
+ list multi-hop {
+ key "source-addr dest-addr interface 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 interface {
+ type string {
+ length "0..16";
+ }
+ description "Interface to use to contact peer";
+ }
+
+ leaf vrf {
+ type string;
+ description "Virtual Routing Domain name";
+ }
+
+ uses session-common;
+
+ container stats {
+ uses session-states;
+ config false;
+ }
+ }
+ }
+ }
+ }
+}