summaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-lldp.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-lldp.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-lldp.yang650
1 files changed, 650 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-lldp.yang b/src/plugins/yang/openconfig/openconfig-lldp.yang
new file mode 100644
index 0000000..c5381ef
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-lldp.yang
@@ -0,0 +1,650 @@
+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.0";
+
+ 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";
+ }
+
+
+ // 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;
+
+
+}