netconfcentral logo

ieee802-dot1ab-lldp@2018-11-11



  module ieee802-dot1ab-lldp {

    yang-version 1.1;

    namespace
      "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp";

    prefix lldp;

    import ieee802-dot1ab-types {
      prefix lldp-types;
    }
    import ietf-routing {
      prefix rt;
    }
    import ietf-yang-types {
      prefix yang;
    }
    import ietf-interfaces {
      prefix if;
    }
    import ieee802-dot1q-bridge {
      prefix dot1q;
    }
    import ieee802-types {
      prefix ieee;
    }
    import iana-if-type {
      prefix ianaift;
    }

    organization "Ericsson AB";

    contact
      "Web URL: https://www.ericsson.com

     Contact: Chin Chen
     E-mail: chin.chen@ericsson.com";

    description
      "Management Information Base module for LLDP configuration,
     statistics, local system data and remote systems data
     components.
    
     This experimental YANG module is an individual contribution, and
     does not represent a formally sanctioned YANG module of IEEE.
     Therefore, this YANG module will change in incompatible ways
     from its current revision to the formally published YANG
     module for IEEE Std 802.1AB-2016.";

    revision "2018-11-11" {
      description
        "Separated out the lldp-types.";
      reference
        "IEEE Std 802.1AB-2016";

    }

    revision "2018-01-22" {
      description
        "Replace augment to bridge with the reference.";
      reference
        "IEEE Std 802.1AB-2016";

    }

    revision "2017-06-26" {
      description
        "Module for IEEE Std 802.1AB-2016";
      reference
        "IEEE Std 802.1AB-2016";

    }


    typedef bridge-ref {
      type leafref {
        path "/dot1q:bridges/dot1q:bridge/dot1q:name";
      }
      description
        "This type is used by data models that need to reference
  		a configured Bridge.";
    }

    typedef man-addr-if-subtype {
      type enumeration {
        enum "unknown" {
          value 1;
          description
            "The subtype 'unknown(1)' represents the case where the
           interface is not known.";
        }
        enum "port-ref" {
          value 2;
          description
            "The subtype 'port-ref(2)' represents interface identifier
           based on the port-ref MIB object.";
        }
        enum "system-port-number" {
          value 3;
          description
            "The subtype 'system-port-number(3)' represents interface
           identifier based on the system port numbering convention.";
        }
      }
      description
        "This is the basis of a particular type of
       interface associated with the management address.";
      reference
        "IEEE Std 802.1AB-2016: 8.5.9.5";

    }

    typedef man-addr-type {
      type binary {
        length "1..31";
      }
      description
        "The value of a management address associated with the LLDP
       agent that may be used to reach higher layer entities to
       assist discovery by network management.
       
       It should be noted that appropriate security credentials,
       such as SNMP engineId, may be required to access the LLDP
       agent using a management address.  These necessary credentials
       should be known by the network management and the objects
       associated with the credentials are not included in the
       LLDP agent.";
      reference
        "IEEE Std 802.1AB-2016: 8.5.9.4";

    }

    typedef system-capabilities-map {
      type bits {
        bit other {
          position 0;
          description
            "This bit indicates that the system has capabilities
           other than those listed below.";
        }
        bit repeater {
          position 1;
          description
            "This bit indicates that the system has repeater
           capability.";
        }
        bit bridge {
          position 2;
          description
            "This bit indicates that the system has bridge
           capability.";
        }
        bit wlan-access-point {
          position 3;
          description
            "This bit indicates that the system has
           WLAN access point capability.";
        }
        bit router {
          position 4;
          description
            "This bit indicates that the system has router
           capability.";
        }
        bit telephone {
          position 5;
          description
            "This bit indicates that the system has telephone
           capability.";
        }
        bit docsis-cable-device {
          position 6;
          description
            "This bit indicates that the system has
           DOCSIS Cable Device capability (IETF RFC 4639 & 2670).";
        }
        bit station-only {
          position 7;
          description
            "This bit indicates that the system has only
           station capability and nothing else.";
        }
        bit cvlan-component {
          position 8;
          description
            "This bit indicates that the system has
           C-VLAN component functionality.";
        }
        bit svlan-component {
          position 9;
          description
            "This bit indicates that the system has
           S-VLAN component functionality.";
        }
        bit two-port-mac-relay {
          position 10;
          description
            "This bit indicates that the system has
           Two-port MAC Relay (TPMR) functionality.";
        }
      }
      description
        "This describes system capabilities.";
      reference
        "IEEE Std 802.1AB-2016: 8.5.8.1";

    }

    typedef port-list {
      type binary {
        length "0..512";
      }
      description
        "Each octet within this value specifies a set of eight ports,
       with the first octet specifying ports 1 through 8, the second
       octet specifying ports 9 through 16, etc.  Within each octet,
       the most significant bit represents the lowest numbered port,
       and the least significant bit represents the highest numbered
       port.  Thus, each port of the system is represented by a
       single bit within the value of this object.  If that bit has
       a value of '1' then that port is included in the set of ports;
       the port is not included if its bit has a value of '0'.";
      reference
        "IETF RFC 2674 section 5";

    }

    typedef dest-address-index-type {
      type uint32 {
        range "1..4096";
      }
      description
        "An index value used as the key to the list of destination
       MAC addresses used both as the destination addresses on
       transmitted LLDPDUs and on received LLDPDUs. This index value
       is also used as a secondary key in lists that use interface
       as a primary key.";
    }

    grouping lldp-cfg {
      description
        "LLDP basic configuration group.";
      leaf message-fast-tx {
        type uint32 {
          range "1..3600";
        }
        default "1";
        description
          "This node indicates the time interval in timer
         ticks between transmissions during fast transmission
         periods(i.e., txFast is non-zero). 
         
         The recommended default value of msgFastTx is 1;
         this value can be changed by management to any 
         value in the range 1 through 3600.";
        reference
          "IEEE Std 802.1AB-2016: 9.2.5.5";

      }

      leaf message-tx-hold-multiplier {
        type uint32 {
          range "2..10";
        }
        default "4";
        description
          "This node is used, as a multiplier of msg-tx-interval, 
         to determine the value of txTTL that is carried in LLDP 
         frames transmitted by the LLDP agent. 

         The recommended default value of msgTxHold is 4; 
         this value can be changed by management to any value in
         the range 2 through 10.";
        reference
          "IEEE Std 802.1AB-2016: 9.2.5.6";

      }

      leaf message-tx-interval {
        type uint32 {
          range "1..3600";
        }
        units "second";
        default "30";
        description
          "This node indicates the time interval in timer ticks
         between transmissions during normal transmission periods
         (i.e., txFast is zero). 

         The recommended default value for msgTxInterval is 30 s; 
         this value can be changed by management to any value in
         the range 1 through 3600.";
        reference
          "IEEE Std 802.1AB-2016: 9.2.5.7";

      }

      leaf reinit-delay {
        type uint32 {
          range "1..10";
        }
        units "second";
        default "2";
        description
          "The reinit-delay indicates the amount of delay (in units of
         seconds) from when admin-status becomes 'disabled'
         until re-initialization is attempted.

         The recommended default value for reinit-delay is 2 s.";
        reference
          "IEEE Std 802.1AB-2016: 9.2.5.10";

      }

      leaf tx-credit-max {
        type uint32 {
          range "1..10";
        }
        default "5";
        description
          "The maximum number of consecutive LLDPDUs that can be 
         transmitted at any time.

         The recommended default value is 5;
         this value can be changed by management to any value
         in the range 1 through 10.";
        reference
          "IEEE Std 802.1AB-2016: 9.2.5.17";

      }

      leaf tx-fast-init {
        type uint32 {
          range "1..8";
        }
        default "4";
        description
          "This tx-fast-init is used as the initial value for the 
         fast transmitting LLDPPDU. This value determines the 
         number of LLDPDUs that are transmitted during a fast
         transmission period.

         The recommended default value is 4;
         this value can be changed by management to any value in
         the range 1 through 8.";
        reference
          "IEEE Std 802.1AB-2016: 9.2.5.19";

      }

      leaf notification-interval {
        type uint32 {
          range "1..3600";
        }
        units "second";
        default "30";
        description
          "This notification-interval controls the transmission 
         of LLDP notifications.

         If notification transmission is enabled for particular ports,
         the suggested default throttling period is 30 seconds.

         The value of this object must be restored from non-volatile
         storage after a re-initialization of the management system.";
        reference
          "IEEE Std 802.1AB-2016: 9.2.5.7";

      }
    }  // grouping lldp-cfg

    container lldp {
      description
        "Link Layer Discovery Protocol configuration and
  		 operational information.";
      leaf bridge {
        type bridge-ref;
        description
          "The reference to the IEEE 802.1Q Bridge associated with
             the LLDP objects.";
      }

      uses lldp-cfg;

      container remote-statistics {
        config false;
        description
          "LLDP remote operational statistics data.";
        leaf last-change-time {
          type yang:timestamp;
          description
            "The value of sysUpTime object (defined in IETF RFC 3418)
           at the time an entry is created, modified, or deleted in the
           in tables associated with the remote-systems-data objects
           and all LLDP extension objects associated with remote systems.
  
           An NMS can use this object to reduce polling of the
           remote-systems-data objects.";
        }

        leaf remote-inserts {
          type yang:zero-based-counter32;
          units "table entries";
          description
            "The number of times the complete set of information
           advertised by a particular MSAP has been inserted into tables
           contained in remote-systems-data and lldpExtensions objects.
  
           The complete set of information received from a particular
           MSAP should be inserted into related tables.  If partial
           information cannot be inserted for a reason such as lack
           of resources, all of the complete set of information should
           be removed.
  
           This counter should be incremented only once after the
           complete set of information is successfully recorded
           in all related tables.  Any failures during inserting
           information set which result in deletion of previously
           inserted information should not trigger any changes in
           inserts since the insert is not completed
           yet or or in deletes, since the deletion
           would only be a partial deletion. If the failure was the
           result of lack of resources, the drops
           counter should be incremented once.";
        }

        leaf remote-deletes {
          type yang:zero-based-counter32;
          units "table entries";
          description
            "The number of times the complete set of information
           advertised by a particular MSAP has been deleted from
           tables contained in remote-systems-data and lldpExtensions
           objects.
  
           This counter should be incremented only once when the
           complete set of information is completely deleted from all
           related tables.  Partial deletions, such as deletion of
           rows associated with a particular MSAP from some tables,
           but not from all tables are not allowed, thus should not
           change the value of this counter.";
        }

        leaf remote-drops {
          type yang:zero-based-counter32;
          units "table entries";
          description
            "The number of times the complete set of information
           advertised by a particular MSAP could not be entered into
           tables contained in remote-systems-data and lldpExtensions
           objects because of insufficient resources.";
        }

        leaf remote-ageouts {
          type yang:zero-based-counter32;
          description
            "The number of times the complete set of information
           advertised by a particular MSAP has been deleted from tables
           contained in remote-systems-data and lldpExtensions objects
           because the information timeliness interval has expired.
  
           This counter should be incremented only once when the complete
           set of information is completely invalidated (aged out)
           from all related tables.  Partial aging, similar to deletion
           case, is not allowed, and thus, should not change the value
           of this counter.";
        }
      }  // container remote-statistics

      container local-system-data {
        config false;
        description
          "LLDP local system operational data.";
        leaf chassis-id-subtype {
          type lldp-types:chassis-id-subtype-type;
          description
            "The type of encoding used to identify the chassis
           associated with the local system.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.2.2";

        }

        leaf chassis-id {
          type lldp-types:chassis-id-type;
          description
            "The string value used to identify the chassis component
           associated with the local system.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.2.3";

        }

        leaf system-name {
          type string {
            length "0..255";
          }
          description
            "The string value used to identify the system name of the
           local system.  If the local agent supports IETF RFC 3418,
           system-name object should have the same value of sys-name
           object.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.6.2";

        }

        leaf system-description {
          type string {
            length "0..255";
          }
          description
            "The string value used to identify the system description
          of the local system.  If the local agent supports IETF RFC 3418,
          system-name object should have the same value of sys-desc
          object.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.7.2";

        }

        leaf system-capabilities-supported {
          type system-capabilities-map;
          description
            "The bitmap value used to identify which system capabilities
           are supported on the local system.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.8.1";

        }

        leaf system-capabilities-enabled {
          type system-capabilities-map;
          description
            "The bitmap value used to identify which system capabilities
           are enabled on the local system.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.8.2";

        }
      }  // container local-system-data

      list port {
        key "name dest-mac-address";
        description
          "LLDP configuration information for a particular port.
  
         This configuration parameter controls the transmission and
         the reception of LLDP frames on those ports whose rows are
         created in this table.";
        leaf name {
          type if:interface-ref;
          must
            "deref(.)/../type = 'ianaift:ethernetCsmacd'"
              + " or deref(.)/../type = 'ianaift:ieee8023adLag'" {
            error-message
              "The LLDP is only configured on Link Aggreagation
             and Ethernet Port.";
          }
          description
            "The port name used to identify the port component
           (contained in the local chassis with the LLDP agent)
           associated with this entry.";
        }

        leaf dest-mac-address {
          type ieee:mac-address;
          description
            "The dest-mac-address specifies the destination MAC
           addresses.";
        }

        leaf admin-status {
          type enumeration {
            enum "tx-only" {
              value 1;
              description
                "If the associated admin-status object has a
               value of 'tx-only(1)', then LLDP agent will transmit LLDP
               frames on this port and it will not store any information
               about the remote systems connected.";
            }
            enum "rx-only" {
              value 2;
              description
                "If the associated admin-status object has a
               value of 'rx-only(2)', then the LLDP agent will receive,
               but it will not transmit LLDP frames on this port.";
            }
            enum "tx-and-rx" {
              value 3;
              description
                "If the associated admin-status object has a
               value of 'tx-and-rx(3)', then the LLDP agent will transmit
               and receive LLDP frames on this port.";
            }
            enum "disabled" {
              value 4;
              description
                "If the associated admin-status object has a
               value of 'disabled(4)', then LLDP agent will not transmit or
               receive LLDP frames on this port.  If there is remote systems
               information which is received on this port and stored in
               other tables, before the port's admin-status
               becomes disabled, then the information will naturally age out.";
            }
          }
          default "tx-and-rx";
          description
            "The administratively desired status of the local LLDP agent.";
          reference
            "IEEE Std 802.1AB-2016: 9.2.5.1";

        }

        leaf notification-enable {
          type boolean;
          default "false";
          description
            "The notification-enable controls, on a per
           port basis,  whether or not notifications from the agent
           are enabled. The value true(1) means that notifications are
           enabled; the value false(2) means that they are not.";
        }

        leaf tlvs-tx-enable {
          type bits {
            bit port-desc {
              position 0;
              description
                "The bit 'port-desc(0)' indicates that LLDP agent should
               transmit 'Port Description tlv'.";
            }
            bit sys-name {
              position 1;
              description
                "The bit 'sys-name(1)' indicates that LLDP agent should transmit
               'System Name tlv'.";
            }
            bit sys-desc {
              position 2;
              description
                "The bit 'sys-desc(2)' indicates that LLDP agent should transmit
               'System Description tlv'.";
            }
            bit sys-cap {
              position 3;
              description
                "The bit 'sys-cap(3)' indicates that LLDP agent should transmit
               'System Capabilities tlv'.";
            }
          }
          description
            "The tlvs-tx-enable, defined as a bitmap,
          includes the basic set of LLDP tlvs whose transmission is
          allowed on the local LLDP agent by the network management.
          Each bit in the bitmap corresponds to a tlv type associated
          with a specific optional tlv.
  
          It should be noted that the organizationally-specific tlvs
          are excluded from the lldptlvsTxEnable bitmap.
  
          LLDP Organization Specific Information Extension MIBs should
          have similar configuration object to control transmission
          of their organizationally defined tlvs.
  
          There is no bit reserved for the management address tlv type
          since transmission of management address tlvs are controlled
          by another object, man-addr-type.
  
          The default value for tlvs-tx-enable object is
          empty set, which means no enumerated values are set.
  
          The value of this object must be restored from non-volatile
          storage after a re-initialization of the management system.";
          reference
            "IEEE Std 802.1AB-2016 9.1.2.1";

        }

        uses lldp-cfg;

        list management-address-tx-port {
          key "address-subtype man-address";
          description
            "LLDP configuration information that specifies the set
           of ports (represented as a PortList) on which the local
           system management address instance will be transmitted.
      
           This configuration object augments the local-management-address,
           therefore it is only present along with the management
           address instance contained in the associated
           local-management-address entry.
      
           Each active man-address must be restored from
           non-volatile and re-created (along with the corresponding
           local-management-address) after a re-initialization of the
           management system.";
          leaf address-subtype {
            type identityref {
              base rt:address-family;
            }
            description
              "The management address subtype field shall contain an
             integer value indicating the type of address.";
            reference
              "IEEE Std 802.1AB-2016 8.5.9.3";

          }

          leaf man-address {
            type man-addr-type;
            description
              "The management address field shall contain an octet string
             indicating the particular management address associated
             with this TLV.";
            reference
              "IEEE Std 802.1AB-2016 8.5.9.4";

          }

          leaf tx-enable {
            type boolean;
            default "false";
            description
              "Specify to enable transmission of system
             management address instance on a particular port.";
            reference
              "IEEE Std 802.1AB-2016 9.1.2.1";

          }

          leaf addr-len {
            type uint32;
            config false;
            description
              "The total length of the management address subtype and the
             management address fields in LLDPDUs transmitted by the
             local LLDP agent.
        
             The management address length field is needed so that the
             receiving systems that do not implement SNMP will not be
             required to implement an iana family numbers/address length
             equivalency table in order to decode the management adress.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.9.2";

          }

          leaf if-subtype {
            type man-addr-if-subtype;
            config false;
            description
              "The enumeration value that identifies the interface numbering
             method used for defining the interface number, associated
             with the local system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.9.5";

          }

          leaf if-id {
            type uint32;
            config false;
            description
              "The integer value used to identify the interface number
             regarding the management address component associated with
             the local system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.9.6";

          }
        }  // list management-address-tx-port

        leaf port-id-subtype {
          type lldp-types:port-id-subtype-type;
          config false;
          description
            "The type of port identifier encoding used in the associated
           'port-id' object.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.3.2";

        }

        leaf port-id {
          type lldp-types:port-id-type;
          config false;
          description
            "The string value used to identify the port component
           associated with a given port in the local system.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.3.3";

        }

        leaf port-desc {
          type string {
            length "0..255";
          }
          config false;
          description
            "The string value used to identify the 802 LAN station's port
           description associated with the local system.  If the local
           agent supports IETF RFC 2863, port-desc object should
           have the same value of ifDescr object.";
          reference
            "IEEE Std 802.1AB-2016: 8.5.5.2";

        }

        container tx-statistics {
          config false;
          description
            "LLDP frame transmission statistics for a particular port.  
           The port must be contained in the same chassis as the
           LLDP agent.
  
           All counter values in a particular entry shall be
           maintained on a continuing basis and shall not be deleted
           upon expiration of rxInfoTTL timing counters in the LLDP
           remote systems MIB of the receipt of a shutdown frame from
           a remote LLDP agent.
  
           All statistical counters associated with a particular
           port on the local LLDP agent become frozen whenever the
           adminStatus is disabled for the same port.";
          leaf total-frames {
            type yang:counter32;
            description
              "A count of all LLDP frames transmitted through the port.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.6.5";

          }

          leaf total-length-errors {
            type yang:counter32;
            description
              "A count of all LLDP length errors detected when constructing
            LLPDU frames for transmission through the port.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.7.2";

          }
        }  // container tx-statistics

        container rx-statistics {
          config false;
          description
            "LLDP frame reception statistics for a particular port.
           The port must be contained in the same chassis as the
           LLDP agent.
  
           All counter values in a particular entry shall be
           maintained on a continuing basis and shall not be deleted
           upon expiration of rxInfoTTL timing counters in the LLDP
           remote systems MIB of the receipt of a shutdown frame from
           a remote LLDP agent.
  
           All statistical counters associated with a particular
           port on the local LLDP agent become frozen whenever the
           adminStatus is disabled for the same port.";
          leaf total-ageouts {
            type yang:zero-based-counter32;
            description
              "A count of the times that a neighbor’s information
             is deleted from the LLDP remote systems MIB because
             of rxInfoTTL timer expiration.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.6.1";

          }

          leaf total-discarded-frames {
            type yang:counter32;
            description
              "A count of all LLDPDUs received and then discarded.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.6.2";

          }

          leaf error-frames {
            type yang:counter32;
            description
              "A count of all LLDPDUs received at the port with one or more
             detectable errors.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.6.3";

          }

          leaf total-frames {
            type yang:counter32;
            description
              "A count of all LLDP frames received at the port.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.6.4";

          }

          leaf total-discarded-tlvs {
            type yang:counter32;
            description
              "A count of all TLVs received at the port and discarded for any
             reason.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.6.5";

          }

          leaf total-unrecognized-tlvs {
            type yang:counter32;
            description
              "This counter provides a count of all TLVs not recognized by
             the receiving LLDP local agent.";
            reference
              "IEEE Std 802.1AB-2016: 9.2.6.6";

          }
        }  // container rx-statistics

        list remote-systems-data {
          key "time-mark remote-index";
          config false;
          description
            "Information about a particular physical network connection.
           Entries may be created and deleted in this table by the agent,
           if a physical topology discovery process is active.";
          leaf time-mark {
            type yang:timeticks;
            description
              "A TimeFilter for this entry.  See the TimeFilter textual
             convention in IETF RFC 2021 and 
             http://www.ietf.org/IESG/Implementations/RFC2021-Implementation.txt
             to see how TimeFilter works.";
            reference
              "IETF RFC 2021 section 6";

          }

          leaf remote-index {
            type uint32 {
              range "1..2147483647";
            }
            description
              "This object represents an arbitrary local integer value used
             by this agent to identify a particular connection instance,
             unique only for the indicated remote system.
            
             An agent is encouraged to assign monotonically increasing
             index values to new entries, starting with one, after each
             reboot.  It is considered unlikely that the index
             will wrap between reboots.";
          }

          leaf chassis-id-subtype {
            type lldp-types:chassis-id-subtype-type;
            description
              "The type of encoding used to identify the chassis associated
             with the remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.2.2";

          }

          leaf chassis-id {
            type lldp-types:chassis-id-type;
            description
              "The string value used to identify the chassis component
             associated with the remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.2.3";

          }

          leaf port-id-subtype {
            type lldp-types:port-id-subtype-type;
            description
              "The type of port identifier encoding used in the associated
            'port-id' object.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.3.2";

          }

          leaf port-id {
            type lldp-types:port-id-type;
            description
              "The string value used to identify the port component
             associated with the remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.3.3";

          }

          leaf port-desc {
            type string {
              length "0..255";
            }
            description
              "The string value used to identify the description of
             the given port associated with the remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.5.2";

          }

          leaf system-name {
            type string {
              length "0..255";
            }
            description
              "The string value used to identify the system name of the
             remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.6.2";

          }

          leaf system-description {
            type string {
              length "0..255";
            }
            description
              "The string value used to identify the system description
             of the remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.7.2";

          }

          leaf system-capabilities-supported {
            type system-capabilities-map;
            description
              "The bitmap value used to identify which system 
              capabilities are supported on the remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.8.1";

          }

          leaf system-capabilities-enabled {
            type system-capabilities-map;
            description
              "The bitmap value used to identify which system capabilities
             are enabled on the remote system.";
            reference
              "IEEE Std 802.1AB-2016: 8.5.8.2";

          }

          list management-address {
            key "address-subtype address";
            description
              "Management address information about a particular chassis
             component.  There may be multiple management addresses
             configured on the remote system identified by a particular
             index whose information is received on
             port-num of the local system.  Each management
             address should have distinct 'management address
             type' (subtype) and 'management address'
            (address.)
        
             Entries may be created and deleted in this table by the
             agent.";
            leaf address-subtype {
              type identityref {
                base rt:address-family;
              }
              description
                "The type of management address identifier encoding used in
               the associated 'lldpRemManagmentAddr' object.";
              reference
                "IEEE Std 802.1AB-2016: 8.5.9.3";

            }

            leaf address {
              type man-addr-type;
              description
                "The string value used to identify the management address
               component associated with the remote system.  The purpose
               of this address is to contact the management entity.";
              reference
                "IEEE Std 802.1AB-2016: 8.5.9.4";

            }

            leaf if-subtype {
              type man-addr-if-subtype;
              description
                "The enumeration value that identifies the interface numbering
               method used for defining the interface number, associated
               with the remote system.";
              reference
                "IEEE Std 802.1AB-2016: 8.5.9.5";

            }

            leaf if-id {
              type uint32;
              description
                "The integer value used to identify the interface number
               regarding the management address component associated with
               the remote system.";
              reference
                "IEEE Std 802.1AB-2016: 8.5.9.6";

            }
          }  // list management-address

          list remote-unknown-tlv {
            key "tlv-type";
            description
              "Information about an unrecognized tlv received from a
             physical network connection.  Entries may be created and
             deleted in this table by the agent, if a physical topology
             discovery process is active.";
            leaf tlv-type {
              type uint32 {
                range "9..126";
              }
              description
                "This object represents the value extracted from the type
               field of the tlv.";
              reference
                "IEEE Std 802.1AB-2016: 9.2.7.7.1";

            }

            leaf tlv-info {
              type binary {
                length "0..511";
              }
              description
                "This object represents the value extracted from the value
               field of the tlv.";
              reference
                "IEEE Std 802.1AB-2016: 9.2.7.7.1";

            }
          }  // list remote-unknown-tlv

          list remote-org-defined-info {
            key "info-identifier info-subtype info-index";
            description
              "Information about the unrecognized organizationally
             defined information advertised by the remote system.
             The time-mark, port-num, index,
             info-identifier, info-subtype, and
             info-index are indexes to this table.  If there is
             an remote-org-defined-info associated with a particular remote
             system identified by the port-num and index,
             there must be an remote associated with the same
             instance (i.e, using same indexes.)  When the remote
             for the same index is removed from the lldpRemTable, the
             associated remote-org-defined-info should be removed from
             the remote-org-defined-infoTable.
            
             Entries may be created and deleted in this table by the
             agent.";
            leaf info-identifier {
              type binary {
                length "3";
              }
              description
                "The Organizationally Unique Identifier (OUI), as defined
               in IEEE std 802-2001, is a 24 bit (three octets) globally
               unique assigned number referenced by various standards,
               of the information received from the remote system.";
              reference
                "IEEE Std 802.1AB-2016: 8.6.1.3";

            }

            leaf info-subtype {
              type uint32 {
                range "1..255";
              }
              description
                "The integer value used to identify the subtype of the
               organizationally defined information received from the
               remote system.
        
               The subtype value is required to identify different instances
               of organizationally defined information that could not be
               retrieved without a unique identifier that indicates the
               particular type of information contained in the information
               string.";
              reference
                "IEEE Std 802.1AB-2016: 8.6.1.4";

            }

            leaf info-index {
              type uint32 {
                range "1..2147483647";
              }
              description
                "This object represents an arbitrary local integer value
               used by this agent to identify a particular unrecognized
               organizationally defined information instance, unique only
               for the info-identifier and info-subtype
               from the same remote system.
        
               An agent is encouraged to assign monotonically increasing
               index values to new entries, starting with one, after each
               reboot.  It is considered unlikely that the
               info-index will wrap between reboots.";
            }

            leaf remote-info {
              type binary {
                length "0..507";
              }
              description
                "The string value used to identify the organizationally
               defined information of the remote system.  The encoding for
               this object should be as defined for SnmpAdminString TC.";
              reference
                "IEEE Std 802.1AB-2016: 8.6.1.5";

            }
          }  // list remote-org-defined-info
        }  // list remote-systems-data
      }  // list port
    }  // container lldp

    notification remote-table-change {
      description
        "A rem-table-change notification is sent when the value
       of remote-table-last-change-time changes.  It can be
       utilized by an NMS to trigger LLDP remote systems table
       maintenance polls.

       Note that transmission of remote-table-change
       notifications are throttled by the agent, as specified by the
      'notification-interval' object.";
      leaf remote-insert {
        type leafref {
          path "/lldp:lldp/lldp:remote-statistics/lldp:remote-inserts";
        }
        description
          "The number of times the complete set of information
         advertised by a particular MSAP has been inserted into tables
         contained in remote-systems-data and lldpExtensions objects.

         The complete set of information received from a particular
         MSAP should be inserted into related tables. If partial
         information cannot be inserted for a reason such as lack
         of resources, all of the complete set of information should
         be removed.

         This counter should be incremented only once after the
         complete set of information is successfully recorded
         in all related tables.  Any failures during inserting
         information set which result in deletion of previously
         inserted information should not trigger any changes in
         inserts since the insert is not completed
         yet or or in deletes, since the deletion
         would only be a partial deletion. If the failure was the
         result of lack of resources, the drops
         counter should be incremented once.";
      }

      leaf remote-delete {
        type leafref {
          path "/lldp:lldp/lldp:remote-statistics/lldp:remote-deletes";
        }
        description
          "The number of times the complete set of information
        advertised by a particular MSAP has been deleted from
        tables contained in remote-systems-data and lldpExtensions
        objects.

        This counter should be incremented only once when the
        complete set of information is completely deleted from all
        related tables.  Partial deletions, such as deletion of
        rows associated with a particular MSAP from some tables,
        but not from all tables are not allowed, thus should not
        change the value of this counter.";
      }

      leaf remote-drops {
        type leafref {
          path "/lldp:lldp/lldp:remote-statistics/lldp:remote-drops";
        }
        description
          "The number of times the complete set of information
         advertised by a particular MSAP could not be entered into
         tables contained in remote-systems-data and lldpExtensions
         objects because of insufficient resources.";
      }

      leaf remote-ageouts {
        type leafref {
          path "/lldp:lldp/lldp:remote-statistics/lldp:remote-ageouts";
        }
        description
          "The number of times the complete set of information
         advertised by a particular MSAP has been deleted from tables
         contained in remote-systems-data and lldpExtensions objects
         because the information timeliness interval has expired.

         This counter should be incremented only once when the complete
         set of information is completely invalidated (aged out)
         from all related tables.  Partial aging, similar to deletion
         case, is not allowed, and thus, should not change the value
         of this counter.";
      }
    }  // notification remote-table-change
  }  // module ieee802-dot1ab-lldp