346 lines
8.5 KiB
YANG
346 lines
8.5 KiB
YANG
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 ietf-yang-types { prefix 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 IETF YANG
|
|
model for interfaces described by RFC 7223";
|
|
|
|
oc-ext:openconfig-version "1.1.0";
|
|
|
|
revision "2016-12-22" {
|
|
description
|
|
"Fixes to Ethernet interfaces model";
|
|
reference "1.1.0";
|
|
}
|
|
|
|
// extension statements
|
|
|
|
// feature statements
|
|
|
|
// 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_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 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 yang:counter64;
|
|
description
|
|
"MAC layer control frames received on the interface";
|
|
}
|
|
|
|
leaf in-mac-pause-frames {
|
|
type yang:counter64;
|
|
description
|
|
"MAC layer PAUSE frames received on the interface";
|
|
}
|
|
|
|
leaf in-oversize-frames {
|
|
type yang:counter64;
|
|
description
|
|
"Number of oversize frames received on the interface";
|
|
}
|
|
|
|
leaf in-jabber-frames {
|
|
type 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 yang:counter64;
|
|
description
|
|
"Number of fragment frames received on the interface.";
|
|
}
|
|
|
|
leaf in-8021q-frames {
|
|
type yang:counter64;
|
|
description
|
|
"Number of 802.1q tagged frames received on the interface";
|
|
}
|
|
|
|
leaf in-crc-errors {
|
|
type yang:counter64;
|
|
description
|
|
"Number of receive error events due to FCS/CRC check
|
|
failure";
|
|
}
|
|
|
|
// egress counters
|
|
|
|
leaf out-mac-control-frames {
|
|
type yang:counter64;
|
|
description
|
|
"MAC layer control frames sent on the interface";
|
|
}
|
|
|
|
leaf out-mac-pause-frames {
|
|
type yang:counter64;
|
|
description
|
|
"MAC layer PAUSE frames sent on the interface";
|
|
}
|
|
|
|
leaf out-8021q-frames {
|
|
type 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 yang:mac-address;
|
|
description
|
|
"Represenets the 'burned-in', or system-assigned, MAC
|
|
address for the Ethernet interface.";
|
|
}
|
|
|
|
leaf effective-speed {
|
|
type uint32;
|
|
units Mbps;
|
|
description
|
|
"Reports the effective speed of the interface, e.g., the
|
|
negotiated speed if auto-negotiate is enabled";
|
|
}
|
|
|
|
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
|
|
|
|
}
|