module ieee802-dot1ab-types {
  yang-version "1.1";
  namespace urn:ieee:std:802.1Q:yang:ieee802-dot1ab-types;
  prefix lldp-types;
  organization
    "IEEE 802.1 Working Group";
  contact
    "WG-URL: http://ieee802.org/1/
    WG-EMail: stds-802-1-l@ieee.org
    Contact: IEEE 802.1 Working Group Chair
    Postal: C/O IEEE 802.1 Working Group
    IEEE Standards Association
         445 Hoes Lane
         Piscataway, NJ 08854
         USA
    
    E-mail: stds-802-1-chairs@ieee.org";
  description
    "Common types used within ieee802-dot1ab-lldp modules. Copyright(C) IEEE
    (2022). All rights reserved. This version of this YANG module is part of
    IEEE Std 802.1ABcu; see the standard itself for full legal notices.";
  revision 2022-03-15 {
    description
      "Published as part of IEEE Std 802.1ABcu.";
    reference
      "IEEE Std 802.1AB-2016";
  }
  typedef man-addr-if-subtype {
    type enumeration {
      enum unknown {
        value 1;
        description
          "Interface is not known.";
      }
      enum port-ref {
        value 2;
        description
          "Interface based on the port-ref MIB object.";
      }
      enum system-port-number {
        value 3;
        description
          "Interface based on the system port number.";
      }
    }
    description
      "Management address interface subtype.";
    reference
      "8.5.9.5 of IEEE Std 802.1AB-2016";
  }
  typedef man-addr-type {
    type string {
      pattern "[0-9A-F]{2}([0-9A-F]{2}){0,30}";
    }
    description
      "Management address associated with the LLDP agent.";
    reference
      "8.5.9.4 of IEEE Std 802.1AB-2016";
  }
  typedef system-capabilities-map {
    type bits {
      bit other {
        position 0;
        description
          "System has capabilities other than those listed below.";
      }
      bit repeater {
        position 1;
        description
          "System has repeater capability.";
      }
      bit bridge {
        position 2;
        description
          "System has bridge capability.";
      }
      bit wlan-access-point {
        position 3;
        description
          "System has WLAN access point capability.";
      }
      bit router {
        position 4;
        description
          "System has router capability.";
      }
      bit telephone {
        position 5;
        description
          "System has telephone capability.";
      }
      bit docsis-cable-device {
        position 6;
        description
          "System has DOCSIS Cable Device capability.";
        reference
          "IETF RFC 4639";
      }
      bit station-only {
        position 7;
        description
          "System has only station capability.";
      }
      bit cvlan-component {
        position 8;
        description
          "System has C-VLAN component functionality.";
      }
      bit svlan-component {
        position 9;
        description
          "System has S-VLAN component functionality.";
      }
      bit two-port-mac-relay {
        position 10;
        description
          "System has Two-port MAC Relay (TPMR) functionality.";
      }
    }
    description
      "This describes system capabilities.";
    reference
      "8.5.8.1 of IEEE Std 802.1AB-2016";
  }
  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";
  }
}
