ietf-interfaces

This module contains a collection of YANG definitions for managing network interfaces. Copyright (c) 2018 IETF Trust and the pe...

  • Version: 2018-02-20

    ietf-interfaces@2018-02-20


    
      module ietf-interfaces {
    
        yang-version 1.1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-interfaces";
    
        prefix if;
    
        import ietf-yang-types {
          prefix yang;
        }
    
        organization
          "IETF NETMOD (Network Modeling) Working Group";
    
        contact
          "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
    WG List:  <mailto:netmod@ietf.org>
    
    Editor:   Martin Bjorklund
    	  <mailto:mbj@tail-f.com>";
    
        description
          "This module contains a collection of YANG definitions for
    managing network interfaces.
    
    Copyright (c) 2018 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 Simplified 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 8343; see
    the RFC itself for full legal notices.";
    
        revision "2018-02-20" {
          description "Updated to support NMDA.";
          reference
            "RFC 8343: A YANG Data Model for Interface Management";
    
        }
    
        revision "2014-05-08" {
          description "Initial revision.";
          reference
            "RFC 7223: A YANG Data Model for Interface Management";
    
        }
    
    
        typedef interface-ref {
          type leafref {
            path "/if:interfaces/if:interface/if:name";
          }
          description
            "This type is used by data models that need to reference
    interfaces.";
        }
    
        identity interface-type {
          description
            "Base identity from which specific interface types are
    derived.";
        }
    
        feature arbitrary-names {
          description
            "This feature indicates that the device allows user-controlled
    interfaces to be named arbitrarily.";
        }
    
        feature pre-provisioning {
          description
            "This feature indicates that the device supports
    pre-provisioning of interface configuration, i.e., it is
    possible to configure an interface whose physical interface
    hardware is not present on the device.";
        }
    
        feature if-mib {
          description
            "This feature indicates that the device implements
    the IF-MIB.";
          reference
            "RFC 2863: The Interfaces Group MIB";
    
        }
    
        container interfaces {
          description "Interface parameters.";
          list interface {
            key "name";
            description
              "The list of interfaces on the device.
    
    The status of an interface is available in this list in the
    operational state.  If the configuration of a
    system-controlled interface cannot be used by the system
    (e.g., the interface hardware present does not match the
    interface type), then the configuration is not applied to
    the system-controlled interface shown in the operational
    state.  If the configuration of a user-controlled interface
    cannot be used by the system, the configured interface is
    not instantiated in the operational state.
    
    System-controlled interfaces created by the system are
    always present in this list in the operational state,
    whether or not they are configured.";
            leaf name {
              type string;
              description
                "The name of the interface.
    
    A device MAY restrict the allowed values for this leaf,
    possibly depending on the type of the interface.
    For system-controlled interfaces, this leaf is the
    device-specific name of the interface.
    
    If a client tries to create configuration for a
    system-controlled interface that is not present in the
    operational state, the server MAY reject the request if
    the implementation does not support pre-provisioning of
    interfaces or if the name refers to an interface that can
    never exist in the system.  A Network Configuration
    Protocol (NETCONF) server MUST reply with an rpc-error
    with the error-tag 'invalid-value' in this case.
    
    If the device supports pre-provisioning of interface
    configuration, the 'pre-provisioning' feature is
    advertised.
    
    If the device allows arbitrarily named user-controlled
    interfaces, the 'arbitrary-names' feature is advertised.
    
    When a configured user-controlled interface is created by
    the system, it is instantiated with the same name in the
    operational state.
    
    A server implementation MAY map this leaf to the ifName
    MIB object.  Such an implementation needs to use some
    mechanism to handle the differences in size and characters
    allowed between this leaf and ifName.  The definition of
    such a mechanism is outside the scope of this document.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifName";
    
            }
    
            leaf description {
              type string;
              description
                "A textual description of the interface.
    
    A server implementation MAY map this leaf to the ifAlias
    MIB object.  Such an implementation needs to use some
    mechanism to handle the differences in size and characters
    allowed between this leaf and ifAlias.  The definition of
    such a mechanism is outside the scope of this document.
    
    Since ifAlias is defined to be stored in non-volatile
    storage, the MIB implementation MUST map ifAlias to the
    value of 'description' in the persistently stored
    configuration.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifAlias";
    
            }
    
            leaf type {
              type identityref {
                base interface-type;
              }
              mandatory true;
              description
                "The type of the interface.
    
    When an interface entry is created, a server MAY
    initialize the type leaf with a valid value, e.g., if it
    is possible to derive the type from the name of the
    interface.
    
    If a client tries to set the type of an interface to a
    value that can never be used by the system, e.g., if the
    type is not supported or if the type does not match the
    name of the interface, the server MUST reject the request.
    A NETCONF server MUST reply with an rpc-error with the
    error-tag 'invalid-value' in this case.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifType";
    
            }
    
            leaf enabled {
              type boolean;
              default "true";
              description
                "This leaf contains the configured, desired state of the
    interface.
    
    Systems that implement the IF-MIB use the value of this
    leaf in the intended configuration to set
    IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
    has been initialized, as described in RFC 2863.
    
    Changes in this leaf in the intended configuration are
    reflected in ifAdminStatus.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
    
            }
    
            leaf link-up-down-trap-enable {
              if-feature if-mib;
              type enumeration {
                enum "enabled" {
                  value 1;
                  description
                    "The device will generate linkUp/linkDown SNMP
    notifications for this interface.";
                }
                enum "disabled" {
                  value 2;
                  description
                    "The device will not generate linkUp/linkDown SNMP
    notifications for this interface.";
                }
              }
              description
                "Controls whether linkUp/linkDown SNMP notifications
    should be generated for this interface.
    
    If this node is not configured, the value 'enabled' is
    operationally used by the server for interfaces that do
    not operate on top of any other interface (i.e., there are
    no 'lower-layer-if' entries), and 'disabled' otherwise.";
              reference
                "RFC 2863: The Interfaces Group MIB -
                	  ifLinkUpDownTrapEnable";
    
            }
    
            leaf admin-status {
              if-feature if-mib;
              type enumeration {
                enum "up" {
                  value 1;
                  description
                    "Ready to pass packets.";
                }
                enum "down" {
                  value 2;
                  description
                    "Not ready to pass packets and not in some test mode.";
                }
                enum "testing" {
                  value 3;
                  description
                    "In some test mode.";
                }
              }
              config false;
              mandatory true;
              description
                "The desired state of the interface.
    
    This leaf has the same read semantics as ifAdminStatus.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
    
            }
    
            leaf oper-status {
              type enumeration {
                enum "up" {
                  value 1;
                  description
                    "Ready to pass packets.";
                }
                enum "down" {
                  value 2;
                  description
                    "The interface does not pass any packets.";
                }
                enum "testing" {
                  value 3;
                  description
                    "In some test mode.  No operational packets can
    be passed.";
                }
                enum "unknown" {
                  value 4;
                  description
                    "Status cannot be determined for some reason.";
                }
                enum "dormant" {
                  value 5;
                  description
                    "Waiting for some external event.";
                }
                enum "not-present" {
                  value 6;
                  description
                    "Some component (typically hardware) is missing.";
                }
                enum "lower-layer-down" {
                  value 7;
                  description
                    "Down due to state of lower-layer interface(s).";
                }
              }
              config false;
              mandatory true;
              description
                "The current operational state of the interface.
    
    This leaf has the same semantics as ifOperStatus.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifOperStatus";
    
            }
    
            leaf last-change {
              type yang:date-and-time;
              config false;
              description
                "The time the interface entered its current operational
    state.  If the current state was entered prior to the
    last re-initialization of the local network management
    subsystem, then this node is not present.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifLastChange";
    
            }
    
            leaf if-index {
              if-feature if-mib;
              type int32 {
                range "1..2147483647";
              }
              config false;
              mandatory true;
              description
                "The ifIndex value for the ifEntry represented by this
    interface.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifIndex";
    
            }
    
            leaf phys-address {
              type yang:phys-address;
              config false;
              description
                "The interface's address at its protocol sub-layer.  For
    example, for an 802.x interface, this object normally
    contains a Media Access Control (MAC) address.  The
    interface's media-specific modules must define the bit
    and byte ordering and the format of the value of this
    object.  For interfaces that do not have such an address
    (e.g., a serial line), this node is not present.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
    
            }
    
            leaf-list higher-layer-if {
              type interface-ref;
              config false;
              description
                "A list of references to interfaces layered on top of this
    interface.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifStackTable";
    
            }
    
            leaf-list lower-layer-if {
              type interface-ref;
              config false;
              description
                "A list of references to interfaces layered underneath this
    interface.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifStackTable";
    
            }
    
            leaf speed {
              type yang:gauge64;
              units "bits/second";
              config false;
              description
                "An estimate of the interface's current bandwidth in bits
    per second.  For interfaces that do not vary in
    bandwidth or for those where no accurate estimation can
    be made, this node should contain the nominal bandwidth.
    For interfaces that have no concept of bandwidth, this
    node is not present.";
              reference
                "RFC 2863: The Interfaces Group MIB -
                	  ifSpeed, ifHighSpeed";
    
            }
    
            container statistics {
              config false;
              description
                "A collection of interface-related statistics objects.";
              leaf discontinuity-time {
                type yang:date-and-time;
                mandatory true;
                description
                  "The time on the most recent occasion at which any one or
    more of this interface's counters suffered a
    discontinuity.  If no such discontinuities have occurred
    since the last re-initialization of the local management
    subsystem, then this node contains the time the local
    management subsystem re-initialized itself.";
              }
    
              leaf in-octets {
                type yang:counter64;
                description
                  "The total number of octets received on the interface,
    including framing characters.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
    
              }
    
              leaf in-unicast-pkts {
                type yang:counter64;
                description
                  "The number of packets, delivered by this sub-layer to a
    higher (sub-)layer, that were not addressed to a
    multicast or broadcast address at this sub-layer.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
    
              }
    
              leaf in-broadcast-pkts {
                type yang:counter64;
                description
                  "The number of packets, delivered by this sub-layer to a
    higher (sub-)layer, that were addressed to a broadcast
    address at this sub-layer.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCInBroadcastPkts";
    
              }
    
              leaf in-multicast-pkts {
                type yang:counter64;
                description
                  "The number of packets, delivered by this sub-layer to a
    higher (sub-)layer, that were addressed to a multicast
    address at this sub-layer.  For a MAC-layer protocol,
    this includes both Group and Functional addresses.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCInMulticastPkts";
    
              }
    
              leaf in-discards {
                type yang:counter32;
                description
                  "The number of inbound packets that were chosen to be
    discarded even though no errors had been detected to
    prevent their being deliverable to a higher-layer
    protocol.  One possible reason for discarding such a
    packet could be to free up buffer space.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifInDiscards";
    
              }
    
              leaf in-errors {
                type yang:counter32;
                description
                  "For packet-oriented interfaces, the number of inbound
    packets that contained errors preventing them from being
    deliverable to a higher-layer protocol.  For character-
    oriented or fixed-length interfaces, the number of
    inbound transmission units that contained errors
    preventing them from being deliverable to a higher-layer
    protocol.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifInErrors";
    
              }
    
              leaf in-unknown-protos {
                type yang:counter32;
                description
                  "For packet-oriented interfaces, the number of packets
    received via the interface that were discarded because
    of an unknown or unsupported protocol.  For
    character-oriented or fixed-length interfaces that
    support protocol multiplexing, the number of
    transmission units received via the interface that were
    discarded because of an unknown or unsupported protocol.
    For any interface that does not support protocol
    multiplexing, this counter is not present.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
    
              }
    
              leaf out-octets {
                type yang:counter64;
                description
                  "The total number of octets transmitted out of the
    interface, including framing characters.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
    
              }
    
              leaf out-unicast-pkts {
                type yang:counter64;
                description
                  "The total number of packets that higher-level protocols
    requested be transmitted and that were not addressed
    to a multicast or broadcast address at this sub-layer,
    including those that were discarded or not sent.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
    
              }
    
              leaf out-broadcast-pkts {
                type yang:counter64;
                description
                  "The total number of packets that higher-level protocols
    requested be transmitted and that were addressed to a
    broadcast address at this sub-layer, including those
    that were discarded or not sent.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCOutBroadcastPkts";
    
              }
    
              leaf out-multicast-pkts {
                type yang:counter64;
                description
                  "The total number of packets that higher-level protocols
    requested be transmitted and that were addressed to a
    multicast address at this sub-layer, including those
    that were discarded or not sent.  For a MAC-layer
    protocol, this includes both Group and Functional
    addresses.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCOutMulticastPkts";
    
              }
    
              leaf out-discards {
                type yang:counter32;
                description
                  "The number of outbound packets that were chosen to be
    discarded even though no errors had been detected to
    prevent their being transmitted.  One possible reason
    for discarding such a packet could be to free up buffer
    space.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
    
              }
    
              leaf out-errors {
                type yang:counter32;
                description
                  "For packet-oriented interfaces, the number of outbound
    packets that could not be transmitted because of errors.
    For character-oriented or fixed-length interfaces, the
    number of outbound transmission units that could not be
    transmitted because of errors.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifOutErrors";
    
              }
    
              leaf sent-ipv4-packets {
                type yang:zero-based-counter64;
                description
                  "Number of decapsulated and forwarded IPv4 packets.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf sent-ipv4-bytes {
                type yang:zero-based-counter64;
                description
                  "Decapsulated/translated IPv4 traffic sent, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf sent-ipv6-packets {
                type yang:zero-based-counter64;
                description
                  "Number of encapsulated IPv6 packets sent.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf sent-ipv6-bytes {
                type yang:zero-based-counter64;
                description
                  "Encapsulated IPv6 traffic sent, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf rcvd-ipv4-packets {
                type yang:zero-based-counter64;
                description
                  "Number of IPv4 packets received.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf rcvd-ipv4-bytes {
                type yang:zero-based-counter64;
                description
                  "IPv4 traffic received, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf rcvd-ipv6-packets {
                type yang:zero-based-counter64;
                description
                  "Number of IPv4-in-IPv6 packets received.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf rcvd-ipv6-bytes {
                type yang:zero-based-counter64;
                description
                  "IPv4-in-IPv6 traffic received, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf dropped-ipv4-packets {
                type yang:zero-based-counter64;
                description
                  "Number of IPv4 packets dropped at the
    Internet-facing interface.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf dropped-ipv4-bytes {
                type yang:zero-based-counter64;
                description
                  "IPv4 traffic dropped at the Internet-facing
    interface, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf dropped-ipv6-packets {
                type yang:zero-based-counter64;
                description
                  "Number of IPv4-in-IPv6 packets dropped.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf dropped-ipv6-bytes {
                type yang:zero-based-counter64;
                description
                  "IPv4-in-IPv6 traffic dropped, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf dropped-ipv4-fragments {
                type yang:zero-based-counter64;
                description
                  "Number of fragmented IPv4 packets dropped.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf dropped-ipv4-fragment-bytes {
                type yang:zero-based-counter64;
                description
                  "Fragmented IPv4 traffic dropped, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf ipv6-fragments-reassembled {
                type yang:zero-based-counter64;
                description
                  "Number of IPv6 fragments successfully reassembled.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf ipv6-fragments-bytes-reassembled {
                type yang:zero-based-counter64;
                description
                  "IPv6 fragments successfully reassembled, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf out-icmpv4-error-packets {
                type yang:zero-based-counter64;
                description
                  "Internally generated ICMPv4 error packets.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf out-icmpv4-error-bytes {
                type yang:zero-based-counter64;
                description
                  "Internally generated ICMPv4 error messages, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf out-icmpv6-error-packets {
                type yang:zero-based-counter64;
                description
                  "Internally generated ICMPv6 error packets.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
    
              leaf out-icmpv6-error-bytes {
                type yang:zero-based-counter64;
                description
                  "Internally generated ICMPv6 error messages, in bytes.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
              }
            }  // container statistics
    
            container ipv4 {
              presence
                "Enables IPv4 unless the 'enabled' leaf
    (which defaults to 'true') is set to 'false'";
              description
                "Parameters for the IPv4 address family.";
              leaf enabled {
                type boolean;
                default "true";
                description
                  "Controls whether IPv4 is enabled or disabled on this
    interface.  When IPv4 is enabled, this interface is
    connected to an IPv4 stack, and the interface can send
    and receive IPv4 packets.";
              }
    
              leaf forwarding {
                type boolean;
                default "false";
                description
                  "Controls IPv4 packet forwarding of datagrams received by,
    but not addressed to, this interface.  IPv4 routers
    forward datagrams.  IPv4 hosts do not (except those
    source-routed via the host).";
              }
    
              leaf mtu {
                type uint16 {
                  range "68..max";
                }
                units "octets";
                description
                  "The size, in octets, of the largest IPv4 packet that the
    interface will send and receive.
    
    The server may restrict the allowed values for this leaf,
    depending on the interface's type.
    
    If this leaf is not configured, the operationally used MTU
    depends on the interface's type.";
                reference
                  "RFC 791: Internet Protocol";
    
              }
    
              list address {
                key "ip";
                description
                  "The list of IPv4 addresses on the interface.";
                leaf ip {
                  type inet:ipv4-address-no-zone;
                  description
                    "The IPv4 address on the interface.";
                }
    
                choice subnet {
                  mandatory true;
                  description
                    "The subnet can be specified as a prefix length or,
    if the server supports non-contiguous netmasks, as
    a netmask.";
                  leaf prefix-length {
                    type uint8 {
                      range "0..32";
                    }
                    description
                      "The length of the subnet prefix.";
                  }
                  leaf netmask {
                    if-feature ipv4-non-contiguous-netmasks;
                    type yang:dotted-quad;
                    description
                      "The subnet specified as a netmask.";
                  }
                }  // choice subnet
    
                leaf origin {
                  type ip-address-origin;
                  config false;
                  description
                    "The origin of this address.";
                }
              }  // list address
    
              list neighbor {
                key "ip";
                description
                  "A list of mappings from IPv4 addresses to
    link-layer addresses.
    
    Entries in this list in the intended configuration are
    used as static entries in the ARP Cache.
    
    In the operational state, this list represents the ARP
    Cache.";
                reference
                  "RFC 826: An Ethernet Address Resolution Protocol";
    
                leaf ip {
                  type inet:ipv4-address-no-zone;
                  description
                    "The IPv4 address of the neighbor node.";
                }
    
                leaf link-layer-address {
                  type yang:phys-address;
                  mandatory true;
                  description
                    "The link-layer address of the neighbor node.";
                }
    
                leaf origin {
                  type neighbor-origin;
                  config false;
                  description
                    "The origin of this neighbor entry.";
                }
              }  // list neighbor
    
              leaf bind-ni-name {
                type leafref {
                  path "/network-instances/network-instance/name";
                }
                description
                  "Network instance to which IPv4 interface is bound.";
              }
    
              container vrrp {
                description
                  "Configures VRRP version 2 or 3 for IPv4.";
                list vrrp-instance {
                  key "vrid";
                  description
                    "Defines a virtual router, identified by a VRID, within the
    IPv4 address space.";
                  leaf vrid {
                    type uint8 {
                      range "1..255";
                    }
                    description
                      "Virtual Router ID (i.e., VRID).";
                  }
    
                  leaf version {
                    type identityref {
                      base vrrp:vrrp-version;
                    }
                    mandatory true;
                    description
                      "Version 2 or 3 of VRRP.";
                  }
    
                  leaf log-state-change {
                    type boolean;
                    default "false";
                    description
                      "Generates VRRP state change messages each time the
    VRRP instance changes state (from 'up' to 'down'
    or 'down' to 'up').";
                  }
    
                  container preempt {
                    description
                      "Enables a higher-priority VRRP backup router to preempt a
    lower-priority VRRP master.";
                    leaf enabled {
                      type boolean;
                      default "true";
                      description
                        "'true' if preemption is enabled.";
                    }
    
                    leaf hold-time {
                      type uint16;
                      units "seconds";
                      default "0";
                      description
                        "Hold time, in seconds, for which a higher-priority VRRP
    backup router must wait before preempting a lower-priority
    VRRP master.";
                    }
                  }  // container preempt
    
                  leaf priority {
                    type uint8 {
                      range "1..254";
                    }
                    default "100";
                    description
                      "Configures the VRRP election priority for the backup
    virtual router.";
                  }
    
                  leaf accept-mode {
                    when
                      "derived-from-or-self(current()/../version, 'vrrp-v3')" {
                      description
                        "Applicable only to version 3.";
                    }
                    type boolean;
                    default "false";
                    description
                      "Controls whether a virtual router in master state will
    accept packets addressed to the address owner's IPvX address
    as its own if it is not the IPvX address owner.  The default
    is 'false'.  Deployments that rely on, for example, pinging
    the address owner's IPvX address may wish to configure
    accept-mode to 'true'.
    
    Note: IPv6 Neighbor Solicitations and Neighbor
    Advertisements MUST NOT be dropped when accept-mode
    is 'false'.";
                  }
    
                  choice advertise-interval-choice {
                    description
                      "The options for the advertisement interval at which VRRPv2
    or VRRPv3 advertisements are sent from the specified
    interface.";
                    case v2 {
                      when
                        "derived-from-or-self(version, 'vrrp-v2')" {
                        description
                          "Applicable only to version 2.";
                      }
                      leaf advertise-interval-sec {
                        type uint8 {
                          range "1..254";
                        }
                        units "seconds";
                        default "1";
                        description
                          "Configures the interval that VRRPv2 advertisements
    are sent from the specified interface.";
                      }
                    }  // case v2
    
                    case v3 {
                      when
                        "derived-from-or-self(version, 'vrrp-v3')" {
                        description
                          "Applicable only to version 3.";
                      }
                      leaf advertise-interval-centi-sec {
                        type uint16 {
                          range "1..4095";
                        }
                        units "centiseconds";
                        default "100";
                        description
                          "Configures the interval that VRRPv3 advertisements
    are sent from the specified interface.";
                      }
                    }  // case v3
                  }  // choice advertise-interval-choice
    
                  container track {
                    description
                      "Enables the specified VRRP instance to track interfaces
    or networks.";
                    container interfaces {
                      description
                        "Enables the specified VRRPv2 or VRRPv3 instance to track
    interfaces.  Interface tracking prevents traffic loss by
    detecting the availability of interfaces.  The operational
    states of other interfaces are associated with the
    priority of a VRRP router.  When a tracked interface
    becomes unavailable (or 'operational down'), the priority
    of the VRRP router decrements.  When an unavailable
    interface becomes available again, the priority of the
    VRRP router is incremented by the same amount.";
                      list interface {
                        key "interface";
                        description
                          "Interface to track.";
                        leaf interface {
                          type interface-ref;
                          must
                            "/if:interfaces/if:interface[if:name=current()]/ip:ipv4" {
                            description
                              "Interface is IPv4.";
                          }
                          description
                            "Interface to track.";
                        }
    
                        leaf priority-decrement {
                          type uint8 {
                            range "1..254";
                          }
                          default "10";
                          description
                            "Specifies how much to decrement the priority of the
    VRRP instance if the interface goes down.";
                        }
                      }  // list interface
                    }  // container interfaces
    
                    container networks {
                      description
                        "Enables the VRRPv2 or VRRPv3 router instance to track the
    specified networks through their IPv4 network prefixes.
    Network tracking prevents traffic loss by detecting
    network connectivity failure.  The states of
    connectivity to some networks are associated with the
    priority of a VRRP router.  When connectivity to a
    tracked network represented by its prefix is lost, the
    priority of the VRRP router decrements.  When an
    unavailable network is again reachable, the priority of
    the VRRP router is incremented by the same amount.";
                      list network {
                        key "prefix";
                        description
                          "Enables the specified VRRPv2 or VRRPv3 instance to
    track an IPv4 network by specifying the prefix of the
    IPv4 network.";
                        leaf prefix {
                          type inet:ipv4-prefix;
                          description
                            "The IPv4 prefix of the network to track.";
                        }
    
                        leaf priority-decrement {
                          type uint8 {
                            range "1..254";
                          }
                          default "10";
                          description
                            "Specifies how much to decrement the priority of the
    VRRP router if there is a failure in the IPv4
    network.";
                        }
                      }  // list network
                    }  // container networks
                  }  // container track
    
                  container virtual-ipv4-addresses {
                    description
                      "Configures the virtual IPv4 address for the
    VRRP interface.";
                    list virtual-ipv4-address {
                      key "ipv4-address";
                      max-elements 16;
                      description
                        "Virtual IPv4 addresses for a single VRRP instance.  For a
    VRRP owner router, the virtual address must match one
    of the IPv4 addresses configured on the interface
    corresponding to the virtual router.";
                      leaf ipv4-address {
                        type inet:ipv4-address;
                        description
                          "An IPv4 address associated with a virtual router.";
                        reference
                          "RFC 5798: Virtual Router Redundancy Protocol (VRRP)
                          	  Version 3 for IPv4 and IPv6.  Section 1.2";
    
                      }
                    }  // list virtual-ipv4-address
                  }  // container virtual-ipv4-addresses
    
                  leaf state {
                    type identityref {
                      base vrrp:vrrp-state-type;
                    }
                    config false;
                    description
                      "Operational state.";
                  }
    
                  leaf is-owner {
                    type boolean;
                    config false;
                    description
                      "Set to 'true' if this virtual router is the owner.";
                  }
    
                  leaf last-adv-source {
                    type inet:ip-address;
                    config false;
                    description
                      "Last advertised IPv4/IPv6 source address.";
                  }
    
                  leaf up-datetime {
                    type yang:date-and-time;
                    config false;
                    description
                      "The date and time when this virtual router
    transitioned out of 'init' state.";
                  }
    
                  leaf master-down-interval {
                    type uint32;
                    units "centiseconds";
                    config false;
                    description
                      "Time interval for the backup virtual router to declare
    'master down'.";
                  }
    
                  leaf skew-time {
                    type uint32;
                    units "microseconds";
                    config false;
                    description
                      "Calculated based on the priority and advertisement
    interval configuration command parameters.  See RFC 3768.";
                  }
    
                  leaf last-event {
                    type identityref {
                      base vrrp:vrrp-event-type;
                    }
                    config false;
                    description
                      "Last reported event.";
                  }
    
                  leaf new-master-reason {
                    type new-master-reason-type;
                    config false;
                    description
                      "Indicates why the virtual router has transitioned to
    master state.";
                  }
    
                  container statistics {
                    config false;
                    description
                      "VRRP statistics.";
                    leaf discontinuity-datetime {
                      type yang:date-and-time;
                      description
                        "The time on the most recent occasion at which any one or
    more of the VRRP statistics counters suffered a
    discontinuity.  If no such discontinuities have occurred
    since the last re-initialization of the local management
    subsystem, then this node contains the time that the
    local management subsystem re-initialized itself.";
                    }
    
                    leaf master-transitions {
                      type yang:counter32;
                      description
                        "The total number of times that this virtual router's
    state has transitioned to 'master'.";
                    }
    
                    leaf advertisement-rcvd {
                      type yang:counter64;
                      description
                        "The total number of VRRP advertisements received by
    this virtual router.";
                    }
    
                    leaf advertisement-sent {
                      type yang:counter64;
                      description
                        "The total number of VRRP advertisements sent by
    this virtual router.";
                    }
    
                    leaf interval-errors {
                      if-feature validate-interval-errors;
                      type yang:counter64;
                      description
                        "The total number of VRRP advertisement packets received
    with an advertisement interval different than the
    interval configured for the local virtual router.";
                    }
    
                    leaf priority-zero-pkts-rcvd {
                      type yang:counter64;
                      description
                        "The total number of VRRP packets received by the
    virtual router with a priority of 0.";
                    }
    
                    leaf priority-zero-pkts-sent {
                      type yang:counter64;
                      description
                        "The total number of VRRP packets sent by the
    virtual router with a priority of 0.";
                    }
    
                    leaf invalid-type-pkts-rcvd {
                      type yang:counter64;
                      description
                        "The number of VRRP packets received by the virtual
    router with an invalid value in the 'type' field.";
                    }
    
                    leaf address-list-errors {
                      if-feature validate-address-list-errors;
                      type yang:counter64;
                      description
                        "The total number of packets received with an
    address list that does not match the locally
    configured address list for the virtual router.";
                    }
    
                    leaf packet-length-errors {
                      type yang:counter64;
                      description
                        "The total number of packets received with a packet
    length less than the length of the VRRP header.";
                    }
                  }  // container statistics
                }  // list vrrp-instance
              }  // container vrrp
            }  // container ipv4
    
            container ipv6 {
              presence
                "Enables IPv6 unless the 'enabled' leaf
    (which defaults to 'true') is set to 'false'";
              description
                "Parameters for the IPv6 address family.";
              leaf enabled {
                type boolean;
                default "true";
                description
                  "Controls whether IPv6 is enabled or disabled on this
    interface.  When IPv6 is enabled, this interface is
    connected to an IPv6 stack, and the interface can send
    and receive IPv6 packets.";
              }
    
              leaf forwarding {
                type boolean;
                default "false";
                description
                  "Controls IPv6 packet forwarding of datagrams received by,
    but not addressed to, this interface.  IPv6 routers
    forward datagrams.  IPv6 hosts do not (except those
    source-routed via the host).";
                reference
                  "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
                  	  Section 6.2.1, IsRouter";
    
              }
    
              leaf mtu {
                type uint32 {
                  range "1280..max";
                }
                units "octets";
                description
                  "The size, in octets, of the largest IPv6 packet that the
    interface will send and receive.
    
    The server may restrict the allowed values for this leaf,
    depending on the interface's type.
    
    If this leaf is not configured, the operationally used MTU
    depends on the interface's type.";
                reference
                  "RFC 8200: Internet Protocol, Version 6 (IPv6)
                  	  Specification
                  	  Section 5";
    
              }
    
              list address {
                key "ip";
                description
                  "The list of IPv6 addresses on the interface.";
                leaf ip {
                  type inet:ipv6-address-no-zone;
                  description
                    "The IPv6 address on the interface.";
                }
    
                leaf prefix-length {
                  type uint8 {
                    range "0..128";
                  }
                  mandatory true;
                  description
                    "The length of the subnet prefix.";
                }
    
                leaf origin {
                  type ip-address-origin;
                  config false;
                  description
                    "The origin of this address.";
                }
    
                leaf status {
                  type enumeration {
                    enum "preferred" {
                      value 0;
                      description
                        "This is a valid address that can appear as the
    destination or source address of a packet.";
                    }
                    enum "deprecated" {
                      value 1;
                      description
                        "This is a valid but deprecated address that should
    no longer be used as a source address in new
    communications, but packets addressed to such an
    address are processed as expected.";
                    }
                    enum "invalid" {
                      value 2;
                      description
                        "This isn't a valid address, and it shouldn't appear
    as the destination or source address of a packet.";
                    }
                    enum "inaccessible" {
                      value 3;
                      description
                        "The address is not accessible because the interface
    to which this address is assigned is not
    operational.";
                    }
                    enum "unknown" {
                      value 4;
                      description
                        "The status cannot be determined for some reason.";
                    }
                    enum "tentative" {
                      value 5;
                      description
                        "The uniqueness of the address on the link is being
    verified.  Addresses in this state should not be
    used for general communication and should only be
    used to determine the uniqueness of the address.";
                    }
                    enum "duplicate" {
                      value 6;
                      description
                        "The address has been determined to be non-unique on
    the link and so must not be used.";
                    }
                    enum "optimistic" {
                      value 7;
                      description
                        "The address is available for use, subject to
    restrictions, while its uniqueness on a link is
    being verified.";
                    }
                  }
                  config false;
                  description
                    "The status of an address.  Most of the states correspond
    to states from the IPv6 Stateless Address
    Autoconfiguration protocol.";
                  reference
                    "RFC 4293: Management Information Base for the
                    	  Internet Protocol (IP)
                    	  - IpAddressStatusTC
                     RFC 4862: IPv6 Stateless Address Autoconfiguration";
    
                }
              }  // list address
    
              list neighbor {
                key "ip";
                description
                  "A list of mappings from IPv6 addresses to
    link-layer addresses.
    
    Entries in this list in the intended configuration are
    used as static entries in the Neighbor Cache.
    
    In the operational state, this list represents the
    Neighbor Cache.";
                reference
                  "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
    
                leaf ip {
                  type inet:ipv6-address-no-zone;
                  description
                    "The IPv6 address of the neighbor node.";
                }
    
                leaf link-layer-address {
                  type yang:phys-address;
                  mandatory true;
                  description
                    "The link-layer address of the neighbor node.
    
    In the operational state, if the neighbor's 'state' leaf
    is 'incomplete', this leaf is not instantiated.";
                }
    
                leaf origin {
                  type neighbor-origin;
                  config false;
                  description
                    "The origin of this neighbor entry.";
                }
    
                leaf is-router {
                  type empty;
                  config false;
                  description
                    "Indicates that the neighbor node acts as a router.";
                }
    
                leaf state {
                  type enumeration {
                    enum "incomplete" {
                      value 0;
                      description
                        "Address resolution is in progress, and the
    link-layer address of the neighbor has not yet been
    determined.";
                    }
                    enum "reachable" {
                      value 1;
                      description
                        "Roughly speaking, the neighbor is known to have been
    reachable recently (within tens of seconds ago).";
                    }
                    enum "stale" {
                      value 2;
                      description
                        "The neighbor is no longer known to be reachable, but
    until traffic is sent to the neighbor no attempt
    should be made to verify its reachability.";
                    }
                    enum "delay" {
                      value 3;
                      description
                        "The neighbor is no longer known to be reachable, and
    traffic has recently been sent to the neighbor.
    Rather than probe the neighbor immediately, however,
    delay sending probes for a short while in order to
    give upper-layer protocols a chance to provide
    reachability confirmation.";
                    }
                    enum "probe" {
                      value 4;
                      description
                        "The neighbor is no longer known to be reachable, and
    unicast Neighbor Solicitation probes are being sent
    to verify reachability.";
                    }
                  }
                  config false;
                  description
                    "The Neighbor Unreachability Detection state of this
    entry.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
                    	  Section 7.3.2";
    
                }
              }  // list neighbor
    
              leaf dup-addr-detect-transmits {
                type uint32;
                default "1";
                description
                  "The number of consecutive Neighbor Solicitation messages
    sent while performing Duplicate Address Detection on a
    tentative address.  A value of zero indicates that
    Duplicate Address Detection is not performed on
    tentative addresses.  A value of one indicates a single
    transmission with no follow-up retransmissions.";
                reference
                  "RFC 4862: IPv6 Stateless Address Autoconfiguration";
    
              }
    
              container autoconf {
                description
                  "Parameters to control the autoconfiguration of IPv6
    addresses, as described in RFC 4862.";
                reference
                  "RFC 4862: IPv6 Stateless Address Autoconfiguration";
    
                leaf create-global-addresses {
                  type boolean;
                  default "true";
                  description
                    "If enabled, the host creates global addresses as
    described in RFC 4862.";
                  reference
                    "RFC 4862: IPv6 Stateless Address Autoconfiguration
                    	  Section 5.5";
    
                }
    
                leaf create-temporary-addresses {
                  if-feature ipv6-privacy-autoconf;
                  type boolean;
                  default "false";
                  description
                    "If enabled, the host creates temporary addresses as
    described in RFC 4941.";
                  reference
                    "RFC 4941: Privacy Extensions for Stateless Address
                    	  Autoconfiguration in IPv6";
    
                }
    
                leaf temporary-valid-lifetime {
                  if-feature ipv6-privacy-autoconf;
                  type uint32;
                  units "seconds";
                  default "604800";
                  description
                    "The time period during which the temporary address
    is valid.";
                  reference
                    "RFC 4941: Privacy Extensions for Stateless Address
                    	  Autoconfiguration in IPv6
                    	  - TEMP_VALID_LIFETIME";
    
                }
    
                leaf temporary-preferred-lifetime {
                  if-feature ipv6-privacy-autoconf;
                  type uint32;
                  units "seconds";
                  default "86400";
                  description
                    "The time period during which the temporary address is
    preferred.";
                  reference
                    "RFC 4941: Privacy Extensions for Stateless Address
                    	  Autoconfiguration in IPv6
                    	  - TEMP_PREFERRED_LIFETIME";
    
                }
              }  // container autoconf
    
              leaf bind-ni-name {
                type leafref {
                  path "/network-instances/network-instance/name";
                }
                description
                  "Network instance to which IPv6 interface is bound.";
              }
    
              container ipv6-router-advertisements {
                description
                  "Configuration of IPv6 Router Advertisements.";
                leaf send-advertisements {
                  type boolean;
                  default "false";
                  description
                    "A flag indicating whether or not the router sends periodic
    Router Advertisements and responds to Router
    Solicitations.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvSendAdvertisements.";
    
                }
    
                leaf max-rtr-adv-interval {
                  type uint16 {
                    range "4..1800";
                  }
                  units "seconds";
                  default "600";
                  description
                    "The maximum time allowed between sending unsolicited
    multicast Router Advertisements from the interface.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    MaxRtrAdvInterval.";
    
                }
    
                leaf min-rtr-adv-interval {
                  type uint16 {
                    range "3..1350";
                  }
                  units "seconds";
                  must
                    ". <= 0.75 * ../max-rtr-adv-interval" {
                    description
                      "The value MUST NOT be greater than 75% of
    'max-rtr-adv-interval'.";
                  }
                  description
                    "The minimum time allowed between sending unsolicited
    multicast Router Advertisements from the interface.
    
    The default value to be used operationally if this leaf is
    not configured is determined as follows:
    
    - if max-rtr-adv-interval >= 9 seconds, the default
      value is 0.33 * max-rtr-adv-interval;
    
    - otherwise, it is 0.75 * max-rtr-adv-interval.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    MinRtrAdvInterval.";
    
                }
    
                leaf managed-flag {
                  type boolean;
                  default "false";
                  description
                    "The value to be placed in the 'Managed address
    configuration' flag field in the Router Advertisement.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvManagedFlag.";
    
                }
    
                leaf other-config-flag {
                  type boolean;
                  default "false";
                  description
                    "The value to be placed in the 'Other configuration' flag
    field in the Router Advertisement.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvOtherConfigFlag.";
    
                }
    
                leaf link-mtu {
                  type uint32;
                  default "0";
                  description
                    "The value to be placed in MTU options sent by the router.
    A value of zero indicates that no MTU options are sent.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvLinkMTU.";
    
                }
    
                leaf reachable-time {
                  type uint32 {
                    range "0..3600000";
                  }
                  units "milliseconds";
                  default "0";
                  description
                    "The value to be placed in the Reachable Time field in the
    Router Advertisement messages sent by the router.  A value
    of zero means unspecified (by this router).";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvReachableTime.";
    
                }
    
                leaf retrans-timer {
                  type uint32;
                  units "milliseconds";
                  default "0";
                  description
                    "The value to be placed in the Retrans Timer field in the
    Router Advertisement messages sent by the router.  A value
    of zero means unspecified (by this router).";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvRetransTimer.";
    
                }
    
                leaf cur-hop-limit {
                  type uint8;
                  description
                    "The value to be placed in the Cur Hop Limit field in the
    Router Advertisement messages sent by the router.  A value
    of zero means unspecified (by this router).
    
    If this parameter is not configured, the device SHOULD use
    the value specified in IANA Assigned Numbers that was in
    effect at the time of implementation.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvCurHopLimit.
                    
                    IANA: IP Parameters,
                    http://www.iana.org/assignments/ip-parameters";
    
                }
    
                leaf default-lifetime {
                  type uint16 {
                    range "0..9000";
                  }
                  units "seconds";
                  description
                    "The value to be placed in the Router Lifetime field of
    Router Advertisements sent from the interface, in seconds.
    It MUST be either zero or between max-rtr-adv-interval and
    9000 seconds.  A value of zero indicates that the router
    is not to be used as a default router.  These limits may
    be overridden by specific documents that describe how IPv6
    operates over different link layers.
    
    If this parameter is not configured, the device SHOULD use
    a value of 3 * max-rtr-adv-interval.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvDefaultLifeTime.";
    
                }
    
                container prefix-list {
                  description
                    "Configuration of prefixes to be placed in Prefix
    Information options in Router Advertisement messages sent
    from the interface.
    
    Prefixes that are advertised by default but do not have
    their entries in the child 'prefix' list are advertised
    with the default values of all parameters.
    
    The link-local prefix SHOULD NOT be included in the list
    of advertised prefixes.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
                    AdvPrefixList.";
    
                  list prefix {
                    key "prefix-spec";
                    description
                      "Configuration of an advertised prefix entry.";
                    leaf prefix-spec {
                      type inet:ipv6-prefix;
                      description
                        "IPv6 address prefix.";
                    }
    
                    choice control-adv-prefixes {
                      default "advertise";
                      description
                        "Either the prefix is explicitly removed from the
    set of advertised prefixes, or the parameters with
    which it is advertised are specified (default case).";
                      leaf no-advertise {
                        type empty;
                        description
                          "The prefix will not be advertised.
    
    This can be used for removing the prefix from the
    default set of advertised prefixes.";
                      }
    
                      case advertise {
                        leaf valid-lifetime {
                          type uint32;
                          units "seconds";
                          default "2592000";
                          description
                            "The value to be placed in the Valid Lifetime in
    the Prefix Information option.  The designated
    value of all 1's (0xffffffff) represents
    infinity.";
                          reference
                            "RFC 4861: Neighbor Discovery for IP version 6
                            (IPv6) - AdvValidLifetime.";
    
                        }
    
                        leaf on-link-flag {
                          type boolean;
                          default "true";
                          description
                            "The value to be placed in the on-link flag
    ('L-bit') field in the Prefix Information
    option.";
                          reference
                            "RFC 4861: Neighbor Discovery for IP version 6
                            (IPv6) - AdvOnLinkFlag.";
    
                        }
    
                        leaf preferred-lifetime {
                          type uint32;
                          units "seconds";
                          must
                            ". <= ../valid-lifetime" {
                            description
                              "This value MUST NOT be greater than
    valid-lifetime.";
                          }
                          default "604800";
                          description
                            "The value to be placed in the Preferred Lifetime
    in the Prefix Information option.  The designated
    value of all 1's (0xffffffff) represents
    infinity.";
                          reference
                            "RFC 4861: Neighbor Discovery for IP version 6
                            (IPv6) - AdvPreferredLifetime.";
    
                        }
    
                        leaf autonomous-flag {
                          type boolean;
                          default "true";
                          description
                            "The value to be placed in the Autonomous Flag
    field in the Prefix Information option.";
                          reference
                            "RFC 4861: Neighbor Discovery for IP version 6
                            (IPv6) - AdvAutonomousFlag.";
    
                        }
                      }  // case advertise
                    }  // choice control-adv-prefixes
                  }  // list prefix
                }  // container prefix-list
              }  // container ipv6-router-advertisements
    
              container vrrp {
                description
                  "Configures VRRP version 3 for IPv6.";
                list vrrp-instance {
                  must
                    "derived-from-or-self(version, 'vrrp-v3')" {
                    description
                      "IPv6 is only supported by version 3.";
                  }
                  key "vrid";
                  description
                    "Defines a virtual router, identified by a VRID, within the
    IPv6 address space.";
                  leaf vrid {
                    type uint8 {
                      range "1..255";
                    }
                    description
                      "Virtual Router ID (i.e., VRID).";
                  }
    
                  leaf version {
                    type identityref {
                      base vrrp:vrrp-version;
                    }
                    mandatory true;
                    description
                      "Version 2 or 3 of VRRP.";
                  }
    
                  leaf log-state-change {
                    type boolean;
                    default "false";
                    description
                      "Generates VRRP state change messages each time the
    VRRP instance changes state (from 'up' to 'down'
    or 'down' to 'up').";
                  }
    
                  container preempt {
                    description
                      "Enables a higher-priority VRRP backup router to preempt a
    lower-priority VRRP master.";
                    leaf enabled {
                      type boolean;
                      default "true";
                      description
                        "'true' if preemption is enabled.";
                    }
    
                    leaf hold-time {
                      type uint16;
                      units "seconds";
                      default "0";
                      description
                        "Hold time, in seconds, for which a higher-priority VRRP
    backup router must wait before preempting a lower-priority
    VRRP master.";
                    }
                  }  // container preempt
    
                  leaf priority {
                    type uint8 {
                      range "1..254";
                    }
                    default "100";
                    description
                      "Configures the VRRP election priority for the backup
    virtual router.";
                  }
    
                  leaf accept-mode {
                    when
                      "derived-from-or-self(current()/../version, 'vrrp-v3')" {
                      description
                        "Applicable only to version 3.";
                    }
                    type boolean;
                    default "false";
                    description
                      "Controls whether a virtual router in master state will
    accept packets addressed to the address owner's IPvX address
    as its own if it is not the IPvX address owner.  The default
    is 'false'.  Deployments that rely on, for example, pinging
    the address owner's IPvX address may wish to configure
    accept-mode to 'true'.
    
    Note: IPv6 Neighbor Solicitations and Neighbor
    Advertisements MUST NOT be dropped when accept-mode
    is 'false'.";
                  }
    
                  leaf advertise-interval-centi-sec {
                    type uint16 {
                      range "1..4095";
                    }
                    units "centiseconds";
                    default "100";
                    description
                      "Configures the interval that VRRPv3 advertisements
    are sent from the specified interface.";
                  }
    
                  container track {
                    description
                      "Enables the specified VRRP instance to track interfaces
    or networks.";
                    container interfaces {
                      description
                        "Enables the specified VRRPv2 or VRRPv3 instance to track
    interfaces.  Interface tracking prevents traffic loss by
    detecting the availability of interfaces.  The operational
    states of other interfaces are associated with the
    priority of a VRRP router.  When a tracked interface
    becomes unavailable (or 'operational down'), the priority
    of the VRRP router decrements.  When an unavailable
    interface becomes available again, the priority of the
    VRRP router is incremented by the same amount.";
                      list interface {
                        key "interface";
                        description
                          "Interface to track.";
                        leaf interface {
                          type interface-ref;
                          must
                            "/if:interfaces/if:interface[if:name=current()]/ip:ipv6" {
                            description
                              "Interface is IPv6.";
                          }
                          description
                            "Interface to track.";
                        }
    
                        leaf priority-decrement {
                          type uint8 {
                            range "1..254";
                          }
                          default "10";
                          description
                            "Specifies how much to decrement the priority of the
    VRRP instance if the interface goes down.";
                        }
                      }  // list interface
                    }  // container interfaces
    
                    container networks {
                      description
                        "Enables the VRRPv2 or VRRPv3 router instance to track the
    specified networks through their IPv6 network prefixes.
    Network tracking prevents traffic loss by detecting
    network connectivity failure.  The states of
    connectivity to some networks are associated with the
    priority of a VRRP router.  When connectivity to a
    tracked network represented by its prefix is lost, the
    priority of the VRRP router decrements.  When an
    unavailable network is again reachable, the priority of
    the VRRP router is incremented by the same amount.";
                      list network {
                        key "prefix";
                        description
                          "Enables the specified VRRPv2 or VRRPv3 instance to
    track an IPv6 network by specifying the prefix of the
    IPv6 network.";
                        leaf prefix {
                          type inet:ipv6-prefix;
                          description
                            "The IPv6 prefix of the network to track.";
                        }
    
                        leaf priority-decrement {
                          type uint8 {
                            range "1..254";
                          }
                          default "10";
                          description
                            "Specifies how much to decrement the priority of the
    VRRP router if there is a failure in the IPv6
    network.";
                        }
                      }  // list network
                    }  // container networks
                  }  // container track
    
                  container virtual-ipv6-addresses {
                    description
                      "Configures the virtual IPv6 address for the
    VRRP interface.";
                    list virtual-ipv6-address {
                      key "ipv6-address";
                      max-elements 2;
                      description
                        "Two IPv6 addresses are allowed.  The first address must
    be a link-local address.  The second address can be a
    link-local or global address.";
                      leaf ipv6-address {
                        type inet:ipv6-address;
                        description
                          "An IPv6 address associated with a virtual router.";
                        reference
                          "RFC 5798: Virtual Router Redundancy Protocol (VRRP)
                          	  Version 3 for IPv4 and IPv6.  Section 1.3";
    
                      }
                    }  // list virtual-ipv6-address
                  }  // container virtual-ipv6-addresses
    
                  leaf state {
                    type identityref {
                      base vrrp:vrrp-state-type;
                    }
                    config false;
                    description
                      "Operational state.";
                  }
    
                  leaf is-owner {
                    type boolean;
                    config false;
                    description
                      "Set to 'true' if this virtual router is the owner.";
                  }
    
                  leaf last-adv-source {
                    type inet:ip-address;
                    config false;
                    description
                      "Last advertised IPv4/IPv6 source address.";
                  }
    
                  leaf up-datetime {
                    type yang:date-and-time;
                    config false;
                    description
                      "The date and time when this virtual router
    transitioned out of 'init' state.";
                  }
    
                  leaf master-down-interval {
                    type uint32;
                    units "centiseconds";
                    config false;
                    description
                      "Time interval for the backup virtual router to declare
    'master down'.";
                  }
    
                  leaf skew-time {
                    type uint32;
                    units "microseconds";
                    config false;
                    description
                      "Calculated based on the priority and advertisement
    interval configuration command parameters.  See RFC 3768.";
                  }
    
                  leaf last-event {
                    type identityref {
                      base vrrp:vrrp-event-type;
                    }
                    config false;
                    description
                      "Last reported event.";
                  }
    
                  leaf new-master-reason {
                    type new-master-reason-type;
                    config false;
                    description
                      "Indicates why the virtual router has transitioned to
    master state.";
                  }
    
                  container statistics {
                    config false;
                    description
                      "VRRP statistics.";
                    leaf discontinuity-datetime {
                      type yang:date-and-time;
                      description
                        "The time on the most recent occasion at which any one or
    more of the VRRP statistics counters suffered a
    discontinuity.  If no such discontinuities have occurred
    since the last re-initialization of the local management
    subsystem, then this node contains the time that the
    local management subsystem re-initialized itself.";
                    }
    
                    leaf master-transitions {
                      type yang:counter32;
                      description
                        "The total number of times that this virtual router's
    state has transitioned to 'master'.";
                    }
    
                    leaf advertisement-rcvd {
                      type yang:counter64;
                      description
                        "The total number of VRRP advertisements received by
    this virtual router.";
                    }
    
                    leaf advertisement-sent {
                      type yang:counter64;
                      description
                        "The total number of VRRP advertisements sent by
    this virtual router.";
                    }
    
                    leaf interval-errors {
                      if-feature validate-interval-errors;
                      type yang:counter64;
                      description
                        "The total number of VRRP advertisement packets received
    with an advertisement interval different than the
    interval configured for the local virtual router.";
                    }
    
                    leaf priority-zero-pkts-rcvd {
                      type yang:counter64;
                      description
                        "The total number of VRRP packets received by the
    virtual router with a priority of 0.";
                    }
    
                    leaf priority-zero-pkts-sent {
                      type yang:counter64;
                      description
                        "The total number of VRRP packets sent by the
    virtual router with a priority of 0.";
                    }
    
                    leaf invalid-type-pkts-rcvd {
                      type yang:counter64;
                      description
                        "The number of VRRP packets received by the virtual
    router with an invalid value in the 'type' field.";
                    }
    
                    leaf address-list-errors {
                      if-feature validate-address-list-errors;
                      type yang:counter64;
                      description
                        "The total number of packets received with an
    address list that does not match the locally
    configured address list for the virtual router.";
                    }
    
                    leaf packet-length-errors {
                      type yang:counter64;
                      description
                        "The total number of packets received with a packet
    length less than the length of the VRRP header.";
                    }
                  }  // container statistics
                }  // list vrrp-instance
              }  // container vrrp
            }  // container ipv6
    
            leaf bind-ni-name {
              type leafref {
                path "/network-instances/network-instance/name";
              }
              description
                "Network instance to which an interface is bound.";
            }
    
            leaf ipv6-address {
              type inet:ipv6-address;
              description
                "IPv6 address of the local DS-Lite endpoint (AFTR or B4).";
              reference
                "RFC 6333: Dual-Stack Lite Broadband Deployments Following
                	  IPv4 Exhaustion";
    
            }
    
            leaf ipv4-address {
              type inet:ipv4-address;
              description
                "IPv4 address of the local DS-Lite AFTR or B4.
    
    192.0.0.1 is reserved for the AFTR element, while
    192.0.0.0/29 is reserved for the B4 element.
    
    This address can be used to report ICMP problems and will
    appear in traceroute outputs.";
              reference
                "RFC 6333: Dual-Stack Lite Broadband Deployments Following
                	  IPv4 Exhaustion";
    
            }
    
            leaf aftr-ipv6-addr {
              if-feature b4;
              type inet:ipv6-address;
              description
                "Indicates the AFTR's IPv6 address to be used by a B4
    element.";
              reference
                "RFC 6333: Dual-Stack Lite Broadband Deployments Following
                	  IPv4 Exhaustion";
    
            }
    
            leaf tunnel-mtu {
              type uint16;
              description
                "Configures a tunnel MTU.
    
    RFC 6908 specifies that since fragmentation and reassembly
    are not optimal, the operator should do everything possible
    to eliminate the need for them.  If the operator uses simple
    IPv4-in-IPv6 softwire, it is recommended that the MTU size
    of the IPv6 network between the B4 and the AFTR account
    for the additional overhead (40 bytes).";
              reference
                "RFC 6908: Deployment Considerations for Dual-Stack Lite";
    
            }
    
            leaf v6-v4-dscp-preservation {
              type boolean;
              description
                "Copies the DSCP value from the IPv6 header, and vice versa.
    
    According to Section 2.10 of RFC 6908, operators should
    use the uniform model by provisioning the network such
    that the AFTR/B4 copies the DSCP value in the IPv4 header
    to the Traffic Class field in the IPv6 header, after the
    IPv4-in-IPv6 encapsulation.";
              reference
                "Section 2.10 of RFC 6908";
    
            }
    
            leaf id {
              type string;
              description
                "Descriptive identity of the radio link terminal used by
    far-end RLT to check that it's connected to the correct
    near-end RLT.  Does not need to be configured if this
    check is not used.";
            }
    
            leaf mode {
              type identityref {
                base mw-types:rlt-mode;
              }
              mandatory true;
              description
                "A description of the mode in which the radio link
    terminal is configured.  The format is X plus Y.
    X represents the number of bonded carrier terminations.
    Y represents the number of protecting carrier
    terminations.";
            }
    
            leaf-list carrier-terminations {
              type interface-ref;
              must
                "derived-from-or-self(/if:interfaces/if:interface[if:name = current()]/if:type, 'ianaift:microwaveCarrierTermination')" {
                description
                  "The type of interface must be
    'microwaveCarrierTermination'.";
              }
              min-elements 1;
              description
                "A list of references to carrier terminations
    included in the radio link terminal.";
            }
    
            leaf-list rlp-groups {
              type leafref {
                path "/mrl:radio-link-protection-groups/mrl:protection-group/mrl:name";
              }
              description
                "A list of references to the carrier termination
    groups configured for radio link protection in this
    radio link terminal.";
            }
    
            leaf-list xpic-pairs {
              if-feature xpic;
              type leafref {
                path "/mrl:xpic-pairs/mrl:xpic-pair/mrl:name";
              }
              description
                "A list of references to the XPIC pairs used in this
    radio link terminal.  One pair can be used by two
    terminals.";
              reference
                "ETSI TR 102 311";
    
            }
    
            leaf-list mimo-groups {
              if-feature mimo;
              type leafref {
                path "/mrl:mimo-groups/mrl:mimo-group/mrl:name";
              }
              description
                "A reference to the MIMO group used in this
    radio link terminal.  One group can be used by more
    than one terminal.";
              reference
                "ETSI TR 102 311";
    
            }
    
            list tdm-connections {
              if-feature tdm;
              key "tdm-type";
              description
                "A list stating the number of active TDM connections
    of a specified tdm-type that is configured to be
    supported by the RLT.";
              leaf tdm-type {
                type identityref {
                  base mw-types:tdm-type;
                }
                description
                  "The type of TDM connection, which also indicates
    the supported capacity.";
              }
    
              leaf tdm-connections {
                type uint16;
                mandatory true;
                description
                  "Number of connections of the specified type.";
              }
            }  // list tdm-connections
    
            leaf carrier-id {
              type string;
              default "A";
              description
                "ID of the carrier (e.g., A, B, C, or D).
    Used in XPIC and MIMO configurations to check that
    the carrier termination is connected to the correct
    far-end carrier termination.  Should be the same
    carrier ID on both sides of the hop.  Left as
    default value when MIMO and XPIC are not in use.";
            }
    
            leaf tx-enabled {
              type boolean;
              default "false";
              description
                "Disables (false) or enables (true) the transmitter.
    Only applicable when the interface is enabled
    (interface:enabled = true); otherwise, it's always
    disabled.";
            }
    
            leaf tx-oper-status {
              type enumeration {
                enum "off" {
                  value 0;
                  description
                    "Transmitter is off.";
                }
                enum "on" {
                  value 1;
                  description
                    "Transmitter is on.";
                }
                enum "standby" {
                  value 2;
                  description
                    "Transmitter is in standby.";
                }
              }
              config false;
              description
                "Shows the operative status of the transmitter.";
            }
    
            leaf tx-frequency {
              type uint32;
              units "kHz";
              mandatory true;
              description
                "Selected transmitter frequency.";
            }
    
            choice freq-or-distance {
              mandatory true;
              description
                "A choice to configure rx-frequency directly or compute
    it as duplex-distance subtracted from tx-frequency.";
              leaf rx-frequency {
                type uint32;
                units "kHz";
                description
                  "Selected receiver frequency.";
              }
              leaf duplex-distance {
                type int32;
                units "kHz";
                description
                  "Distance between transmitter and receiver frequencies.";
              }
            }  // choice freq-or-distance
    
            leaf actual-rx-frequency {
              type uint32;
              units "kHz";
              config false;
              description
                "Computed receiver frequency.";
            }
    
            leaf actual-duplex-distance {
              type uint32;
              units "kHz";
              config false;
              description
                "Computed distance between Tx and Rx frequencies.";
            }
    
            leaf channel-separation {
              type uint32;
              units "kHz";
              mandatory true;
              description
                "The amount of bandwidth allocated to a carrier.  The
    distance between adjacent channels in a radio
    frequency channels arrangement";
              reference
                "ETSI EN 302 217-1";
    
            }
    
            leaf polarization {
              type enumeration {
                enum "horizontal" {
                  value 0;
                  description
                    "Horizontal polarization.";
                }
                enum "vertical" {
                  value 1;
                  description
                    "Vertical polarization.";
                }
                enum "not-specified" {
                  value 2;
                  description
                    "Polarization not specified.";
                }
              }
              default "not-specified";
              description
                "Polarization - a textual description for info only.";
            }
    
            choice power-mode {
              mandatory true;
              description
                "A choice of RTPC or ATPC.";
              container rtpc {
                description
                  "Remote Transmit Power Control (RTPC).";
                reference
                  "ETSI EN 302 217-1";
    
                leaf maximum-nominal-power {
                  type power {
                    fraction-digits 0;
                    range "-99..99";
                  }
                  units "dBm";
                  mandatory true;
                  description
                    "Selected output power.";
                  reference
                    "ETSI EN 302 217-1";
    
                }
              }  // container rtpc
              container atpc {
                description
                  "Automatic Transmitter Power Control (ATPC).";
                reference
                  "ETSI EN 302 217-1";
    
                leaf maximum-nominal-power {
                  type power {
                    fraction-digits 0;
                    range "-99..99";
                  }
                  units "dBm";
                  mandatory true;
                  description
                    "Selected maximum output power.  Minimum output
    power is the same as the system capability,
    minimum-power.";
                  reference
                    "ETSI EN 302 217-1";
    
                }
    
                leaf atpc-lower-threshold {
                  type power {
                    fraction-digits 0;
                    range "-99..-20";
                  }
                  units "dBm";
                  must
                    "current() <= ../atpc-upper-threshold";
                  mandatory true;
                  description
                    "The lower threshold for the input power at the
    far end, which is used in the ATPC mode.";
                  reference
                    "ETSI EN 302 217-1";
    
                }
    
                leaf atpc-upper-threshold {
                  type power {
                    fraction-digits 0;
                    range "-99..-20";
                  }
                  units "dBm";
                  mandatory true;
                  description
                    "The upper threshold for the input power at the
    far end, which is used in the ATPC mode.";
                  reference
                    "ETSI EN 302 217-1";
    
                }
              }  // container atpc
            }  // choice power-mode
    
            leaf actual-transmitted-level {
              type power {
                fraction-digits 0;
                range "-99..99";
              }
              units "dBm";
              config false;
              description
                "Actual transmitted power level (0.1 dBm resolution).";
              reference
                "ETSI EN 301 129";
    
            }
    
            leaf actual-received-level {
              type power {
                fraction-digits 0;
                range "-99..-20";
              }
              units "dBm";
              config false;
              description
                "Actual received power level (0.1 dBm resolution).";
              reference
                "ETSI EN 301 129";
    
            }
    
            choice coding-modulation-mode {
              mandatory true;
              description
                "A selection of single or
    adaptive coding/modulation mode.";
              container single {
                description
                  "A single modulation order only.";
                reference
                  "ETSI EN 302 217-1";
    
                leaf selected-cm {
                  type identityref {
                    base mw-types:coding-modulation;
                  }
                  mandatory true;
                  description
                    "Selected the single coding/modulation.";
                }
              }  // container single
              container adaptive {
                description
                  "Adaptive coding/modulation.";
                reference
                  "ETSI EN 302 217-1";
    
                leaf selected-min-acm {
                  type identityref {
                    base mw-types:coding-modulation;
                  }
                  mandatory true;
                  description
                    "Selected minimum coding/modulation.
    Adaptive coding/modulation shall not go
    below this value.";
                }
    
                leaf selected-max-acm {
                  type identityref {
                    base mw-types:coding-modulation;
                  }
                  mandatory true;
                  description
                    "Selected maximum coding/modulation.
    Adaptive coding/modulation shall not go
    above this value.";
                }
              }  // container adaptive
            }  // choice coding-modulation-mode
    
            leaf actual-tx-cm {
              type identityref {
                base mw-types:coding-modulation;
              }
              config false;
              description
                "Actual coding/modulation in transmitting direction.";
            }
    
            leaf actual-snir {
              type decimal64 {
                fraction-digits 1;
                range "0..99";
              }
              units "dB";
              config false;
              description
                "Actual signal to noise plus the interference ratio
    (0.1 dB resolution).";
            }
    
            leaf actual-xpi {
              if-feature xpic;
              type decimal64 {
                fraction-digits 1;
                range "0..99";
              }
              units "dB";
              config false;
              description
                "The actual carrier to cross-polar interference.
    Only valid if XPIC is enabled (0.1 dB resolution).";
              reference
                "ETSI TR 102 311";
    
            }
    
            container ct-performance-thresholds {
              description
                "Specification of thresholds for when alarms should
    be sent and cleared for various performance counters.";
              leaf received-level-alarm-threshold {
                type power {
                  fraction-digits 0;
                  range "-99..-20";
                }
                units "dBm";
                default "-99";
                description
                  "An alarm is sent when the received power level is
    below the specified threshold.";
                reference
                  "ETSI EN 301 129";
    
              }
    
              leaf transmitted-level-alarm-threshold {
                type power {
                  fraction-digits 0;
                  range "-99..99";
                }
                units "dBm";
                default "-99";
                description
                  "An alarm is sent when the transmitted power level
    is below the specified threshold.";
                reference
                  "ETSI EN 301 129";
    
              }
    
              leaf ber-alarm-threshold {
                type enumeration {
                  enum "1e-9" {
                    value 0;
                    description
                      "Threshold at 1e-9 (10^-9).";
                  }
                  enum "1e-8" {
                    value 1;
                    description
                      "Threshold at 1e-8 (10^-8).";
                  }
                  enum "1e-7" {
                    value 2;
                    description
                      "Threshold at 1e-7 (10^-7).";
                  }
                  enum "1e-6" {
                    value 3;
                    description
                      "Threshold at 1e-6 (10^-6).";
                  }
                  enum "1e-5" {
                    value 4;
                    description
                      "Threshold at 1e-5 (10^-5).";
                  }
                  enum "1e-4" {
                    value 5;
                    description
                      "Threshold at 1e-4 (10^-4).";
                  }
                  enum "1e-3" {
                    value 6;
                    description
                      "Threshold at 1e-3 (10^-3).";
                  }
                  enum "1e-2" {
                    value 7;
                    description
                      "Threshold at 1e-2 (10^-2).";
                  }
                  enum "1e-1" {
                    value 8;
                    description
                      "Threshold at 1e-1 (10^-1).";
                  }
                }
                default "1e-6";
                description
                  "Specification of at which BER an alarm should
    be raised.";
                reference
                  "ETSI EN 302 217-1";
    
              }
            }  // container ct-performance-thresholds
    
            leaf if-loop {
              type enumeration {
                enum "disabled" {
                  value 0;
                  description
                    "Disables the IF Loop.";
                }
                enum "client" {
                  value 1;
                  description
                    "Loops the signal back to the client side.";
                }
                enum "radio" {
                  value 2;
                  description
                    "Loops the signal back to the radio side.";
                }
              }
              default "disabled";
              description
                "Enable (client/radio) or disable (disabled)
    the IF Loop, which loops the signal back to
    the client side or the radio side.";
            }
    
            leaf rf-loop {
              type enumeration {
                enum "disabled" {
                  value 0;
                  description
                    "Disables the RF Loop.";
                }
                enum "client" {
                  value 1;
                  description
                    "Loops the signal back to the client side.";
                }
                enum "radio" {
                  value 2;
                  description
                    "Loops the signal back to the radio side.";
                }
              }
              default "disabled";
              description
                "Enable (client/radio) or disable (disabled)
    the RF loop, which loops the signal back to
    the client side or the radio side.";
            }
    
            container capabilities {
              config false;
              description
                "Capabilities of the installed equipment and
    some selected configurations.";
              leaf min-tx-frequency {
                type uint32;
                units "kHz";
                description
                  "Minimum Tx frequency possible to use.";
              }
    
              leaf max-tx-frequency {
                type uint32;
                units "kHz";
                description
                  "Maximum Tx frequency possible to use.";
              }
    
              leaf min-rx-frequency {
                type uint32;
                units "kHz";
                description
                  "Minimum Rx frequency possible to use.";
              }
    
              leaf max-rx-frequency {
                type uint32;
                units "kHz";
                description
                  "Maximum Tx frequency possible to use.";
              }
    
              leaf minimum-power {
                type power;
                units "dBm";
                description
                  "The minimum output power supported.";
                reference
                  "ETSI EN 302 217-1";
    
              }
    
              leaf maximum-available-power {
                type power;
                units "dBm";
                description
                  "The maximum output power supported.";
                reference
                  "ETSI EN 302 217-1";
    
              }
    
              leaf available-min-acm {
                type identityref {
                  base mw-types:coding-modulation;
                }
                description
                  "Minimum coding-modulation possible to use.";
              }
    
              leaf available-max-acm {
                type identityref {
                  base mw-types:coding-modulation;
                }
                description
                  "Maximum coding-modulation possible to use.";
              }
            }  // container capabilities
    
            container error-performance-statistics {
              config false;
              description
                "ITU-T G.826 error performance statistics relevant for
    a microwave/millimeter wave carrier.";
              leaf bbe {
                type yang:counter32;
                units "number of block errors";
                description
                  "Number of Background Block Errors (BBEs).  A BBE is an
    errored block not occurring as part of Severely Errored
    Seconds (SES).  Discontinuities in the value of this
    counter can occur at re-initialization of the management
    system and at other times as indicated by the value of
    'discontinuity-time' in ietf-interfaces.";
                reference
                  "ITU-T G.826";
    
              }
    
              leaf es {
                type yang:counter32;
                units "seconds";
                description
                  "Number of Errored Seconds (ES).  An ES is a one-second
    period with one or more errored blocks or at least one
    defect.  Discontinuities in the value of this counter
    can occur at re-initialization of the management system
    and at other times as indicated by the value of
    'discontinuity-time' in ietf-interfaces.";
                reference
                  "ITU-T G.826";
    
              }
    
              leaf ses {
                type yang:counter32;
                units "seconds";
                description
                  "Number of SES.  SES is a one-second period that contains
    equal or more than 30% errored blocks or at least
    one defect.  SES is a subset of ES.  Discontinuities in
    the value of this counter can occur at re-initialization
    of the management system and at other times as indicated
    by the value of 'discontinuity-time' in ietf-interfaces.";
                reference
                  "ITU-T G.826";
    
              }
    
              leaf uas {
                type yang:counter32;
                units "seconds";
                description
                  "Number of Unavailable Seconds (UAS); that is, the
    total time that the node has been unavailable.
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time' in ietf-interfaces.";
                reference
                  "ITU-T G.826";
    
              }
            }  // container error-performance-statistics
    
            container radio-performance-statistics {
              config false;
              description
                "ETSI EN 301 129 radio physical interface statistics relevant
    for a carrier termination.";
              leaf min-rltm {
                type power {
                  fraction-digits 0;
                  range "-99..-20";
                }
                units "dBm";
                description
                  "Minimum received power level.  Discontinuities in the
    value of this counter can occur at re-initialization
    of the management system and at other times as
    indicated by the value of 'discontinuity-time' in
    ietf-interfaces.";
                reference
                  "ETSI EN 301 129";
    
              }
    
              leaf max-rltm {
                type power {
                  fraction-digits 0;
                  range "-99..-20";
                }
                units "dBm";
                description
                  "Maximum received power level.  Discontinuities in the
    value of this counter can occur at re-initialization
    of the management system and at other times as
    indicated by the value of 'discontinuity-time' in
    ietf-interfaces.";
                reference
                  "ETSI EN 301 129";
    
              }
    
              leaf min-tltm {
                type power {
                  fraction-digits 0;
                  range "-99..99";
                }
                units "dBm";
                description
                  "Minimum transmitted power level.  Discontinuities
    in the value of this counter can occur at
    re-initialization of the management system and
    at other times as indicated by the value of
    'discontinuity-time' in ietf-interfaces.";
                reference
                  "ETSI EN 301 129";
    
              }
    
              leaf max-tltm {
                type power {
                  fraction-digits 0;
                  range "-99..99";
                }
                units "dBm";
                description
                  "Maximum transmitted power level.  Discontinuities
    in the value of this counter can occur at
    re-initialization of the management system and
    at other times as indicated by the value of
    'discontinuity-time' in ietf-interfaces.";
                reference
                  "ETSI EN 301 129";
    
              }
            }  // container radio-performance-statistics
    
            leaf softwire-payload-mtu {
              type uint16;
              units "bytes";
              description
                "The payload IPv4 MTU for the softwire tunnel.";
            }
    
            leaf softwire-path-mru {
              type uint16;
              units "bytes";
              description
                "The path MRU for the softwire (payload + encapsulation
    overhead).";
              reference
                "RFC 4213: Basic Transition Mechanisms for IPv6 Hosts and
                Routers";
    
            }
    
            choice ce-type {
              description
                "Sets the softwire CE mechanism";
              case binding {
                if-feature binding-mode;
                description
                  "CE binding configuration";
                leaf binding-ipv6info {
                  type union {
                    type inet:ipv6-address;
                    type inet:ipv6-prefix;
                  }
                  description
                    "The IPv6 information for a binding entry.
    
    When the IPv6 prefix type is used,
    the IPv6 source address of the CE is constructed
    according to the description in RFC 7596.
    
    If the IPv6 address type is used, the CE can use
    any valid /128 address from a prefix assigned to
    the CE.";
                  reference
                    "RFC 7596: Lightweight 4over6: An Extension
                    to the Dual-Stack Lite Architecture, Section 5.1";
    
                }
    
                leaf br-ipv6-addr {
                  type inet:ipv6-address;
                  mandatory true;
                  description
                    "The IPv6 address of the binding BR.";
                }
              }  // case binding
    
              case algo {
                if-feature map-e or map-t;
                description
                  "CE algorithm configuration";
                container algo-instances {
                  description
                    "Collection of MAP-E/MAP-T parameters";
                  list algo-instance {
                    key "name";
                    description
                      "MAP forwarding rule instance for
    MAP-E/MAP-T";
                    leaf name {
                      type string;
                      mandatory true;
                      description
                        "The name is used to uniquely identify an algorithm
    instance.
    
    This name can be automatically assigned
    or explicitly configured.";
                    }
    
                    leaf enable {
                      type boolean;
                      description
                        "Enable/disable an individual MAP-E or MAP-T rule.";
                    }
    
                    container algo-versioning {
                      description
                        "Version number for this algorithm instance";
                      leaf version {
                        type uint64;
                        description
                          "A version number for the mapping algorithm
    rules provided to the algorithm instance";
                      }
    
                      leaf date {
                        type yang:date-and-time;
                        description
                          "Timestamp when the algorithm instance was activated.
    
    An algorithm instance may be provided with mapping
    rules that may change in time (for example, increase
    the size of the port set).  When a party who is the victim
    of abuse presents an external IP address/port, the version
    of the algorithm is important because depending on
    the version, a distinct customer may be identified.
    
    The timestamp is used as a key to find the appropriate
    algorithm that was put into effect when an abuse
    occurred.";
                        reference
                          "RFC 7422: Deterministic Address Mapping to Reduce
                          	  Logging in Carrier-Grade NAT Deployments";
    
                      }
                    }  // container algo-versioning
    
                    choice data-plane {
                      description
                        "Selects MAP-E (encapsulation) or MAP-T
    (translation)";
                      case encapsulation {
                        if-feature map-e;
                        description
                          "encapsulation for MAP-E";
                        leaf br-ipv6-addr {
                          type inet:ipv6-address;
                          mandatory true;
                          description
                            "The IPv6 address of the MAP-E BR.";
                        }
                      }  // case encapsulation
    
                      case translation {
                        if-feature map-t;
                        description
                          "translation for MAP-T";
                        leaf dmr-ipv6-prefix {
                          type inet:ipv6-prefix;
                          description
                            "The IPv6 prefix of the MAP-T BR.";
                        }
                      }  // case translation
                    }  // choice data-plane
    
                    leaf ea-len {
                      type uint8;
                      mandatory true;
                      description
                        "Embedded Address (EA) bits are the IPv4 EA-bits in the IPv6
    address identifying an IPv4 prefix/address (or part thereof)
    or a shared IPv4 address (or part thereof) and a port-set
    identifier.  The length of the EA-bits is defined as part of
    a MAP rule for a MAP domain.";
                    }
    
                    leaf rule-ipv6-prefix {
                      type inet:ipv6-prefix;
                      mandatory true;
                      description
                        "The Rule IPv6 prefix defined in the mapping rule.";
                    }
    
                    leaf rule-ipv4-prefix {
                      type inet:ipv4-prefix;
                      mandatory true;
                      description
                        "The Rule IPv4 prefix defined in the mapping rule.";
                    }
    
                    leaf forwarding {
                      type boolean;
                      mandatory true;
                      description
                        "This parameter specifies whether the rule may be used for
    forwarding; if set, this rule is used as a Forwarding
    Mapping Rule (FMR); if not set, this rule is a Basic
    Mapping Rule (BMR) only and must not be used for
    forwarding.";
                    }
                  }  // list algo-instance
                }  // container algo-instances
              }  // case algo
            }  // choice ce-type
          }  // list interface
        }  // container interfaces
    
        typedef interface-state-ref {
          type leafref {
            path "/if:interfaces-state/if:interface/if:name";
          }
          status deprecated;
          description
            "This type is used by data models that need to reference
    the operationally present interfaces.";
        }
    
        container interfaces-state {
          config false;
          status deprecated;
          description
            "Data nodes for the operational state of interfaces.";
          list interface {
            key "name";
            status deprecated;
            description
              "The list of interfaces on the device.
    
    System-controlled interfaces created by the system are
    always present in this list, whether or not they are
    configured.";
            leaf name {
              type string;
              status deprecated;
              description
                "The name of the interface.
    
    A server implementation MAY map this leaf to the ifName
    MIB object.  Such an implementation needs to use some
    mechanism to handle the differences in size and characters
    allowed between this leaf and ifName.  The definition of
    such a mechanism is outside the scope of this document.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifName";
    
            }
    
            leaf type {
              type identityref {
                base interface-type;
              }
              mandatory true;
              status deprecated;
              description
                "The type of the interface.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifType";
    
            }
    
            leaf admin-status {
              if-feature if-mib;
              type enumeration {
                enum "up" {
                  value 1;
                  description
                    "Ready to pass packets.";
                }
                enum "down" {
                  value 2;
                  description
                    "Not ready to pass packets and not in some test mode.";
                }
                enum "testing" {
                  value 3;
                  description
                    "In some test mode.";
                }
              }
              mandatory true;
              status deprecated;
              description
                "The desired state of the interface.
    
    This leaf has the same read semantics as ifAdminStatus.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
    
            }
    
            leaf oper-status {
              type enumeration {
                enum "up" {
                  value 1;
                  description
                    "Ready to pass packets.";
                }
                enum "down" {
                  value 2;
                  description
                    "The interface does not pass any packets.";
                }
                enum "testing" {
                  value 3;
                  description
                    "In some test mode.  No operational packets can
    be passed.";
                }
                enum "unknown" {
                  value 4;
                  description
                    "Status cannot be determined for some reason.";
                }
                enum "dormant" {
                  value 5;
                  description
                    "Waiting for some external event.";
                }
                enum "not-present" {
                  value 6;
                  description
                    "Some component (typically hardware) is missing.";
                }
                enum "lower-layer-down" {
                  value 7;
                  description
                    "Down due to state of lower-layer interface(s).";
                }
              }
              mandatory true;
              status deprecated;
              description
                "The current operational state of the interface.
    
    This leaf has the same semantics as ifOperStatus.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifOperStatus";
    
            }
    
            leaf last-change {
              type yang:date-and-time;
              status deprecated;
              description
                "The time the interface entered its current operational
    state.  If the current state was entered prior to the
    last re-initialization of the local network management
    subsystem, then this node is not present.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifLastChange";
    
            }
    
            leaf if-index {
              if-feature if-mib;
              type int32 {
                range "1..2147483647";
              }
              mandatory true;
              status deprecated;
              description
                "The ifIndex value for the ifEntry represented by this
    interface.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifIndex";
    
            }
    
            leaf phys-address {
              type yang:phys-address;
              status deprecated;
              description
                "The interface's address at its protocol sub-layer.  For
    example, for an 802.x interface, this object normally
    contains a Media Access Control (MAC) address.  The
    interface's media-specific modules must define the bit
    and byte ordering and the format of the value of this
    object.  For interfaces that do not have such an address
    (e.g., a serial line), this node is not present.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
    
            }
    
            leaf-list higher-layer-if {
              type interface-state-ref;
              status deprecated;
              description
                "A list of references to interfaces layered on top of this
    interface.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifStackTable";
    
            }
    
            leaf-list lower-layer-if {
              type interface-state-ref;
              status deprecated;
              description
                "A list of references to interfaces layered underneath this
    interface.";
              reference
                "RFC 2863: The Interfaces Group MIB - ifStackTable";
    
            }
    
            leaf speed {
              type yang:gauge64;
              units "bits/second";
              status deprecated;
              description
                "An estimate of the interface's current bandwidth in bits
    per second.  For interfaces that do not vary in
    bandwidth or for those where no accurate estimation can
    
    be made, this node should contain the nominal bandwidth.
    For interfaces that have no concept of bandwidth, this
    node is not present.";
              reference
                "RFC 2863: The Interfaces Group MIB -
                	  ifSpeed, ifHighSpeed";
    
            }
    
            container statistics {
              status deprecated;
              description
                "A collection of interface-related statistics objects.";
              leaf discontinuity-time {
                type yang:date-and-time;
                mandatory true;
                status deprecated;
                description
                  "The time on the most recent occasion at which any one or
    more of this interface's counters suffered a
    discontinuity.  If no such discontinuities have occurred
    since the last re-initialization of the local management
    subsystem, then this node contains the time the local
    management subsystem re-initialized itself.";
              }
    
              leaf in-octets {
                type yang:counter64;
                status deprecated;
                description
                  "The total number of octets received on the interface,
    including framing characters.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
    
              }
    
              leaf in-unicast-pkts {
                type yang:counter64;
                status deprecated;
                description
                  "The number of packets, delivered by this sub-layer to a
    higher (sub-)layer, that were not addressed to a
    multicast or broadcast address at this sub-layer.
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
    
              }
    
              leaf in-broadcast-pkts {
                type yang:counter64;
                status deprecated;
                description
                  "The number of packets, delivered by this sub-layer to a
    higher (sub-)layer, that were addressed to a broadcast
    address at this sub-layer.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCInBroadcastPkts";
    
              }
    
              leaf in-multicast-pkts {
                type yang:counter64;
                status deprecated;
                description
                  "The number of packets, delivered by this sub-layer to a
    higher (sub-)layer, that were addressed to a multicast
    address at this sub-layer.  For a MAC-layer protocol,
    this includes both Group and Functional addresses.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCInMulticastPkts";
    
              }
    
              leaf in-discards {
                type yang:counter32;
                status deprecated;
                description
                  "The number of inbound packets that were chosen to be
    discarded even though no errors had been detected to
    prevent their being deliverable to a higher-layer
    protocol.  One possible reason for discarding such a
    packet could be to free up buffer space.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifInDiscards";
    
              }
    
              leaf in-errors {
                type yang:counter32;
                status deprecated;
                description
                  "For packet-oriented interfaces, the number of inbound
    packets that contained errors preventing them from being
    deliverable to a higher-layer protocol.  For character-
    oriented or fixed-length interfaces, the number of
    inbound transmission units that contained errors
    preventing them from being deliverable to a higher-layer
    protocol.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifInErrors";
    
              }
    
              leaf in-unknown-protos {
                type yang:counter32;
                status deprecated;
                description
                  "For packet-oriented interfaces, the number of packets
    received via the interface that were discarded because
    of an unknown or unsupported protocol.  For
    character-oriented or fixed-length interfaces that
    support protocol multiplexing, the number of
    transmission units received via the interface that were
    discarded because of an unknown or unsupported protocol.
    For any interface that does not support protocol
    multiplexing, this counter is not present.
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
    
              }
    
              leaf out-octets {
                type yang:counter64;
                status deprecated;
                description
                  "The total number of octets transmitted out of the
    interface, including framing characters.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
    
              }
    
              leaf out-unicast-pkts {
                type yang:counter64;
                status deprecated;
                description
                  "The total number of packets that higher-level protocols
    requested be transmitted and that were not addressed
    to a multicast or broadcast address at this sub-layer,
    including those that were discarded or not sent.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
    
              }
    
              leaf out-broadcast-pkts {
                type yang:counter64;
                status deprecated;
                description
                  "The total number of packets that higher-level protocols
    requested be transmitted and that were addressed to a
    broadcast address at this sub-layer, including those
    that were discarded or not sent.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCOutBroadcastPkts";
    
              }
    
              leaf out-multicast-pkts {
                type yang:counter64;
                status deprecated;
                description
                  "The total number of packets that higher-level protocols
    requested be transmitted and that were addressed to a
    multicast address at this sub-layer, including those
    that were discarded or not sent.  For a MAC-layer
    protocol, this includes both Group and Functional
    addresses.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB -
                  	  ifHCOutMulticastPkts";
    
              }
    
              leaf out-discards {
                type yang:counter32;
                status deprecated;
                description
                  "The number of outbound packets that were chosen to be
    discarded even though no errors had been detected to
    prevent their being transmitted.  One possible reason
    for discarding such a packet could be to free up buffer
    space.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
    
              }
    
              leaf out-errors {
                type yang:counter32;
                status deprecated;
                description
                  "For packet-oriented interfaces, the number of outbound
    packets that could not be transmitted because of errors.
    For character-oriented or fixed-length interfaces, the
    number of outbound transmission units that could not be
    transmitted because of errors.
    
    Discontinuities in the value of this counter can occur
    at re-initialization of the management system and at
    other times as indicated by the value of
    'discontinuity-time'.";
                reference
                  "RFC 2863: The Interfaces Group MIB - ifOutErrors";
    
              }
            }  // container statistics
    
            container ipv4 {
              presence
                "Present if IPv4 is enabled on this interface";
              config false;
              status deprecated;
              description
                "Interface-specific parameters for the IPv4 address family.";
              leaf forwarding {
                type boolean;
                status deprecated;
                description
                  "Indicates whether IPv4 packet forwarding is enabled or
    disabled on this interface.";
              }
    
              leaf mtu {
                type uint16 {
                  range "68..max";
                }
                units "octets";
                status deprecated;
                description
                  "The size, in octets, of the largest IPv4 packet that the
    interface will send and receive.";
                reference
                  "RFC 791: Internet Protocol";
    
              }
    
              list address {
                key "ip";
                status deprecated;
                description
                  "The list of IPv4 addresses on the interface.";
                leaf ip {
                  type inet:ipv4-address-no-zone;
                  status deprecated;
                  description
                    "The IPv4 address on the interface.";
                }
    
                choice subnet {
                  status deprecated;
                  description
                    "The subnet can be specified as a prefix length or,
    if the server supports non-contiguous netmasks, as
    a netmask.";
                  case prefix-length {
                    status deprecated;
                    leaf prefix-length {
                      type uint8 {
                        range "0..32";
                      }
                      status deprecated;
                      description
                        "The length of the subnet prefix.";
                    }
                  }  // case prefix-length
    
                  case netmask {
                    status deprecated;
                    leaf netmask {
                      if-feature ipv4-non-contiguous-netmasks;
                      type yang:dotted-quad;
                      status deprecated;
                      description
                        "The subnet specified as a netmask.";
                    }
                  }  // case netmask
                }  // choice subnet
    
                leaf origin {
                  type ip-address-origin;
                  status deprecated;
                  description
                    "The origin of this address.";
                }
              }  // list address
    
              list neighbor {
                key "ip";
                status deprecated;
                description
                  "A list of mappings from IPv4 addresses to
    link-layer addresses.
    
    This list represents the ARP Cache.";
                reference
                  "RFC 826: An Ethernet Address Resolution Protocol";
    
                leaf ip {
                  type inet:ipv4-address-no-zone;
                  status deprecated;
                  description
                    "The IPv4 address of the neighbor node.";
                }
    
                leaf link-layer-address {
                  type yang:phys-address;
                  status deprecated;
                  description
                    "The link-layer address of the neighbor node.";
                }
    
                leaf origin {
                  type neighbor-origin;
                  status deprecated;
                  description
                    "The origin of this neighbor entry.";
                }
              }  // list neighbor
            }  // container ipv4
    
            container ipv6 {
              presence
                "Present if IPv6 is enabled on this interface";
              config false;
              status deprecated;
              description
                "Parameters for the IPv6 address family.";
              leaf forwarding {
                type boolean;
                default "false";
                status deprecated;
                description
                  "Indicates whether IPv6 packet forwarding is enabled or
    disabled on this interface.";
                reference
                  "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
                  	  Section 6.2.1, IsRouter";
    
              }
    
              leaf mtu {
                type uint32 {
                  range "1280..max";
                }
                units "octets";
                status deprecated;
                description
                  "The size, in octets, of the largest IPv6 packet that the
    interface will send and receive.";
                reference
                  "RFC 8200: Internet Protocol, Version 6 (IPv6)
                  	  Specification
                  	  Section 5";
    
              }
    
              list address {
                key "ip";
                status deprecated;
                description
                  "The list of IPv6 addresses on the interface.";
                leaf ip {
                  type inet:ipv6-address-no-zone;
                  status deprecated;
                  description
                    "The IPv6 address on the interface.";
                }
    
                leaf prefix-length {
                  type uint8 {
                    range "0..128";
                  }
                  mandatory true;
                  status deprecated;
                  description
                    "The length of the subnet prefix.";
                }
    
                leaf origin {
                  type ip-address-origin;
                  status deprecated;
                  description
                    "The origin of this address.";
                }
    
                leaf status {
                  type enumeration {
                    enum "preferred" {
                      value 0;
                      description
                        "This is a valid address that can appear as the
    destination or source address of a packet.";
                    }
                    enum "deprecated" {
                      value 1;
                      description
                        "This is a valid but deprecated address that should
    no longer be used as a source address in new
    communications, but packets addressed to such an
    address are processed as expected.";
                    }
                    enum "invalid" {
                      value 2;
                      description
                        "This isn't a valid address, and it shouldn't appear
    as the destination or source address of a packet.";
                    }
                    enum "inaccessible" {
                      value 3;
                      description
                        "The address is not accessible because the interface
    to which this address is assigned is not
    operational.";
                    }
                    enum "unknown" {
                      value 4;
                      description
                        "The status cannot be determined for some reason.";
                    }
                    enum "tentative" {
                      value 5;
                      description
                        "The uniqueness of the address on the link is being
    verified.  Addresses in this state should not be
    used for general communication and should only be
    used to determine the uniqueness of the address.";
                    }
                    enum "duplicate" {
                      value 6;
                      description
                        "The address has been determined to be non-unique on
    the link and so must not be used.";
                    }
                    enum "optimistic" {
                      value 7;
                      description
                        "The address is available for use, subject to
    restrictions, while its uniqueness on a link is
    being verified.";
                    }
                  }
                  status deprecated;
                  description
                    "The status of an address.  Most of the states correspond
    to states from the IPv6 Stateless Address
    Autoconfiguration protocol.";
                  reference
                    "RFC 4293: Management Information Base for the
                    	  Internet Protocol (IP)
                    	  - IpAddressStatusTC
                     RFC 4862: IPv6 Stateless Address Autoconfiguration";
    
                }
              }  // list address
    
              list neighbor {
                key "ip";
                status deprecated;
                description
                  "A list of mappings from IPv6 addresses to
    link-layer addresses.
    
    This list represents the Neighbor Cache.";
                reference
                  "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
    
                leaf ip {
                  type inet:ipv6-address-no-zone;
                  status deprecated;
                  description
                    "The IPv6 address of the neighbor node.";
                }
    
                leaf link-layer-address {
                  type yang:phys-address;
                  status deprecated;
                  description
                    "The link-layer address of the neighbor node.";
                }
    
                leaf origin {
                  type neighbor-origin;
                  status deprecated;
                  description
                    "The origin of this neighbor entry.";
                }
    
                leaf is-router {
                  type empty;
                  status deprecated;
                  description
                    "Indicates that the neighbor node acts as a router.";
                }
    
                leaf state {
                  type enumeration {
                    enum "incomplete" {
                      value 0;
                      description
                        "Address resolution is in progress, and the
    link-layer address of the neighbor has not yet been
    determined.";
                    }
                    enum "reachable" {
                      value 1;
                      description
                        "Roughly speaking, the neighbor is known to have been
    reachable recently (within tens of seconds ago).";
                    }
                    enum "stale" {
                      value 2;
                      description
                        "The neighbor is no longer known to be reachable, but
    until traffic is sent to the neighbor no attempt
    should be made to verify its reachability.";
                    }
                    enum "delay" {
                      value 3;
                      description
                        "The neighbor is no longer known to be reachable, and
    traffic has recently been sent to the neighbor.
    Rather than probe the neighbor immediately, however,
    delay sending probes for a short while in order to
    give upper-layer protocols a chance to provide
    reachability confirmation.";
                    }
                    enum "probe" {
                      value 4;
                      description
                        "The neighbor is no longer known to be reachable, and
    unicast Neighbor Solicitation probes are being sent
    to verify reachability.";
                    }
                  }
                  status deprecated;
                  description
                    "The Neighbor Unreachability Detection state of this
    entry.";
                  reference
                    "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
                    	  Section 7.3.2";
    
                }
              }  // list neighbor
    
              container ipv6-router-advertisements {
                description
                  "Parameters of IPv6 Router Advertisements.";
                leaf send-advertisements {
                  type boolean;
                  description
                    "A flag indicating whether or not the router sends periodic
    Router Advertisements and responds to Router
    Solicitations.";
                }
    
                leaf max-rtr-adv-interval {
                  type uint16 {
                    range "4..1800";
                  }
                  units "seconds";
                  description
                    "The maximum time allowed between sending unsolicited
    multicast Router Advertisements from the interface.";
                }
    
                leaf min-rtr-adv-interval {
                  type uint16 {
                    range "3..1350";
                  }
                  units "seconds";
                  description
                    "The minimum time allowed between sending unsolicited
    multicast Router Advertisements from the interface.";
                }
    
                leaf managed-flag {
                  type boolean;
                  description
                    "The value that is placed in the 'Managed address
    configuration' flag field in the Router Advertisement.";
                }
    
                leaf other-config-flag {
                  type boolean;
                  description
                    "The value that is placed in the 'Other configuration' flag
    field in the Router Advertisement.";
                }
    
                leaf link-mtu {
                  type uint32;
                  description
                    "The value that is placed in MTU options sent by the
    router.  A value of zero indicates that no MTU options are
    sent.";
                }
    
                leaf reachable-time {
                  type uint32 {
                    range "0..3600000";
                  }
                  units "milliseconds";
                  description
                    "The value that is placed in the Reachable Time field in
    the Router Advertisement messages sent by the router.  A
    value of zero means unspecified (by this router).";
                }
    
                leaf retrans-timer {
                  type uint32;
                  units "milliseconds";
                  description
                    "The value that is placed in the Retrans Timer field in the
    Router Advertisement messages sent by the router.  A value
    of zero means unspecified (by this router).";
                }
    
                leaf cur-hop-limit {
                  type uint8;
                  description
                    "The value that is placed in the Cur Hop Limit field in the
    Router Advertisement messages sent by the router.  A value
    of zero means unspecified (by this router).";
                }
    
                leaf default-lifetime {
                  type uint16 {
                    range "0..9000";
                  }
                  units "seconds";
                  description
                    "The value that is placed in the Router Lifetime field of
    Router Advertisements sent from the interface, in seconds.
    A value of zero indicates that the router is not to be
    used as a default router.";
                }
    
                container prefix-list {
                  description
                    "A list of prefixes that are placed in Prefix Information
    options in Router Advertisement messages sent from the
    interface.
    
    By default, these are all prefixes that the router
    advertises via routing protocols as being on-link for the
    interface from which the advertisement is sent.";
                  list prefix {
                    key "prefix-spec";
                    description
                      "Advertised prefix entry and its parameters.";
                    leaf prefix-spec {
                      type inet:ipv6-prefix;
                      description
                        "IPv6 address prefix.";
                    }
    
                    leaf valid-lifetime {
                      type uint32;
                      units "seconds";
                      description
                        "The value that is placed in the Valid Lifetime in the
    Prefix Information option.  The designated value of
    all 1's (0xffffffff) represents infinity.
    
    An implementation SHOULD keep this value constant in
    consecutive advertisements except when it is
    explicitly changed in configuration.";
                    }
    
                    leaf on-link-flag {
                      type boolean;
                      description
                        "The value that is placed in the on-link flag ('L-bit')
    field in the Prefix Information option.";
                    }
    
                    leaf preferred-lifetime {
                      type uint32;
                      units "seconds";
                      description
                        "The value that is placed in the Preferred Lifetime in
    the Prefix Information option, in seconds.  The
    designated value of all 1's (0xffffffff) represents
    infinity.
    
    An implementation SHOULD keep this value constant in
    consecutive advertisements except when it is
    explicitly changed in configuration.";
                    }
    
                    leaf autonomous-flag {
                      type boolean;
                      description
                        "The value that is placed in the Autonomous Flag field
    in the Prefix Information option.";
                    }
                  }  // list prefix
                }  // container prefix-list
              }  // container ipv6-router-advertisements
            }  // container ipv6
          }  // list interface
        }  // container interfaces-state
      }  // module ietf-interfaces
    

© 2023 YumaWorks, Inc. All rights reserved.