| module openconfig-lldp { |
| |
| yang-version "1"; |
| |
| // namespace |
| namespace "http://openconfig.net/yang/lldp"; |
| |
| prefix "oc-lldp"; |
| |
| import openconfig-lldp-types { prefix oc-lldp-types; } |
| import openconfig-interfaces { prefix oc-if; } |
| import ietf-yang-types { prefix yang; } |
| import openconfig-extensions { prefix oc-ext; } |
| |
| |
| // meta |
| organization "OpenConfig working group"; |
| |
| contact |
| "OpenConfig working group |
| www.openconfig.net"; |
| |
| description |
| "This module defines configuration and operational state data |
| for the LLDP protocol."; |
| |
| oc-ext:openconfig-version "0.1.0"; |
| |
| revision "2016-05-16" { |
| description |
| "Initial public revision"; |
| reference "0.1.0"; |
| } |
| |
| |
| // identity statements |
| |
| |
| // grouping statements |
| |
| grouping lldp-common-counters { |
| description |
| "Definition of global and per-interface counters"; |
| |
| leaf frame-in { |
| type yang:counter64; |
| description |
| "The number of lldp frames received."; |
| } |
| |
| leaf frame-out { |
| type yang:counter64; |
| description |
| "The number of frames transmitted out."; |
| } |
| |
| leaf frame-error-in { |
| type yang:counter64; |
| description |
| "The number of LLDP frames received with errors."; |
| } |
| |
| leaf frame-discard { |
| type yang:counter64; |
| description |
| "The number of LLDP frames received and discarded."; |
| } |
| |
| leaf tlv-discard { |
| type yang:counter64; |
| description |
| "The number of TLV frames received and discarded."; |
| } |
| |
| leaf tlv-unknown { |
| type yang:counter64; |
| description |
| "The number of frames received with unknown TLV."; |
| } |
| |
| leaf last-clear { |
| type yang:date-and-time; |
| description |
| "Indicates the last time the counters were |
| cleared."; |
| } |
| } |
| |
| grouping lldp-global-counters { |
| description |
| "Definition of global LLDP counters"; |
| |
| uses lldp-common-counters; |
| |
| leaf tlv-accepted { |
| type yang:counter64; |
| description |
| "The number of valid TLVs received."; |
| } |
| |
| leaf entries-aged-out { |
| type yang:counter64; |
| description |
| "The number of entries aged out due to timeout."; |
| } |
| |
| } |
| |
| grouping lldp-interface-counters { |
| description |
| "Definition of per-interface LLDP counters"; |
| |
| uses lldp-common-counters; |
| |
| leaf frame-error-out { |
| type yang:counter64; |
| description |
| "The number of frame transmit errors on the |
| interface."; |
| } |
| } |
| |
| grouping lldp-system-info-config { |
| description |
| "Configuration data for system-level local and remote |
| LLDP information"; |
| |
| leaf system-name { |
| type string { |
| length 0..255; |
| } |
| description |
| "The system name field shall contain an alpha-numeric string |
| that indicates the system's administratively assigned name. |
| The system name should be the system's fully qualified domain |
| name. If implementations support IETF RFC 3418, the sysName |
| object should be used for this field."; |
| } |
| |
| leaf system-description { |
| type string { |
| length 0..255; |
| } |
| description |
| "The system description field shall contain an alpha-numeric |
| string that is the textual description of the network entity. |
| The system description should include the full name and |
| version identification of the system's hardware type, |
| software operating system, and networking software. If |
| implementations support IETF RFC 3418, the sysDescr object |
| should be used for this field."; |
| } |
| |
| leaf chassis-id { |
| type string; |
| description |
| "The Chassis ID is a mandatory TLV which identifies the |
| chassis component of the endpoint identifier associated with |
| the transmitting LLDP agent"; |
| } |
| |
| leaf chassis-id-type { |
| type oc-lldp-types:chassis-id-type; |
| description |
| "This field identifies the format and source of the chassis |
| identifier string. It is an enumerator defined by the |
| LldpChassisIdSubtype object from IEEE 802.1AB MIB."; |
| } |
| } |
| |
| grouping lldp-system-info-state { |
| description |
| "Operational state data reported for the local and remote |
| systems"; |
| |
| } |
| |
| grouping lldp-neighbor-config { |
| description |
| "Configuration data for LLDP neighbors"; |
| |
| } |
| |
| grouping lldp-neighbor-state { |
| description |
| "Operational state data for LLDP neighbors"; |
| |
| leaf id { |
| type string; |
| description |
| "System generated identifier for the neighbor on the |
| interface."; |
| } |
| |
| leaf age { |
| type uint64; |
| units "seconds"; |
| description |
| "Age since discovery"; |
| } |
| |
| leaf last-update { |
| type int64; |
| description |
| "Seconds since last update received."; |
| } |
| |
| leaf port-id { |
| type string; |
| description |
| "The Port ID is a mandatory TLV which identifies the port |
| component of the endpoint identifier associated with the |
| transmitting LLDP agent. If the specified port is an IEEE |
| 802.3 Repeater port, then this TLV is optional."; |
| } |
| |
| leaf port-id-type { |
| type oc-lldp-types:port-id-type; |
| description |
| "This field identifies the format and source of the port |
| identifier string. It is an enumerator defined by the |
| PtopoPortIdType object from RFC2922."; |
| } |
| |
| leaf port-description { |
| type string; |
| description |
| "The binary string containing the actual port identifier for |
| the port which this LLDP PDU was transmitted. The source and |
| format of this field is defined by PtopoPortId from |
| RFC2922."; |
| } |
| |
| leaf management-address { |
| type string; |
| description |
| "The Management Address is a mandatory TLV which identifies a |
| network address associated with the local LLDP agent, which |
| can be used to reach the agent on the port identified in the |
| Port ID TLV."; |
| } |
| |
| leaf management-address-type { |
| type string; |
| description |
| "The enumerated value for the network address type |
| identified in this TLV. This enumeration is defined in the |
| 'Assigned Numbers' RFC [RFC3232] and the |
| ianaAddressFamilyNumbers object."; |
| } |
| } |
| |
| grouping lldp-capabilities-config { |
| description |
| "Configuration data for LLDP capabilities"; |
| } |
| |
| grouping lldp-capabilities-state { |
| description |
| "Operational state data for LLDP capabilities"; |
| |
| leaf name { |
| type identityref { |
| base oc-lldp-types:LLDP_SYSTEM_CAPABILITY; |
| } |
| description |
| "Name of the system capability advertised by the neighbor. |
| Capabilities are represented in a bitmap that defines the |
| primary functions of the system. The capabilities are |
| defined in IEEE 802.1AB."; |
| } |
| |
| leaf enabled { |
| type boolean; |
| description |
| "Indicates whether the corresponding system capability is |
| enabled on the neighbor."; |
| reference |
| "Sec 8.5.8.2 of IEEE 802.1AB-2009"; |
| } |
| } |
| |
| grouping lldp-capabilities-top { |
| description |
| "Top-level grouping for LLDP capabilities"; |
| |
| container capabilities { |
| config false; |
| description |
| "Enclosing container for list of LLDP capabilities"; |
| |
| list capability { |
| key "name"; |
| description |
| "List of LLDP system capabilities advertised by the |
| neighbor"; |
| |
| leaf name { |
| type leafref { |
| path "../state/name"; |
| } |
| description |
| "Reference to capabilities list key"; |
| } |
| |
| container config { |
| description |
| "Configuration data for LLDP capabilities"; |
| |
| uses lldp-capabilities-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data for LLDP capabilities"; |
| |
| uses lldp-capabilities-config; |
| uses lldp-capabilities-state; |
| } |
| } |
| } |
| } |
| |
| grouping lldp-custom-tlv-config { |
| description |
| "Configuration data for custom LLDP TLVs"; |
| } |
| |
| grouping lldp-custom-tlv-state { |
| description |
| "Operational state data for custom LLDP TLVs"; |
| |
| leaf type { |
| type int32; |
| description |
| "The integer value identifying the type of information |
| contained in the value field."; |
| } |
| |
| leaf oui { |
| type string; |
| description |
| "The organizationally unique identifier field shall contain |
| the organization's OUI as defined in Clause 9 of IEEE Std |
| 802. The high-order octet is 0 and the low-order 3 octets |
| are the SMI Network Management Private Enterprise Code of |
| the Vendor in network byte order, as defined in the |
| 'Assigned Numbers' RFC [RFC3232]."; |
| } |
| |
| leaf oui-subtype { |
| type string; |
| description |
| "The organizationally defined subtype field shall contain a |
| unique subtype value assigned by the defining organization."; |
| } |
| |
| // TODO: consider making this string type |
| leaf value { |
| type binary; |
| description |
| "A variable-length octet-string containing the |
| instance-specific information for this TLV."; |
| } |
| } |
| |
| grouping lldp-custom-tlv-top { |
| description |
| "Top-level grouping for custom LLDP TLVs"; |
| |
| container custom-tlvs { |
| config false; |
| description |
| "Enclosing container for list of custom TLVs from a |
| neighbor"; |
| |
| list tlv { |
| key "type oui oui-subtype"; |
| description |
| "List of custom LLDP TLVs from a neighbor"; |
| |
| leaf type { |
| type leafref { |
| path "../state/type"; |
| } |
| description |
| "Reference to type list key"; |
| } |
| |
| leaf oui { |
| type leafref { |
| path "../state/oui"; |
| } |
| description |
| "Reference to oui list key"; |
| } |
| |
| leaf oui-subtype { |
| type leafref { |
| path "../state/oui-subtype"; |
| } |
| description |
| "Reference to oui-subtype list key"; |
| } |
| |
| container config { |
| description |
| "Configuration data "; |
| |
| uses lldp-custom-tlv-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data "; |
| |
| uses lldp-custom-tlv-config; |
| uses lldp-custom-tlv-state; |
| } |
| } |
| } |
| } |
| |
| grouping lldp-neighbor-top { |
| description |
| "Top-level grouping for the LLDP neighbor list"; |
| |
| container neighbors { |
| config false; |
| description |
| "Enclosing container for list of LLDP neighbors on an |
| interface"; |
| |
| list neighbor { |
| key "id"; |
| description |
| "List of LLDP neighbors"; |
| |
| leaf id { |
| type leafref { |
| path "../state/id"; |
| } |
| description |
| " "; |
| } |
| |
| container config { |
| description |
| "Configuration data "; |
| |
| uses lldp-neighbor-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data "; |
| |
| uses lldp-system-info-config; |
| uses lldp-system-info-state; |
| uses lldp-neighbor-config; |
| uses lldp-neighbor-state; |
| } |
| |
| uses lldp-custom-tlv-top; |
| uses lldp-capabilities-top; |
| } |
| } |
| } |
| |
| grouping lldp-interface-config { |
| description |
| "Configuration data for LLDP on each interface"; |
| |
| leaf name { |
| type oc-if:base-interface-ref; |
| description |
| "Reference to the LLDP Ethernet interface"; |
| } |
| |
| leaf enabled { |
| type boolean; |
| default "true"; |
| description |
| "Enable or disable the LLDP protocol on the interface."; |
| } |
| } |
| |
| grouping lldp-interface-state { |
| description |
| "Operational state data for LLDP on each interface"; |
| |
| container counters { |
| description |
| "LLDP counters on each interface"; |
| |
| uses lldp-interface-counters; |
| } |
| } |
| |
| grouping lldp-interface-top { |
| description |
| "Top-level grouping "; |
| |
| container interfaces { |
| description |
| "Enclosing container "; |
| |
| list interface { |
| key "name"; |
| description |
| "List of interfaces on which LLDP is enabled / available"; |
| |
| leaf name { |
| type leafref { |
| path "../config/name"; |
| } |
| description |
| "Reference to the list key"; |
| } |
| |
| container config { |
| description |
| "Configuration data for LLDP on each interface"; |
| |
| uses lldp-interface-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data "; |
| |
| uses lldp-interface-config; |
| uses lldp-interface-state; |
| } |
| |
| uses lldp-neighbor-top; |
| } |
| } |
| } |
| |
| |
| grouping lldp-config { |
| description |
| "Configuration data for global LLDP parameters"; |
| |
| leaf enabled { |
| type boolean; |
| default "true"; |
| description |
| "System level state of the LLDP protocol."; |
| } |
| |
| leaf hello-timer { |
| type uint64; |
| units "seconds"; |
| description |
| "System level hello timer for the LLDP protocol."; |
| } |
| |
| leaf-list suppress-tlv-advertisement { |
| type identityref { |
| base oc-lldp-types:LLDP_TLV; |
| } |
| description |
| "Indicates whether the local system should suppress the |
| advertisement of particular TLVs with the LLDP PDUs that it |
| transmits. Where a TLV type is specified within this list, it |
| should not be included in any LLDP PDU transmitted by the |
| local agent."; |
| } |
| } |
| |
| grouping lldp-state { |
| description |
| "Operational state data for global LLDP parameters"; |
| |
| container counters { |
| description |
| "Global LLDP counters"; |
| |
| uses lldp-global-counters; |
| } |
| } |
| |
| grouping lldp-top { |
| description |
| "Top-level grouping for LLDP model"; |
| |
| container lldp { |
| description |
| "Top-level container for LLDP configuration and state data"; |
| |
| container config { |
| description |
| "Configuration data "; |
| |
| uses lldp-config; |
| uses lldp-system-info-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data "; |
| |
| uses lldp-config; |
| uses lldp-system-info-config; |
| uses lldp-system-info-state; |
| uses lldp-state; |
| } |
| |
| uses lldp-interface-top; |
| } |
| } |
| |
| // data definition statements |
| |
| uses lldp-top; |
| |
| |
| } |