module ietf-bfd-ip-sh {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh";
  prefix bfd-ip-sh;

  import ietf-bfd-types {
    prefix bfd-types;
    reference
      "RFC 9314: YANG Data Model for Bidirectional Forwarding
       Detection (BFD)";
  }
  import ietf-bfd {
    prefix bfd;
    reference
      "RFC 9314: YANG Data Model for Bidirectional Forwarding
       Detection (BFD)";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-routing {
    prefix rt;
    reference
      "RFC 8349: A YANG Data Model for Routing Management
       (NMDA Version)";
  }

  organization
    "IETF BFD Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/bfd/>
     WG List:  <mailto:rtg-bfd@ietf.org>

     Editor:   Reshad Rahman
               <mailto:reshad@yahoo.com>

     Editor:   Lianshu Zheng
               <mailto:veronique_cheng@hotmail.com>

     Editor:   Mahesh Jethanandani
               <mailto:mjethanandani@gmail.com>";
  description
    "This module contains the YANG definition for BFD IP single-hop
     as per RFC 5881.

     Copyright (c) 2022 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC 9314; see the
     RFC itself for full legal notices.";
  reference
    "RFC 5881: Bidirectional Forwarding Detection (BFD)
     for IPv4 and IPv6 (Single Hop)
     RFC 9314: YANG Data Model for Bidirectional Forwarding
     Detection (BFD)";

  revision 2022-09-22 {
    description
      "Updating reference to RFC 9314.";
    reference
      "RFC 9314: YANG Data Model for Bidirectional Forwarding
       Detection (BFD).";
  }
  revision 2021-10-21 {
    description
      "Initial revision.";
    reference
      "RFC 9127: YANG Data Model for Bidirectional Forwarding
       Detection (BFD)";
  }

  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/bfd:bfd" {
    description
      "BFD augmentation for IP single-hop.";
    container ip-sh {
      description
        "BFD IP single-hop top-level container.";
      uses bfd-types:session-statistics-summary;
      container sessions {
        description
          "BFD IP single-hop sessions.";
        list session {
          key "interface dest-addr";
          description
            "List of IP single-hop sessions.";
          leaf interface {
            type if:interface-ref;
            description
              "Interface on which the BFD session is running.";
          }
          leaf dest-addr {
            type inet:ip-address;
            description
              "IP address of the peer.";
          }
          leaf source-addr {
            type inet:ip-address;
            description
              "Local IP address.";
          }
          uses bfd-types:common-cfg-parms;
          uses bfd-types:all-session;
        }
      }
      list interfaces {
        key "interface";
        description
          "List of interfaces.";
        leaf interface {
          type if:interface-ref;
          description
            "BFD information for this interface.";
        }
        uses bfd-types:auth-parms;
      }
    }
  }

  notification singlehop-notification {
    description
      "Notification for BFD single-hop session state change.  An
       implementation may rate-limit notifications, e.g., when a
       session is continuously changing state.";
    uses bfd-types:notification-parms;
    leaf interface {
      type if:interface-ref;
      description
        "Interface to which this BFD session belongs.";
    }
    leaf echo-enabled {
      type boolean;
      description
        "Indicates whether Echo was enabled for BFD.";
    }
  }
}
