bbf-ancp

This module contains a collection of YANG definitions for supporting the Broadband Forum requirements on the Access Node Control...

  • Version: 2020-10-13

    bbf-ancp@2020-10-13


    
      module bbf-ancp {
    
        yang-version 1.1;
    
        namespace "urn:bbf:yang:bbf-ancp";
    
        prefix bbf-ancp;
    
        import bbf-yang-types {
          prefix bbf-yang;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix yang;
        }
    
        organization
          "Broadband Forum <https://www.broadband-forum.org>
         Common YANG Work Area";
    
        contact
          "Comments or questions about this Broadband Forum YANG module
         should be directed to <mailto:help@broadband-forum.org>.
    
         Editor:      Nick Hancock, ADTRAN
    
         Editor:      Ludwig Pauwels, Nokia
    
         PS Leader:   Joey Boyd, ADTRAN
    
         PS Leader:   Sowrirajan Padmanabhan, Nokia
    
         WA Director: Joey Boyd, ADTRAN
    
         WA Director: Sven Ooghe, Nokia";
    
        description
          "This module contains a collection of YANG definitions for
         supporting the Broadband Forum requirements on the Access Node
         Control Protocol (ANCP) as defined in RFC 6320. As such, this
         module is specific to access network equipment (e.g.,
         BBF-specified Access Nodes and FTTdp DPUs).
    
         This data model is designed for the Network Management Datastore
         Architecture defined in RFC 8342.
    
         Copyright (c) 2017-2020, Broadband Forum
    
         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.
    
         3. Neither the name of the copyright holder nor the names of its
            contributors may be used to endorse or promote products
            derived from this software without specific prior written
            permission.
    
         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.
    
         The above license is used as a license under copyright only.
         Please reference the Forum IPR Policy for patent licensing terms
         <https://www.broadband-forum.org/ipr-policy>.
    
         Any moral rights which are necessary to exercise under the above
         license grant are also deemed granted under this license.
    
         This version of this YANG module is part of TR-383a3; see
         the TR itself for full legal notices.";
    
        reference
          "RFC 6320";
    
    
        revision "2020-10-13" {
          description
            "Amendment 3.
           * Approval Date:    2020-10-13.
           * Publication Date: 2020-10-13.";
          reference
            "TR-383a3: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-3.pdf>";
    
        }
    
    
        feature protocol-version {
          description
            "Indicates support for the configuration of the protocol
           version of ANCP sessions.";
        }
    
        feature partition-id-negotiation {
          description
            "Indicates that the device supports negotiation of the
           Partition ID to be used to be used by ANCP sessions to
           associate ANCP messages with the partition of the Access Node
           (AN) managed by a session.";
        }
    
        feature session-statistics {
          description
            "Indicates support for statistics for ANCP sessions.";
        }
    
        feature tcp-port {
          description
            "Indicates support for the configuration of the TCP port for
           ANCP.";
        }
    
        feature port-message-dampening {
          description
            "Indicates support for the configuration of the dampening
           mechanism to limit the rate at which Port Up and Port Down
           messages are sent to the Network Access Server (NAS).";
        }
    
        identity capabilities {
          description
            "Base identity for defining ANCP capabilities.";
        }
    
        identity topology-discovery {
          base capabilities;
          description
            "The Access Topology Discovery function is intended to
           allow the NAS to gain knowledge about the topology of the
           access network, the various lines being used, and their
           respective rates without having to rely on an integration
           with an OSS system.";
          reference
            "RFC 6320 section 6";
    
        }
    
        identity access-line-technology {
          description
            "Base identity for defining the technology of access lines
           managed by a partition.";
          reference
            "RFC 6320 section 6.5";
    
        }
    
        identity access-line-attribute {
          description
            "Base identity for defining access line attributes defined in
           the ANCP.
    
           This is an abstract identity and MUST NOT be used for access
           line attributes.";
          reference
            "RFC 6320 section 6.5";
    
        }
    
        identity technology-independent-access-line-attribute {
          base access-line-attribute;
          description
            "Base identity for defining technology-independent access line
           attributes defined in the ANCP.
    
           This is an abstract identity and MUST NOT be used for access
           line attributes.";
          reference
            "RFC 6320 section 6.5";
    
        }
    
        identity access-loop-encapsulation {
          base technology-independent-access-line-attribute;
          description
            "The data link protocol and, optionally, the encapsulation
           overhead on the access loop.";
          reference
            "RFC 6320 section 6.5.18";
    
        }
    
        typedef protocol-version {
          type enumeration {
            enum "rfc6320" {
              value 0;
              description
                "RFC 6320 defines ANCP Version 1 which is identified by
               version = 50 in protocol messages as defined the joint
               GSMP / ANCP Version Registry. ";
              reference
                "RFC 6320 section 10.8";
    
            }
          }
          description
            "Defines the supported protocol versions.";
        }
    
        typedef partition-id {
          type uint8 {
            range "1..255";
          }
          description
            "Defines the Partition ID.";
          reference
            "RFC 6320 section 3.5.1";
    
        }
    
        typedef entity-name {
          type union {
            type enumeration {
              enum "unknown" {
                value 0;
                description
                  "The name of the sending/receiving entity is unknown.";
              }
            }
            type yang:hex-string {
              length "17";
            }
          }
          description
            "An entity name used to identify the sender/receiver of an
           ANCP message.";
          reference
            "RFC 6320 section 3.5.1";
    
        }
    
        typedef link-instance {
          type union {
            type uint32 {
              range "1..16777216";
            }
            type enumeration {
              enum "undefined" {
                value 0;
                description
                  "The instance number is undefined.";
              }
            }
          }
          description
            "The instance number used to identify the link within the
           AN or NAS.";
          reference
            "RFC 6320 section 3.5.1";
    
        }
    
        container ancp {
          description
            "Management of the Access Node Control Protocol (ANCP).";
          container partitions {
            must
              "(bbf-ancp:partition/bbf-ancp:partition-id='global' and count(bbf-ancp:partition)=1) or not(bbf-ancp:partition/bbf-ancp:partition-id='global')" {
              error-message
                "The device may only be configured for a single global partition or fixed partitions, but not both.";
              description
                "Prevent both the global partition and fixed partitions
    from being configured at the same time.";
            }
            description
              "Management of ANCP partitions on the device.";
            list partition {
              key "partition-id";
              description "A partition.";
              leaf partition-id {
                type union {
                  type enumeration {
                    enum "global" {
                      value 0;
                      description
                        "The partition represents a device that is
                       configured to operate without fixed partitions.";
                    }
                  }
                  type partition-id;
                }
                description
                  "Uniquely identifies the partition.
    
    If the device is to use fixed partitions, this leaf must
    be set to a value between 1 and 255; this value will be
    used to associate ANCP messages with this specific
    partition.
    
    If the device is not to use fixed partitions, i.e., is
    not partitioned, this leaf must be set to 'global', in
    which case no other partition may be configured.
    
    If the single partition with 'partition-id' set to
    'global' is configured, the PType and Partition ID in
    the Adjacency Message must be being set to 0 (no
    partition) and 0 respectively.";
                reference
                  "RFC 6320 section 3.5.2.4.2";
    
              }
    
              leaf technology {
                type identityref {
                  base access-line-technology;
                }
                mandatory true;
                description
                  "The access line technology supported by the partition.";
              }
    
              container sessions {
                description
                  "Management of ANCP sessions.";
                list session {
                  key "name";
                  description "An ANCP session.";
                  leaf name {
                    type string;
                    description
                      "An arbitrary name for the session.";
                  }
    
                  leaf protocol-version {
                    if-feature bbf-ancp:protocol-version;
                    type protocol-version;
                    default "rfc6320";
                    description
                      "The ANCP protocol version to be used by the
    session.";
                    reference
                      "RFC 6320 section 3.5.1";
    
                  }
    
                  leaf-list capability {
                    type identityref {
                      base capabilities;
                    }
                    min-elements 1;
                    description
                      "The common set of ANCP capabilities supported by this
    session. At least one capability must be configured.
    
    The final negotiated value may be different to the
    intended value and is to be found by operational
    data.";
                    reference
                      "RFC 6320 section 3.5.1 (Capability Fields).";
    
                  }
    
                  leaf oper-state {
                    type enumeration {
                      enum "down" {
                        value 0;
                        description
                          "The operational state of the session is down and
                         it is non-operational.";
                      }
                      enum "up" {
                        value 1;
                        description
                          "The operational state of the session is up and
                         it is operational.";
                      }
                    }
                    config false;
                    mandatory true;
                    description
                      "The operational state of the session. A session is
    deemed to be 'up', only when adjacency is
    established ('adjacency-state' is set to 'estab').";
                  }
    
                  container access-node {
                    description
                      "Configuration relevant to the AN side of the ANCP
    session.";
                    container name-source {
                      presence
                        "Enables selection of the source of the name to use
    to generate the Sender Name to be used for this
    ANCP session.
    
    If this container is not present, the system will
    use the a system MAC address to generate the
    Sender Name.";
                      description
                        "Configuration of the source to use to generate the
    Sender Name to be used for this ANCP session.";
                      choice which-name-source {
                        mandatory true;
                        description
                          "Configures which source to use to generate the
    Sender Name to use to identify the session at
    the AN to the NAS.";
                        reference
                          "RFC 6320 section 3.5.1 (Sender Name).";
    
                        case use-mac-address {
                          description
                            "Configures the session to use a system MAC
    address to generate the Sender Name to be
    inserted into ANCP messages to identify the
    AN.";
                          leaf use-mac-address {
                            type empty;
                            description
                              "Configures the session to use a system MAC
    address to generate the Sender Name to be
    inserted into ANCP messages to identify the
    AN.";
                          }
                        }  // case use-mac-address
                      }  // choice which-name-source
                    }  // container name-source
    
                    leaf name {
                      type entity-name;
                      config false;
                      mandatory true;
                      description
                        "The Name used by the entity (AN or NAS) as advertised in
    the adjacency message.
    
    This leaf has value 'unknown', if adjacency state is not
    ESTAB (established).";
                    }
    
                    leaf instance {
                      type link-instance;
                      config false;
                      mandatory true;
                      description
                        "The value for Instance used by the entity (AN or NAS) to
    identify the link to the peer.
    
    This leaf has value 'undefined', if adjacency state is not
    ESTAB (established).";
                    }
    
                    leaf address {
                      type inet:ip-address;
                      config false;
                      mandatory true;
                      description
                        "The IP address of the AN.";
                    }
    
                    leaf port {
                      type inet:port-number;
                      config false;
                      mandatory true;
                      description
                        "The IP port of the AN.";
                    }
                  }  // container access-node
    
                  container network-access-server {
                    description
                      "Configuration relevant to the Network Access Server
    (NAS) side of the ANCP session.";
                    leaf name {
                      type entity-name;
                      config false;
                      mandatory true;
                      description
                        "The Name used by the entity (AN or NAS) as advertised in
    the adjacency message.
    
    This leaf has value 'unknown', if adjacency state is not
    ESTAB (established).";
                    }
    
                    leaf instance {
                      type link-instance;
                      config false;
                      mandatory true;
                      description
                        "The value for Instance used by the entity (AN or NAS) to
    identify the link to the peer.
    
    This leaf has value 'undefined', if adjacency state is not
    ESTAB (established).";
                    }
    
                    choice transport {
                      mandatory true;
                      description
                        "Selects the transport for ANCP.";
                      case tcp {
                        description
                          "Configures TCP as the transport for ANCP.";
                        reference
                          "RFC 6320 section 3.2";
    
                        container tcp {
                          description
                            "Contains TCP-specific configuration for ANCP.";
                          leaf address {
                            type inet:host;
                            mandatory true;
                            description
                              "The IP address or the DNS domain name of the
    NAS.";
                          }
    
                          leaf port {
                            if-feature tcp-port;
                            type inet:port-number;
                            default "6068";
                            description
                              "The IP port of the NAS.";
                            reference
                              "RFC 6320 section 3.2";
    
                          }
                        }  // container tcp
                      }  // case tcp
                    }  // choice transport
                  }  // container network-access-server
    
                  container adjacency-protocol {
                    description
                      "Configuration to manage the adjacency protocol.";
                    leaf liveness-timer {
                      type uint8;
                      units "100 milliseconds";
                      default "250";
                      description
                        "The nominal time between periodic adjacency
    protocol messages.
    
    The final negotiated value, which will be constant
    for the duration of the ANCP session, may be
    different to the intended value and is to be found
    by querying state data.";
                      reference
                        "RFC 6320 section 3.5.1 (Timer).";
    
                    }
    
                    leaf adjacency-state {
                      type enumeration {
                        enum "malfunction" {
                          value 0;
                          description
                            "Adjacency could not be established, because of
                           a malfunctioning of the malfunctioning of the
                           adjacency protocol.";
                          reference
                            "RFC 5851 section 4.6.4 R-48.";
    
                        }
                        enum
                          "synchronization-lost" {
                          value 1;
                          description
                            "Indicates that the AN and NAS are no longer
                           synchronized. This may occur, if
                           - no valid ANCP messages are received in any
                             period of time in excess of three times the
                             value of the negotiated liveness timer;
                           or
                           - a mismatch in adjacency state is detected.";
                          reference
                            "RFC 6320 section 3.5.2.7";
    
                        }
                        enum "estab" {
                          value 2;
                          description
                            "The state ESTAB (established) indicates that
                           the AN has established a session.";
                          reference
                            "RFC 6320 section 3.5.2.2.7";
    
                        }
                        enum "synrcvd" {
                          value 3;
                          description
                            "The state SYNRCVD (synchronization received)
                           indicates that the AN has received a connection
                           request and sent an acknowledgment.";
                          reference
                            "RFC 6320 section 3.5.2.2.1";
    
                        }
                        enum "synsent" {
                          value 4;
                          description
                            "The state SYNSENT (synchronization sent)
                           indicates that the AN is waiting for an
                           acknowledgment from the NAS after having sent
                           a connection request.";
                          reference
                            "RFC 6320 section 3.5.2.2.1";
    
                        }
                      }
                      config false;
                      mandatory true;
                      description
                        "The operational state of the adjacency protocol.";
                      reference
                        "RFC 6320 section 3.5.2.2";
    
                    }
    
                    leaf partition-id {
                      when
                        "count(/bbf-ancp:ancp/bbf-ancp:partitions/bbf-ancp:partition)>0 and not(boolean(/bbf-ancp:ancp/bbf-ancp:partitions/bbf-ancp:partition[bbf-ancp:partition-id='global']))" {
                        description
                          "The use of a Partition ID is only applicable, if
    the AN has been partitioned.";
                      }
                      if-feature bbf-ancp:partition-id-negotiation;
                      type partition-id;
                      config false;
                      mandatory true;
                      description
                        "The Partition ID used by this session to associate
    ANCP messages with the partition of the AN managed
    by this session.
    
    The final negotiated value, which will be constant
    for the duration of the ANCP session, may be
    different to the Partition ID configured for the
    partition.";
                      reference
                        "RFC 6320 section 3.5.2.4.2";
    
                    }
                  }  // container adjacency-protocol
    
                  container access-line-identification {
                    description
                      "Configure Access Line Identification for ANCP.";
                    leaf-list access-line-identification {
                      type enumeration {
                        enum
                          "access-loop-circuit-id" {
                          value 0;
                          description
                            "Add the Access Loop Circuit ID TLV in the ANCP
                           message, i.e. the TLV with type value 0x0001.
    
                           The value inserted in the TLV is the value
                           defined by the data node '/bbf-subprof:
                           subscriber-profiles/bbf-subprof:subscriber-
                           profile/bbf-subprof:circuit-id' that is
                           associated with the interface, if present. If
                           not present, the value inserted will be
                           generated according to the syntax defined in
                           the leaf 'access-loop-circuit-id'. If this
                           leaf is not present or empty, then an empty
                           TLV will be inserted, i.e. a TLV with
                           Length = 0.";
                          reference
                            "RFC 6320 section 5.1.2.1,
                            TR-101i2 Section 3.9.3.";
    
                        }
                        enum
                          "access-loop-remote-id" {
                          value 1;
                          description
                            "Add the Access Loop Remote ID TLV in the ANCP
                           message, i.e. the TLV with type value 0x0002.
    
                           The value inserted in the TLV is the value
                           defined by the data node '/bbf-subprof:
                           subscriber-profiles/bbf-subprof:subscriber-
                           profile/bbf-subprof:remote-id' that is
                           associated with the interface, if present. If
                           not present, then an empty TLV will be
                           inserted, i.e. a TLV with Length = 0.";
                          reference
                            "RFC 6320 section 5.1.2.2,
                            TR-101i2 Section 3.9.3.";
    
                        }
                        enum
                          "access-aggregation-circuit-id-binary" {
                          value 2;
                          description
                            "Add the Access Aggregation Circuit ID Binary
                           TLV in the ANCP message, i.e. the TLV with
                           type value 0x0006.
    
                           This TLV identifies or partially identifies a
                           specific access line by means of its logical
                           circuit identifier on the NAS side of the AN.
                           It is defined to contain VLAN ID(s).
    
                           The value of the TLV contains the VLAN IDs of
                           the VLAN tags to be used in data frames sent
                           on a network interface. However, this is not
                           necessarily the same for all data frames
                           coming from a single access line. The
                           selection of which values to use for the
                           VLAN IDs is defined by the value configured
                           via the interface.";
                          reference
                            "RFC 6320 section 5.1.2.3,
                            TR-101i2 Section 3.9.3.";
    
                        }
                        enum
                          "access-aggregation-circuit-id-ascii" {
                          value 3;
                          description
                            "Add the Access Aggregation Circuit ID ASCII
                           TLV in the ANCP message, i.e. the TLV with
                           type value 0x0003.
    
                           The value is identified in the same way as the
                           value for the Access Aggregation Circuit ID
                           Binary TLV.
    
                           The difference for the TLV value is the
                           produced format, i.e. for the Access
                           Aggregation Circuit Id ASCII TLV the format is
                           in ASCII and based on a syntax configured in
                           the leaf 'access-aggregation-circuit-id-ascii'.
                           If this leaf is empty, then an empty TLV will
                           be inserted, i.e. a TLV with Length = 0.";
                          reference
                            "RFC 6320 section 5.1.2.4,
                            TR-101i2 Section 3.9.3.";
    
                        }
                      }
                      min-elements 1;
                      description
                        "Identifies how to generate / interpret the Access
    Line Identification TLVs used in ANCP messages.";
                    }
    
                    leaf access-loop-circuit-id {
                      type bbf-yang:string-ascii63-or-empty;
                      default "";
                      description
                        "ASCII string identifying the access loop logical
    port on the user side of the AN. It may contain
    any characters and variables, e.g.
    'Access_Node_ID eth slot/port'.";
                      reference
                        "RFC 6320 section 5.1.2.1 and
                        TR-101 Section 3.9.3.";
    
                    }
    
                    leaf access-aggregation-circuit-id-ascii {
                      type bbf-yang:string-ascii63-or-empty;
                      default "";
                      description
                        "ASCII string identifying or partially identifying
    a specific access line by means of its logical
    circuit identifier on the NAS side of the Access
    Node. As per RFC 6320 it shall contain VLAN IDs
    similar as the Access Aggregation Circuit ID
    Binary TLV, but in a format as specified by
    TR-101.
    
    It may contain any characters and variables, e.g.
    'S-VID:C-VID'.";
                      reference
                        "RFC 6320 section 5.1.2.4";
    
                    }
    
                    leaf start-numbering-from-zero {
                      type boolean;
                      default "false";
                      description
                        "In case the leaf 'access-loop-circuit-id' or
    'access-aggregation-circuit-id-ascii' indicates the
    TLV shall contain a slot, a port or another
    variable for which the numbering is defined by the
    AN, then this leaf determines if the numbering
    MUST start from 0 or 1.";
                      reference
                        "TR-178 - R118";
    
                    }
    
                    leaf use-leading-zeroes {
                      type boolean;
                      default "false";
                      description
                        "In case the leaf 'access-loop-circuit-id' or the
    'access-aggregation-circuit-id-ascii' contain
    variables for which the value can be multiple
    digits, then this leaf determines if the
    slot/port/VLAN ID numbering MUST use leading 0's
    or not, i.e. generate a fixed length string or a
    string with only meaningful digits.";
                      reference
                        "TR-178 - R119 and TR-101i2 - R153";
    
                    }
                  }  // container access-line-identification
    
                  container topology-discovery {
                    when
                      "../capability='bbf-ancp:topology-discovery'" {
                      description
                        "Only applicable, if the topology discovery
    capability has been selected.";
                    }
                    description
                      "Configuration to manage line state reporting for
    topology discovery.";
                    container port-up {
                      description
                        "Configuration to manage line state reporting for
    the Port Up message.";
                    }  // container port-up
    
                    container port-down {
                      description
                        "Configuration to manage line state reporting for
    the Port Down message.";
                    }  // container port-down
                  }  // container topology-discovery
    
                  container statistics {
                    if-feature bbf-ancp:session-statistics;
                    config false;
                    description
                      "ANCP statistics for this session.";
                    leaf last-established-timestamp {
                      type yang:date-and-time;
                      mandatory true;
                      description
                        "The date and time the session last entered the
    established state.";
                    }
    
                    leaf last-discontinuity-timestamp {
                      type yang:date-and-time;
                      mandatory true;
                      description
                        "The date and time the session last suffered a
    discontinuity.";
                    }
    
                    leaf in-valid-messages {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of messages that have been received and
    processed in this session by the AN.
    
    All ANCP messages pertaining to this session shall
    be counted, also including adjacency protocol
    messages and failure response messages.";
                    }
    
                    leaf in-discarded-messages {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of messages that in this session have
    been received and discarded for whatever reason by
    the AN.
    
    All ANCP messages pertaining to this session shall
    be counted, also including adjacency protocol
    messages and failure response messages.";
                    }
    
                    leaf out-messages {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of messages that have been sent in this
    session by the AN.
    
    All ANCP messages pertaining to this session shall
    be counted, also including adjacency protocol
    messages and failure response messages.";
                    }
    
                    leaf in-syn {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency SYN messages that in this
    session have been received by the access node.";
                    }
    
                    leaf in-synack {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency SYNACK messages that in
    this session have been received by the access
    node.";
                    }
    
                    leaf in-ack {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency ACK messages that in this
    session have been received by the access node.";
                    }
    
                    leaf in-rstack {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency RSTACK messages that in
    this session have been received by the access
    node.";
                    }
    
                    leaf out-syn {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency SYN messages that in this
    session have been transmitted by the access node.";
                    }
    
                    leaf out-synack {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency SYNACK messages that in
    this session have been transmitted by the access
    node.";
                    }
    
                    leaf out-rstack {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency RSTACK messages that in
    this session have been transmitted by the access
    node.";
                    }
    
                    leaf out-ack {
                      type yang:zero-based-counter32;
                      mandatory true;
                      description
                        "The number of adjacency ACK messages that in this
    session have been transmitted by the access node.";
                    }
                  }  // container statistics
                }  // list session
              }  // container sessions
    
              container port-message-control {
                description
                  "Configuration to control the generation of Port Up and
    Port Down messages.";
                choice which-dampening-mechanism {
                  if-feature bbf-ancp:port-message-dampening;
                  default
                    "port-up-port-down-withholding-interval";
                  description
                    "Selects the dampening mechanism for the sending of
    Port Up and Port Down event messages.";
                  case port-up-port-down-withholding-interval {
                    description
                      "Configures withholding interval for Port Up and Port
    Down messages.";
                    leaf port-up-port-down-withholding-interval {
                      type union {
                        type enumeration {
                          enum "disabled" {
                            value 0;
                            description
                              "The withholding interval is disabled and
                             all line state changes will be reported
                             to the NAS.";
                          }
                        }
                        type uint16 {
                          range "1..max";
                        }
                      }
                      units "100 milliseconds";
                      default "disabled";
                      description
                        "Configures the dampening mechanism controlling the
    rate at which Port Up and Port Down messages are
    sent to the NAS, applying individually to each
    access line. Specifically, it defines an interval
    following the sending of a Port Up or Port Down
    message for a given access line, during which no
    further Port Up or Port Down message is to be sent
    to the NAS for that given access line. If, at the
    end of the withholding interval, there has been a
    change in line state of the given line to that
    when the last Port Up or Port Down message was
    sent for that line, the new line state of that
    line is reported to the NAS (with the withholding
    interval for that line applying again).";
                      reference
                        "RFC 6320 section 6.4.1";
    
                    }
                  }  // case port-up-port-down-withholding-interval
                }  // choice which-dampening-mechanism
              }  // container port-message-control
            }  // list partition
          }  // container partitions
        }  // container ancp
      }  // module bbf-ancp
    

© 2023 YumaWorks, Inc. All rights reserved.