661 lines
15 KiB
YANG
661 lines
15 KiB
YANG
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.2.1";
|
|
|
|
revision "2018-11-21" {
|
|
description
|
|
"Add OpenConfig module metadata extensions.";
|
|
reference "0.2.1";
|
|
}
|
|
|
|
revision "2018-07-17" {
|
|
description
|
|
"Adds ttl to lldp-neighbor-state";
|
|
reference "0.2.0";
|
|
}
|
|
|
|
revision "2016-05-16" {
|
|
description
|
|
"Initial public revision";
|
|
reference "0.1.0";
|
|
}
|
|
|
|
// OpenConfig specific extensions for module metadata.
|
|
oc-ext:regexp-posix;
|
|
oc-ext:catalog-organization "openconfig";
|
|
oc-ext:origin "openconfig";
|
|
|
|
// 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 ttl {
|
|
type uint16;
|
|
units "seconds";
|
|
description
|
|
"The time-to-live (TTL) is a mandatory TLV which indicates
|
|
how long information from the neighbor should be considered
|
|
valid.";
|
|
}
|
|
|
|
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;
|
|
|
|
|
|
}
|