| 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.4.0"; |
| |
| revision "2018-04-10" { |
| description |
| "Add identites 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 |
| "Number of oversize frames received on the interface"; |
| } |
| |
| 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 |
| "Number of fragment frames received on the interface."; |
| } |
| |
| 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 |
| "Number of receive error events due to FCS/CRC check |
| failure"; |
| } |
| |
| // 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 |
| |
| } |