aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-if-ethernet.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-if-ethernet.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-if-ethernet.yang428
1 files changed, 428 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-if-ethernet.yang b/src/plugins/yang/openconfig/openconfig-if-ethernet.yang
new file mode 100644
index 0000000..cd6b526
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-if-ethernet.yang
@@ -0,0 +1,428 @@
+module openconfig-if-ethernet {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/interfaces/ethernet";
+
+ prefix "oc-eth";
+
+ // import some basic types
+ import openconfig-interfaces { prefix oc-if; }
+ import iana-if-type { prefix ift; }
+ import openconfig-yang-types { prefix oc-yang; }
+ import openconfig-extensions { prefix oc-ext; }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ netopenconfig@googlegroups.com";
+
+ description
+ "Model for managing Ethernet interfaces -- augments the OpenConfig
+ model for interface configuration and state.";
+
+ oc-ext:openconfig-version "2.6.1";
+
+ revision "2018-09-04" {
+ description
+ "Remove in-crc-align-errors as it is a duplicate of
+ in-crc-errors";
+ reference "2.6.1";
+ }
+
+ revision "2018-08-28" {
+ description
+ "Add Ethernet counter in-block-errors";
+ reference "2.6.0";
+ }
+
+ revision "2018-07-02" {
+ description
+ "Add new ethernet counters of in-undersize-frames,
+ in-crc-align-errors and the distribution container";
+ reference "2.5.0";
+ }
+
+ revision "2018-04-10" {
+ description
+ "Add identities for 2.5 and 5 Gbps.";
+ reference "2.4.0";
+ }
+
+ revision "2018-01-05" {
+ description
+ "Add logical loopback to interface.";
+ reference "2.3.0";
+ }
+
+ revision "2017-12-21" {
+ description
+ "Added IPv6 router advertisement configuration.";
+ reference "2.1.0";
+ }
+
+ revision "2017-07-14" {
+ description
+ "Added Ethernet/IP state data; Add dhcp-client;
+ migrate to OpenConfig types modules; Removed or
+ renamed opstate values";
+ reference "2.0.0";
+ }
+
+ revision "2016-12-22" {
+ description
+ "Fixes to Ethernet interfaces model";
+ reference "1.1.0";
+ }
+
+
+ // identity statements
+
+ identity ETHERNET_SPEED {
+ description "base type to specify available Ethernet link
+ speeds";
+ }
+
+ identity SPEED_10MB {
+ base ETHERNET_SPEED;
+ description "10 Mbps Ethernet";
+ }
+
+ identity SPEED_100MB {
+ base ETHERNET_SPEED;
+ description "100 Mbps Ethernet";
+ }
+
+ identity SPEED_1GB {
+ base ETHERNET_SPEED;
+ description "1 Gbps Ethernet";
+ }
+
+ identity SPEED_2500MB {
+ base ETHERNET_SPEED;
+ description "2.5 Gbps Ethernet";
+ }
+
+ identity SPEED_5GB {
+ base ETHERNET_SPEED;
+ description "5 Gbps Ethernet";
+ }
+
+ identity SPEED_10GB {
+ base ETHERNET_SPEED;
+ description "10 Gbps Ethernet";
+ }
+
+ identity SPEED_25GB {
+ base ETHERNET_SPEED;
+ description "25 Gbps Ethernet";
+ }
+
+ identity SPEED_40GB {
+ base ETHERNET_SPEED;
+ description "40 Gbps Ethernet";
+ }
+
+ identity SPEED_50GB {
+ base ETHERNET_SPEED;
+ description "50 Gbps Ethernet";
+ }
+
+ identity SPEED_100GB {
+ base ETHERNET_SPEED;
+ description "100 Gbps Ethernet";
+ }
+
+ identity SPEED_UNKNOWN {
+ base ETHERNET_SPEED;
+ description
+ "Interface speed is unknown. Systems may report
+ speed UNKNOWN when an interface is down or unpopuplated (e.g.,
+ pluggable not present).";
+ }
+
+ // typedef statements
+
+
+ // grouping statements
+
+ grouping ethernet-interface-config {
+ description "Configuration items for Ethernet interfaces";
+
+ leaf mac-address {
+ type oc-yang:mac-address;
+ description
+ "Assigns a MAC address to the Ethernet interface. If not
+ specified, the corresponding operational state leaf is
+ expected to show the system-assigned MAC address.";
+ }
+
+ leaf auto-negotiate {
+ type boolean;
+ default true;
+ description
+ "Set to TRUE to request the interface to auto-negotiate
+ transmission parameters with its peer interface. When
+ set to FALSE, the transmission parameters are specified
+ manually.";
+ reference
+ "IEEE 802.3-2012 auto-negotiation transmission parameters";
+ }
+
+ leaf duplex-mode {
+ type enumeration {
+ enum FULL {
+ description "Full duplex mode";
+ }
+ enum HALF {
+ description "Half duplex mode";
+ }
+ }
+ description
+ "When auto-negotiate is TRUE, this optionally sets the
+ duplex mode that will be advertised to the peer. If
+ unspecified, the interface should negotiate the duplex mode
+ directly (typically full-duplex). When auto-negotiate is
+ FALSE, this sets the duplex mode on the interface directly.";
+ }
+
+ leaf port-speed {
+ type identityref {
+ base ETHERNET_SPEED;
+ }
+ description
+ "When auto-negotiate is TRUE, this optionally sets the
+ port-speed mode that will be advertised to the peer for
+ negotiation. If unspecified, it is expected that the
+ interface will select the highest speed available based on
+ negotiation. When auto-negotiate is set to FALSE, sets the
+ link speed to a fixed value -- supported values are defined
+ by ETHERNET_SPEED identities";
+ }
+
+ leaf enable-flow-control {
+ type boolean;
+ default false;
+ description
+ "Enable or disable flow control for this interface.
+ Ethernet flow control is a mechanism by which a receiver
+ may send PAUSE frames to a sender to stop transmission for
+ a specified time.
+
+ This setting should override auto-negotiated flow control
+ settings. If left unspecified, and auto-negotiate is TRUE,
+ flow control mode is negotiated with the peer interface.";
+ reference
+ "IEEE 802.3x";
+ }
+ }
+
+ grouping ethernet-interface-state-counters {
+ description
+ "Ethernet-specific counters and statistics";
+
+ // ingress counters
+
+ leaf in-mac-control-frames {
+ type oc-yang:counter64;
+ description
+ "MAC layer control frames received on the interface";
+ }
+
+ leaf in-mac-pause-frames {
+ type oc-yang:counter64;
+ description
+ "MAC layer PAUSE frames received on the interface";
+ }
+
+ leaf in-oversize-frames {
+ type oc-yang:counter64;
+ description
+ "The total number of frames received that were
+ longer than 1518 octets (excluding framing bits,
+ but including FCS octets) and were otherwise
+ well formed.";
+ }
+
+ leaf in-undersize-frames {
+ type oc-yang:counter64;
+ description
+ "The total number of frames received that were
+ less than 64 octets long (excluding framing bits,
+ but including FCS octets) and were otherwise well
+ formed.";
+ reference
+ "RFC 2819: Remote Network Monitoring MIB -
+ etherStatsUndersizePkts";
+ }
+
+ leaf in-jabber-frames {
+ type oc-yang:counter64;
+ description
+ "Number of jabber frames received on the
+ interface. Jabber frames are typically defined as oversize
+ frames which also have a bad CRC. Implementations may use
+ slightly different definitions of what constitutes a jabber
+ frame. Often indicative of a NIC hardware problem.";
+ }
+
+ leaf in-fragment-frames {
+ type oc-yang:counter64;
+ description
+ "The total number of frames received that were less than
+ 64 octets in length (excluding framing bits but including
+ FCS octets) and had either a bad Frame Check Sequence
+ (FCS) with an integral number of octets (FCS Error) or a
+ bad FCS with a non-integral number of octets (Alignment
+ Error).";
+ }
+
+ leaf in-8021q-frames {
+ type oc-yang:counter64;
+ description
+ "Number of 802.1q tagged frames received on the interface";
+ }
+
+ leaf in-crc-errors {
+ type oc-yang:counter64;
+ description
+ "The total number of frames received that
+ had a length (excluding framing bits, but
+ including FCS octets) of between 64 and 1518
+ octets, inclusive, but had either a bad
+ Frame Check Sequence (FCS) with an integral
+ number of octets (FCS Error) or a bad FCS with
+ a non-integral number of octets (Alignment Error)";
+ reference
+ "RFC 2819: Remote Network Monitoring MIB -
+ etherStatsCRCAlignErrors";
+ }
+
+ leaf in-block-errors {
+ type oc-yang:counter64;
+ description
+ "The number of received errored blocks. Error detection codes
+ are capable of detecting whether one or more errors have
+ occurred in a given sequence of bits - the block. It is
+ normally not possible to determine the exact number of errored
+ bits within the block";
+ }
+
+ // egress counters
+
+ leaf out-mac-control-frames {
+ type oc-yang:counter64;
+ description
+ "MAC layer control frames sent on the interface";
+ }
+
+ leaf out-mac-pause-frames {
+ type oc-yang:counter64;
+ description
+ "MAC layer PAUSE frames sent on the interface";
+ }
+
+ leaf out-8021q-frames {
+ type oc-yang:counter64;
+ description
+ "Number of 802.1q tagged frames sent on the interface";
+ }
+ }
+
+ grouping ethernet-interface-state {
+ description
+ "Grouping for defining Ethernet-specific operational state";
+
+ leaf hw-mac-address {
+ type oc-yang:mac-address;
+ description
+ "Represenets the 'burned-in', or system-assigned, MAC
+ address for the Ethernet interface.";
+ }
+
+ leaf negotiated-duplex-mode {
+ type enumeration {
+ enum FULL {
+ description "Full duplex mode";
+ }
+ enum HALF {
+ description "Half duplex mode";
+ }
+ }
+ description
+ "When auto-negotiate is set to TRUE, and the interface has
+ completed auto-negotiation with the remote peer, this value
+ shows the duplex mode that has been negotiated.";
+ }
+
+ leaf negotiated-port-speed {
+ type identityref {
+ base ETHERNET_SPEED;
+ }
+ description
+ "When auto-negotiate is set to TRUE, and the interface has
+ completed auto-negotiation with the remote peer, this value
+ shows the interface speed that has been negotiated.";
+ }
+
+ container counters {
+ description "Ethernet interface counters";
+
+ uses ethernet-interface-state-counters;
+
+ }
+
+ }
+
+ // data definition statements
+
+ grouping ethernet-top {
+ description "top-level Ethernet config and state containers";
+
+ container ethernet {
+ description
+ "Top-level container for ethernet configuration
+ and state";
+
+ container config {
+ description "Configuration data for ethernet interfaces";
+
+ uses ethernet-interface-config;
+
+ }
+
+ container state {
+
+ config false;
+ description "State variables for Ethernet interfaces";
+
+ uses ethernet-interface-config;
+ uses ethernet-interface-state;
+
+ }
+
+ }
+ }
+
+ // augment statements
+
+ augment "/oc-if:interfaces/oc-if:interface" {
+ description "Adds addtional Ethernet-specific configuration to
+ interfaces model";
+
+ uses ethernet-top {
+ when "oc-if:state/oc-if:type = 'ift:ethernetCsmacd'" {
+ description "Additional interface configuration parameters when
+ the interface type is Ethernet";
+ }
+ }
+ }
+
+ // rpc statements
+
+ // notification statements
+
+}