OpenConfig model for Infinera XT3300
Change-Id: I400c9146892932afc97d1a32e425722fd7c92345
diff --git a/models/openconfig-infinera/BUCK b/models/openconfig-infinera/BUCK
new file mode 100644
index 0000000..69363e2
--- /dev/null
+++ b/models/openconfig-infinera/BUCK
@@ -0,0 +1,16 @@
+COMPILE_DEPS = [
+ '//lib:CORE_DEPS',
+ '//models/ietf:onos-models-ietf',
+]
+
+APPS = [
+ 'org.onosproject.models.ietf',
+]
+
+yang_model(
+ app_name = 'org.onosproject.models.openconfig-infinera',
+ title = 'OpenConfig Infinera XT3300 YANG Models',
+ custom_registrator = False,
+ deps = COMPILE_DEPS,
+ required_apps = APPS,
+)
diff --git a/models/openconfig-infinera/pom.xml b/models/openconfig-infinera/pom.xml
new file mode 100644
index 0000000..108ecbb
--- /dev/null
+++ b/models/openconfig-infinera/pom.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright 2017-present Open Networking Foundation
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-models</artifactId>
+ <version>1.14.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>onos-models-openconfig-infinera</artifactId>
+ <packaging>bundle</packaging>
+ <description>OpenConfig Infinera YANG models</description>
+
+ <properties>
+ <onos.app.name>org.onosproject.models.openconfig-infinera</onos.app.name>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-model</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-apps-yang</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-models-ietf</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions combine.children="append">
+ <Include-Resource>yang/resources/YangMetaData.ser=target/classes/yang/resources/YangMetaData.ser</Include-Resource>
+ </instructions>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-compiler-maven-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-maven-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${project.build.directory}/generated-sources</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>onos-yang-plugin-workaround</id>
+ <!-- yang plugin cannot handle non-clean compilation -->
+ <phase>initialize</phase>
+ <goals>
+ <goal>clean</goal>
+ </goals>
+ <configuration>
+ <excludeDefaultDirectories>true</excludeDefaultDirectories>
+ <filesets>
+ <fileset>
+ <directory>target/generated-sources</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- FIXME: YANG tool generates problematic code -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArgs>
+ <arg>-XepDisableAllChecks</arg>
+ <arg>-Xep:BetaApi:OFF</arg>
+ </compilerArgs>
+ </configuration>
+ </plugin>
+
+ </plugins>
+
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.apache.maven.plugins
+ </groupId>
+ <artifactId>
+ maven-clean-plugin
+ </artifactId>
+ <versionRange>
+ [3.0.0,)
+ </versionRange>
+ <goals>
+ <goal>clean</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+</project>
diff --git a/models/openconfig-infinera/src/main/yang/iana-if-type@2016-11-23.yang b/models/openconfig-infinera/src/main/yang/iana-if-type@2016-11-23.yang
new file mode 100644
index 0000000..f8cfc49
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/iana-if-type@2016-11-23.yang
@@ -0,0 +1,1609 @@
+module iana-if-type {
+ namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
+ prefix ianaift;
+
+ import ietf-interfaces {
+ prefix if;
+ }
+
+ organization "IANA";
+ contact
+ " Internet Assigned Numbers Authority
+
+ Postal: ICANN
+ 12025 Waterfront Drive, Suite 300
+ Los Angeles, CA 90094-2536
+ United States
+
+ Tel: +1 310 301 5800
+ <mailto:iana&iana.org>";
+ description
+ "This YANG module defines YANG identities for IANA-registered
+ interface types.
+
+ This YANG module is maintained by IANA and reflects the
+ 'ifType definitions' registry.
+
+ The latest revision of this YANG module can be obtained from
+ the IANA web site.
+
+ Requests for new values should be made to IANA via
+ email (iana&iana.org).
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ The initial version of this YANG module is part of RFC 7224;
+ see the RFC itself for full legal notices.";
+ reference
+ "IANA 'ifType definitions' registry.
+ <http://www.iana.org/assignments/smi-numbers>";
+
+ revision 2016-11-23 {
+ description
+ "Registered ifTypes 283-288.";
+ }
+
+ revision 2016-06-09 {
+ description
+ "Registered ifType 282.";
+ }
+ revision 2016-05-03 {
+ description
+ "Registered ifType 281.";
+ }
+ revision 2015-06-12 {
+ description
+ "Corrected formatting issue.";
+ }
+ revision 2014-09-24 {
+ description
+ "Registered ifType 280.";
+ }
+ revision 2014-09-19 {
+ description
+ "Registered ifType 279.";
+ }
+ revision 2014-07-03 {
+ description
+ "Registered ifTypes 277-278.";
+ }
+ revision 2014-05-19 {
+ description
+ "Updated the contact address.";
+ }
+ revision 2014-05-08 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7224: IANA Interface Type YANG Module";
+ }
+
+ identity iana-interface-type {
+ base if:interface-type;
+ description
+ "This identity is used as a base for all interface types
+ defined in the 'ifType definitions' registry.";
+ }
+
+ identity other {
+ base iana-interface-type;
+ }
+ identity regular1822 {
+ base iana-interface-type;
+ }
+ identity hdh1822 {
+ base iana-interface-type;
+ }
+ identity ddnX25 {
+ base iana-interface-type;
+ }
+ identity rfc877x25 {
+ base iana-interface-type;
+ reference
+ "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
+ }
+ identity ethernetCsmacd {
+ base iana-interface-type;
+ description
+ "For all Ethernet-like interfaces, regardless of speed,
+ as per RFC 3635.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+ identity iso88023Csmacd {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Deprecated via RFC 3635.
+ Use ethernetCsmacd(6) instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+ identity iso88024TokenBus {
+ base iana-interface-type;
+ }
+ identity iso88025TokenRing {
+ base iana-interface-type;
+ }
+ identity iso88026Man {
+ base iana-interface-type;
+ }
+ identity starLan {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Deprecated via RFC 3635.
+ Use ethernetCsmacd(6) instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+ identity proteon10Mbit {
+ base iana-interface-type;
+ }
+ identity proteon80Mbit {
+ base iana-interface-type;
+ }
+ identity hyperchannel {
+ base iana-interface-type;
+ }
+ identity fddi {
+ base iana-interface-type;
+ reference
+ "RFC 1512 - FDDI Management Information Base";
+ }
+ identity lapb {
+ base iana-interface-type;
+ reference
+ "RFC 1381 - SNMP MIB Extension for X.25 LAPB";
+ }
+ identity sdlc {
+ base iana-interface-type;
+ }
+ identity ds1 {
+ base iana-interface-type;
+ description
+ "DS1-MIB.";
+ reference
+ "RFC 4805 - Definitions of Managed Objects for the
+ DS1, J1, E1, DS2, and E2 Interface Types";
+ }
+ identity e1 {
+ base iana-interface-type;
+ status obsolete;
+ description
+ "Obsolete; see DS1-MIB.";
+ reference
+ "RFC 4805 - Definitions of Managed Objects for the
+ DS1, J1, E1, DS2, and E2 Interface Types";
+ }
+ identity basicISDN {
+ base iana-interface-type;
+ description
+ "No longer used. See also RFC 2127.";
+ }
+ identity primaryISDN {
+ base iana-interface-type;
+ description
+ "No longer used. See also RFC 2127.";
+ }
+ identity propPointToPointSerial {
+ base iana-interface-type;
+ description
+ "Proprietary serial.";
+ }
+ identity ppp {
+ base iana-interface-type;
+ }
+ identity softwareLoopback {
+ base iana-interface-type;
+ }
+ identity eon {
+ base iana-interface-type;
+ description
+ "CLNP over IP.";
+ }
+ identity ethernet3Mbit {
+ base iana-interface-type;
+ }
+ identity nsip {
+ base iana-interface-type;
+ description
+ "XNS over IP.";
+ }
+ identity slip {
+ base iana-interface-type;
+ description
+ "Generic SLIP.";
+ }
+ identity ultra {
+ base iana-interface-type;
+ description
+ "Ultra Technologies.";
+ }
+ identity ds3 {
+ base iana-interface-type;
+ description
+ "DS3-MIB.";
+ reference
+ "RFC 3896 - Definitions of Managed Objects for the
+ DS3/E3 Interface Type";
+ }
+ identity sip {
+ base iana-interface-type;
+ description
+ "SMDS, coffee.";
+ reference
+ "RFC 1694 - Definitions of Managed Objects for SMDS
+ Interfaces using SMIv2";
+ }
+ identity frameRelay {
+ base iana-interface-type;
+ description
+ "DTE only.";
+ reference
+ "RFC 2115 - Management Information Base for Frame Relay
+ DTEs Using SMIv2";
+ }
+ identity rs232 {
+ base iana-interface-type;
+ reference
+ "RFC 1659 - Definitions of Managed Objects for RS-232-like
+ Hardware Devices using SMIv2";
+ }
+ identity para {
+ base iana-interface-type;
+ description
+ "Parallel-port.";
+ reference
+ "RFC 1660 - Definitions of Managed Objects for
+ Parallel-printer-like Hardware Devices using
+ SMIv2";
+ }
+ identity arcnet {
+ base iana-interface-type;
+ description
+ "ARCnet.";
+ }
+ identity arcnetPlus {
+ base iana-interface-type;
+ description
+ "ARCnet Plus.";
+ }
+ identity atm {
+ base iana-interface-type;
+ description
+ "ATM cells.";
+ }
+ identity miox25 {
+ base iana-interface-type;
+ reference
+ "RFC 1461 - SNMP MIB extension for Multiprotocol
+ Interconnect over X.25";
+ }
+ identity sonet {
+ base iana-interface-type;
+ description
+ "SONET or SDH.";
+ }
+ identity x25ple {
+ base iana-interface-type;
+ reference
+ "RFC 2127 - ISDN Management Information Base using SMIv2";
+ }
+ identity iso88022llc {
+ base iana-interface-type;
+ }
+ identity localTalk {
+ base iana-interface-type;
+ }
+ identity smdsDxi {
+ base iana-interface-type;
+ }
+ identity frameRelayService {
+ base iana-interface-type;
+ description
+ "FRNETSERV-MIB.";
+ reference
+ "RFC 2954 - Definitions of Managed Objects for Frame
+ Relay Service";
+ }
+ identity v35 {
+ base iana-interface-type;
+ }
+ identity hssi {
+ base iana-interface-type;
+ }
+ identity hippi {
+ base iana-interface-type;
+ }
+ identity modem {
+ base iana-interface-type;
+ description
+ "Generic modem.";
+ }
+ identity aal5 {
+ base iana-interface-type;
+ description
+ "AAL5 over ATM.";
+ }
+ identity sonetPath {
+ base iana-interface-type;
+ }
+ identity sonetVT {
+ base iana-interface-type;
+ }
+ identity smdsIcip {
+ base iana-interface-type;
+ description
+ "SMDS InterCarrier Interface.";
+ }
+ identity propVirtual {
+ base iana-interface-type;
+ description
+ "Proprietary virtual/internal.";
+ reference
+ "RFC 2863 - The Interfaces Group MIB";
+ }
+ identity propMultiplexor {
+ base iana-interface-type;
+ description
+ "Proprietary multiplexing.";
+ reference
+ "RFC 2863 - The Interfaces Group MIB";
+ }
+ identity ieee80212 {
+ base iana-interface-type;
+ description
+ "100BaseVG.";
+ }
+ identity fibreChannel {
+ base iana-interface-type;
+ description
+ "Fibre Channel.";
+ }
+ identity hippiInterface {
+ base iana-interface-type;
+ description
+ "HIPPI interfaces.";
+ }
+ identity frameRelayInterconnect {
+ base iana-interface-type;
+ status obsolete;
+ description
+ "Obsolete; use either
+ frameRelay(32) or frameRelayService(44).";
+ }
+ identity aflane8023 {
+ base iana-interface-type;
+ description
+ "ATM Emulated LAN for 802.3.";
+ }
+ identity aflane8025 {
+ base iana-interface-type;
+ description
+ "ATM Emulated LAN for 802.5.";
+ }
+ identity cctEmul {
+ base iana-interface-type;
+ description
+ "ATM Emulated circuit.";
+ }
+ identity fastEther {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Obsoleted via RFC 3635.
+ ethernetCsmacd(6) should be used instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+ identity isdn {
+ base iana-interface-type;
+ description
+ "ISDN and X.25.";
+ reference
+ "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
+ in the Packet Mode";
+ }
+ identity v11 {
+ base iana-interface-type;
+ description
+ "CCITT V.11/X.21.";
+ }
+ identity v36 {
+ base iana-interface-type;
+ description
+ "CCITT V.36.";
+ }
+ identity g703at64k {
+ base iana-interface-type;
+ description
+ "CCITT G703 at 64Kbps.";
+ }
+ identity g703at2mb {
+ base iana-interface-type;
+ status obsolete;
+ description
+ "Obsolete; see DS1-MIB.";
+ }
+ identity qllc {
+ base iana-interface-type;
+ description
+ "SNA QLLC.";
+ }
+ identity fastEtherFX {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Obsoleted via RFC 3635.
+ ethernetCsmacd(6) should be used instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+ identity channel {
+ base iana-interface-type;
+ description
+ "Channel.";
+ }
+ identity ieee80211 {
+ base iana-interface-type;
+ description
+ "Radio spread spectrum.";
+ }
+ identity ibm370parChan {
+ base iana-interface-type;
+ description
+ "IBM System 360/370 OEMI Channel.";
+ }
+ identity escon {
+ base iana-interface-type;
+ description
+ "IBM Enterprise Systems Connection.";
+ }
+ identity dlsw {
+ base iana-interface-type;
+ description
+ "Data Link Switching.";
+ }
+ identity isdns {
+ base iana-interface-type;
+ description
+ "ISDN S/T interface.";
+ }
+ identity isdnu {
+ base iana-interface-type;
+ description
+ "ISDN U interface.";
+ }
+ identity lapd {
+ base iana-interface-type;
+ description
+ "Link Access Protocol D.";
+ }
+ identity ipSwitch {
+ base iana-interface-type;
+ description
+ "IP Switching Objects.";
+ }
+ identity rsrb {
+ base iana-interface-type;
+ description
+ "Remote Source Route Bridging.";
+ }
+ identity atmLogical {
+ base iana-interface-type;
+ description
+ "ATM Logical Port.";
+ reference
+ "RFC 3606 - Definitions of Supplemental Managed Objects
+ for ATM Interface";
+ }
+ identity ds0 {
+ base iana-interface-type;
+ description
+ "Digital Signal Level 0.";
+ reference
+ "RFC 2494 - Definitions of Managed Objects for the DS0
+ and DS0 Bundle Interface Type";
+ }
+ identity ds0Bundle {
+ base iana-interface-type;
+ description
+ "Group of ds0s on the same ds1.";
+ reference
+ "RFC 2494 - Definitions of Managed Objects for the DS0
+ and DS0 Bundle Interface Type";
+ }
+ identity bsc {
+ base iana-interface-type;
+ description
+ "Bisynchronous Protocol.";
+ }
+ identity async {
+ base iana-interface-type;
+ description
+ "Asynchronous Protocol.";
+ }
+ identity cnr {
+ base iana-interface-type;
+ description
+ "Combat Net Radio.";
+ }
+ identity iso88025Dtr {
+ base iana-interface-type;
+ description
+ "ISO 802.5r DTR.";
+ }
+ identity eplrs {
+ base iana-interface-type;
+ description
+ "Ext Pos Loc Report Sys.";
+ }
+ identity arap {
+ base iana-interface-type;
+ description
+ "Appletalk Remote Access Protocol.";
+ }
+ identity propCnls {
+ base iana-interface-type;
+ description
+ "Proprietary Connectionless Protocol.";
+ }
+ identity hostPad {
+ base iana-interface-type;
+ description
+ "CCITT-ITU X.29 PAD Protocol.";
+ }
+ identity termPad {
+ base iana-interface-type;
+ description
+ "CCITT-ITU X.3 PAD Facility.";
+ }
+ identity frameRelayMPI {
+ base iana-interface-type;
+ description
+ "Multiproto Interconnect over FR.";
+ }
+ identity x213 {
+ base iana-interface-type;
+ description
+ "CCITT-ITU X213.";
+ }
+ identity adsl {
+ base iana-interface-type;
+ description
+ "Asymmetric Digital Subscriber Loop.";
+ }
+ identity radsl {
+ base iana-interface-type;
+ description
+ "Rate-Adapt. Digital Subscriber Loop.";
+ }
+ identity sdsl {
+ base iana-interface-type;
+ description
+ "Symmetric Digital Subscriber Loop.";
+ }
+ identity vdsl {
+ base iana-interface-type;
+ description
+ "Very H-Speed Digital Subscrib. Loop.";
+ }
+ identity iso88025CRFPInt {
+ base iana-interface-type;
+ description
+ "ISO 802.5 CRFP.";
+ }
+ identity myrinet {
+ base iana-interface-type;
+ description
+ "Myricom Myrinet.";
+ }
+ identity voiceEM {
+ base iana-interface-type;
+ description
+ "Voice recEive and transMit.";
+ }
+ identity voiceFXO {
+ base iana-interface-type;
+ description
+ "Voice Foreign Exchange Office.";
+ }
+ identity voiceFXS {
+ base iana-interface-type;
+ description
+ "Voice Foreign Exchange Station.";
+ }
+ identity voiceEncap {
+ base iana-interface-type;
+ description
+ "Voice encapsulation.";
+ }
+ identity voiceOverIp {
+ base iana-interface-type;
+ description
+ "Voice over IP encapsulation.";
+ }
+ identity atmDxi {
+ base iana-interface-type;
+ description
+ "ATM DXI.";
+ }
+ identity atmFuni {
+ base iana-interface-type;
+ description
+ "ATM FUNI.";
+ }
+ identity atmIma {
+ base iana-interface-type;
+ description
+ "ATM IMA.";
+ }
+ identity pppMultilinkBundle {
+ base iana-interface-type;
+ description
+ "PPP Multilink Bundle.";
+ }
+ identity ipOverCdlc {
+ base iana-interface-type;
+ description
+ "IBM ipOverCdlc.";
+ }
+ identity ipOverClaw {
+ base iana-interface-type;
+ description
+ "IBM Common Link Access to Workstn.";
+ }
+ identity stackToStack {
+ base iana-interface-type;
+ description
+ "IBM stackToStack.";
+ }
+ identity virtualIpAddress {
+ base iana-interface-type;
+ description
+ "IBM VIPA.";
+ }
+ identity mpc {
+ base iana-interface-type;
+ description
+ "IBM multi-protocol channel support.";
+ }
+ identity ipOverAtm {
+ base iana-interface-type;
+ description
+ "IBM ipOverAtm.";
+ reference
+ "RFC 2320 - Definitions of Managed Objects for Classical IP
+ and ARP Over ATM Using SMIv2 (IPOA-MIB)";
+ }
+ identity iso88025Fiber {
+ base iana-interface-type;
+ description
+ "ISO 802.5j Fiber Token Ring.";
+ }
+ identity tdlc {
+ base iana-interface-type;
+ description
+ "IBM twinaxial data link control.";
+ }
+ identity gigabitEthernet {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Obsoleted via RFC 3635.
+ ethernetCsmacd(6) should be used instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+ identity hdlc {
+ base iana-interface-type;
+ description
+ "HDLC.";
+ }
+ identity lapf {
+ base iana-interface-type;
+ description
+ "LAP F.";
+ }
+ identity v37 {
+ base iana-interface-type;
+ description
+ "V.37.";
+ }
+ identity x25mlp {
+ base iana-interface-type;
+ description
+ "Multi-Link Protocol.";
+ }
+ identity x25huntGroup {
+ base iana-interface-type;
+ description
+ "X25 Hunt Group.";
+ }
+ identity transpHdlc {
+ base iana-interface-type;
+ description
+ "Transp HDLC.";
+ }
+ identity interleave {
+ base iana-interface-type;
+ description
+ "Interleave channel.";
+ }
+ identity fast {
+ base iana-interface-type;
+ description
+ "Fast channel.";
+ }
+ identity ip {
+ base iana-interface-type;
+ description
+ "IP (for APPN HPR in IP networks).";
+ }
+ identity docsCableMaclayer {
+ base iana-interface-type;
+ description
+ "CATV Mac Layer.";
+ }
+ identity docsCableDownstream {
+ base iana-interface-type;
+ description
+ "CATV Downstream interface.";
+ }
+ identity docsCableUpstream {
+ base iana-interface-type;
+ description
+ "CATV Upstream interface.";
+ }
+ identity a12MppSwitch {
+ base iana-interface-type;
+ description
+ "Avalon Parallel Processor.";
+ }
+ identity tunnel {
+ base iana-interface-type;
+ description
+ "Encapsulation interface.";
+ }
+ identity coffee {
+ base iana-interface-type;
+ description
+ "Coffee pot.";
+ reference
+ "RFC 2325 - Coffee MIB";
+ }
+ identity ces {
+ base iana-interface-type;
+ description
+ "Circuit Emulation Service.";
+ }
+ identity atmSubInterface {
+ base iana-interface-type;
+ description
+ "ATM Sub Interface.";
+ }
+ identity l2vlan {
+ base iana-interface-type;
+ description
+ "Layer 2 Virtual LAN using 802.1Q.";
+ }
+ identity l3ipvlan {
+ base iana-interface-type;
+ description
+ "Layer 3 Virtual LAN using IP.";
+ }
+ identity l3ipxvlan {
+ base iana-interface-type;
+ description
+ "Layer 3 Virtual LAN using IPX.";
+ }
+ identity digitalPowerline {
+ base iana-interface-type;
+ description
+ "IP over Power Lines.";
+ }
+ identity mediaMailOverIp {
+ base iana-interface-type;
+ description
+ "Multimedia Mail over IP.";
+ }
+ identity dtm {
+ base iana-interface-type;
+ description
+ "Dynamic synchronous Transfer Mode.";
+ }
+ identity dcn {
+ base iana-interface-type;
+ description
+ "Data Communications Network.";
+ }
+ identity ipForward {
+ base iana-interface-type;
+ description
+ "IP Forwarding Interface.";
+ }
+ identity msdsl {
+ base iana-interface-type;
+ description
+ "Multi-rate Symmetric DSL.";
+ }
+ identity ieee1394 {
+ base iana-interface-type;
+
+ description
+ "IEEE1394 High Performance Serial Bus.";
+ }
+ identity if-gsn {
+ base iana-interface-type;
+ description
+ "HIPPI-6400.";
+ }
+ identity dvbRccMacLayer {
+ base iana-interface-type;
+ description
+ "DVB-RCC MAC Layer.";
+ }
+ identity dvbRccDownstream {
+ base iana-interface-type;
+ description
+ "DVB-RCC Downstream Channel.";
+ }
+ identity dvbRccUpstream {
+ base iana-interface-type;
+ description
+ "DVB-RCC Upstream Channel.";
+ }
+ identity atmVirtual {
+ base iana-interface-type;
+ description
+ "ATM Virtual Interface.";
+ }
+ identity mplsTunnel {
+ base iana-interface-type;
+ description
+ "MPLS Tunnel Virtual Interface.";
+ }
+ identity srp {
+ base iana-interface-type;
+ description
+ "Spatial Reuse Protocol.";
+ }
+ identity voiceOverAtm {
+ base iana-interface-type;
+ description
+ "Voice over ATM.";
+ }
+ identity voiceOverFrameRelay {
+ base iana-interface-type;
+ description
+ "Voice Over Frame Relay.";
+ }
+ identity idsl {
+ base iana-interface-type;
+ description
+ "Digital Subscriber Loop over ISDN.";
+ }
+ identity compositeLink {
+ base iana-interface-type;
+ description
+ "Avici Composite Link Interface.";
+ }
+ identity ss7SigLink {
+ base iana-interface-type;
+ description
+ "SS7 Signaling Link.";
+ }
+ identity propWirelessP2P {
+ base iana-interface-type;
+ description
+ "Prop. P2P wireless interface.";
+ }
+ identity frForward {
+ base iana-interface-type;
+ description
+ "Frame Forward Interface.";
+ }
+ identity rfc1483 {
+ base iana-interface-type;
+ description
+ "Multiprotocol over ATM AAL5.";
+ reference
+ "RFC 1483 - Multiprotocol Encapsulation over ATM
+ Adaptation Layer 5";
+ }
+ identity usb {
+ base iana-interface-type;
+ description
+ "USB Interface.";
+ }
+ identity ieee8023adLag {
+ base iana-interface-type;
+ description
+ "IEEE 802.3ad Link Aggregate.";
+ }
+ identity bgppolicyaccounting {
+ base iana-interface-type;
+ description
+ "BGP Policy Accounting.";
+ }
+ identity frf16MfrBundle {
+ base iana-interface-type;
+ description
+ "FRF.16 Multilink Frame Relay.";
+ }
+ identity h323Gatekeeper {
+ base iana-interface-type;
+ description
+ "H323 Gatekeeper.";
+ }
+ identity h323Proxy {
+ base iana-interface-type;
+ description
+ "H323 Voice and Video Proxy.";
+ }
+ identity mpls {
+ base iana-interface-type;
+ description
+ "MPLS.";
+ }
+ identity mfSigLink {
+ base iana-interface-type;
+ description
+ "Multi-frequency signaling link.";
+ }
+ identity hdsl2 {
+ base iana-interface-type;
+ description
+ "High Bit-Rate DSL - 2nd generation.";
+ }
+ identity shdsl {
+ base iana-interface-type;
+ description
+ "Multirate HDSL2.";
+ }
+ identity ds1FDL {
+ base iana-interface-type;
+ description
+ "Facility Data Link (4Kbps) on a DS1.";
+ }
+ identity pos {
+ base iana-interface-type;
+ description
+ "Packet over SONET/SDH Interface.";
+ }
+ identity dvbAsiIn {
+ base iana-interface-type;
+ description
+ "DVB-ASI Input.";
+ }
+ identity dvbAsiOut {
+ base iana-interface-type;
+ description
+ "DVB-ASI Output.";
+ }
+ identity plc {
+ base iana-interface-type;
+ description
+ "Power Line Communications.";
+ }
+ identity nfas {
+ base iana-interface-type;
+ description
+ "Non-Facility Associated Signaling.";
+ }
+ identity tr008 {
+ base iana-interface-type;
+ description
+ "TR008.";
+ }
+ identity gr303RDT {
+ base iana-interface-type;
+ description
+ "Remote Digital Terminal.";
+ }
+ identity gr303IDT {
+ base iana-interface-type;
+ description
+ "Integrated Digital Terminal.";
+ }
+ identity isup {
+ base iana-interface-type;
+ description
+ "ISUP.";
+ }
+ identity propDocsWirelessMaclayer {
+ base iana-interface-type;
+ description
+ "Cisco proprietary Maclayer.";
+ }
+ identity propDocsWirelessDownstream {
+ base iana-interface-type;
+ description
+ "Cisco proprietary Downstream.";
+ }
+ identity propDocsWirelessUpstream {
+ base iana-interface-type;
+ description
+ "Cisco proprietary Upstream.";
+ }
+ identity hiperlan2 {
+ base iana-interface-type;
+ description
+ "HIPERLAN Type 2 Radio Interface.";
+ }
+ identity propBWAp2Mp {
+ base iana-interface-type;
+ description
+ "PropBroadbandWirelessAccesspt2Multipt (use of this value
+ for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
+ is deprecated, and ieee80216WMAN(237) should be used
+ instead).";
+ }
+ identity sonetOverheadChannel {
+ base iana-interface-type;
+ description
+ "SONET Overhead Channel.";
+ }
+ identity digitalWrapperOverheadChannel {
+ base iana-interface-type;
+ description
+ "Digital Wrapper.";
+ }
+ identity aal2 {
+ base iana-interface-type;
+ description
+ "ATM adaptation layer 2.";
+ }
+ identity radioMAC {
+ base iana-interface-type;
+ description
+ "MAC layer over radio links.";
+ }
+ identity atmRadio {
+ base iana-interface-type;
+ description
+ "ATM over radio links.";
+ }
+ identity imt {
+ base iana-interface-type;
+ description
+ "Inter-Machine Trunks.";
+ }
+ identity mvl {
+ base iana-interface-type;
+ description
+ "Multiple Virtual Lines DSL.";
+ }
+ identity reachDSL {
+ base iana-interface-type;
+ description
+ "Long Reach DSL.";
+ }
+ identity frDlciEndPt {
+ base iana-interface-type;
+ description
+ "Frame Relay DLCI End Point.";
+ }
+ identity atmVciEndPt {
+ base iana-interface-type;
+ description
+ "ATM VCI End Point.";
+ }
+ identity opticalChannel {
+ base iana-interface-type;
+ description
+ "Optical Channel.";
+ }
+ identity opticalTransport {
+ base iana-interface-type;
+ description
+ "Optical Transport.";
+ }
+ identity propAtm {
+ base iana-interface-type;
+ description
+ "Proprietary ATM.";
+ }
+ identity voiceOverCable {
+ base iana-interface-type;
+ description
+ "Voice Over Cable Interface.";
+ }
+ identity infiniband {
+ base iana-interface-type;
+ description
+ "Infiniband.";
+ }
+ identity teLink {
+ base iana-interface-type;
+ description
+ "TE Link.";
+ }
+ identity q2931 {
+ base iana-interface-type;
+ description
+ "Q.2931.";
+ }
+ identity virtualTg {
+ base iana-interface-type;
+ description
+ "Virtual Trunk Group.";
+ }
+ identity sipTg {
+ base iana-interface-type;
+ description
+ "SIP Trunk Group.";
+ }
+ identity sipSig {
+ base iana-interface-type;
+ description
+ "SIP Signaling.";
+ }
+ identity docsCableUpstreamChannel {
+ base iana-interface-type;
+ description
+ "CATV Upstream Channel.";
+ }
+ identity econet {
+ base iana-interface-type;
+ description
+ "Acorn Econet.";
+ }
+ identity pon155 {
+ base iana-interface-type;
+ description
+ "FSAN 155Mb Symetrical PON interface.";
+ }
+ identity pon622 {
+ base iana-interface-type;
+ description
+ "FSAN 622Mb Symetrical PON interface.";
+ }
+ identity bridge {
+ base iana-interface-type;
+ description
+ "Transparent bridge interface.";
+ }
+ identity linegroup {
+ base iana-interface-type;
+ description
+ "Interface common to multiple lines.";
+ }
+ identity voiceEMFGD {
+ base iana-interface-type;
+ description
+ "Voice E&M Feature Group D.";
+ }
+ identity voiceFGDEANA {
+ base iana-interface-type;
+ description
+ "Voice FGD Exchange Access North American.";
+ }
+ identity voiceDID {
+ base iana-interface-type;
+ description
+ "Voice Direct Inward Dialing.";
+ }
+ identity mpegTransport {
+ base iana-interface-type;
+ description
+ "MPEG transport interface.";
+ }
+ identity sixToFour {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "6to4 interface (DEPRECATED).";
+ reference
+ "RFC 4087 - IP Tunnel MIB";
+ }
+ identity gtp {
+ base iana-interface-type;
+ description
+ "GTP (GPRS Tunneling Protocol).";
+ }
+ identity pdnEtherLoop1 {
+ base iana-interface-type;
+ description
+ "Paradyne EtherLoop 1.";
+ }
+ identity pdnEtherLoop2 {
+ base iana-interface-type;
+ description
+ "Paradyne EtherLoop 2.";
+ }
+ identity opticalChannelGroup {
+ base iana-interface-type;
+ description
+ "Optical Channel Group.";
+ }
+ identity homepna {
+ base iana-interface-type;
+ description
+ "HomePNA ITU-T G.989.";
+ }
+ identity gfp {
+ base iana-interface-type;
+ description
+ "Generic Framing Procedure (GFP).";
+ }
+ identity ciscoISLvlan {
+ base iana-interface-type;
+ description
+ "Layer 2 Virtual LAN using Cisco ISL.";
+ }
+ identity actelisMetaLOOP {
+ base iana-interface-type;
+ description
+ "Acteleis proprietary MetaLOOP High Speed Link.";
+ }
+ identity fcipLink {
+ base iana-interface-type;
+ description
+ "FCIP Link.";
+ }
+ identity rpr {
+ base iana-interface-type;
+ description
+ "Resilient Packet Ring Interface Type.";
+ }
+ identity qam {
+ base iana-interface-type;
+ description
+ "RF Qam Interface.";
+ }
+ identity lmp {
+ base iana-interface-type;
+ description
+ "Link Management Protocol.";
+ reference
+ "RFC 4327 - Link Management Protocol (LMP) Management
+ Information Base (MIB)";
+ }
+ identity cblVectaStar {
+ base iana-interface-type;
+ description
+ "Cambridge Broadband Networks Limited VectaStar.";
+ }
+ identity docsCableMCmtsDownstream {
+ base iana-interface-type;
+ description
+ "CATV Modular CMTS Downstream Interface.";
+ }
+ identity adsl2 {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Asymmetric Digital Subscriber Loop Version 2
+ (DEPRECATED/OBSOLETED - please use adsl2plus(238)
+ instead).";
+ reference
+ "RFC 4706 - Definitions of Managed Objects for Asymmetric
+ Digital Subscriber Line 2 (ADSL2)";
+ }
+ identity macSecControlledIF {
+ base iana-interface-type;
+ description
+ "MACSecControlled.";
+ }
+ identity macSecUncontrolledIF {
+ base iana-interface-type;
+ description
+ "MACSecUncontrolled.";
+ }
+ identity aviciOpticalEther {
+ base iana-interface-type;
+ description
+ "Avici Optical Ethernet Aggregate.";
+ }
+ identity atmbond {
+ base iana-interface-type;
+ description
+ "atmbond.";
+ }
+ identity voiceFGDOS {
+ base iana-interface-type;
+ description
+ "Voice FGD Operator Services.";
+ }
+ identity mocaVersion1 {
+ base iana-interface-type;
+ description
+ "MultiMedia over Coax Alliance (MoCA) Interface
+ as documented in information provided privately to IANA.";
+ }
+ identity ieee80216WMAN {
+ base iana-interface-type;
+ description
+ "IEEE 802.16 WMAN interface.";
+ }
+ identity adsl2plus {
+ base iana-interface-type;
+ description
+ "Asymmetric Digital Subscriber Loop Version 2 -
+ Version 2 Plus and all variants.";
+ }
+ identity dvbRcsMacLayer {
+ base iana-interface-type;
+ description
+ "DVB-RCS MAC Layer.";
+ reference
+ "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+ }
+ identity dvbTdm {
+ base iana-interface-type;
+ description
+ "DVB Satellite TDM.";
+ reference
+ "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+ }
+ identity dvbRcsTdma {
+ base iana-interface-type;
+ description
+ "DVB-RCS TDMA.";
+ reference
+ "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+ }
+ identity x86Laps {
+ base iana-interface-type;
+ description
+ "LAPS based on ITU-T X.86/Y.1323.";
+ }
+ identity wwanPP {
+ base iana-interface-type;
+ description
+ "3GPP WWAN.";
+ }
+ identity wwanPP2 {
+ base iana-interface-type;
+ description
+ "3GPP2 WWAN.";
+ }
+ identity voiceEBS {
+ base iana-interface-type;
+ description
+ "Voice P-phone EBS physical interface.";
+ }
+ identity ifPwType {
+ base iana-interface-type;
+ description
+ "Pseudowire interface type.";
+ reference
+ "RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
+ }
+ identity ilan {
+ base iana-interface-type;
+ description
+ "Internal LAN on a bridge per IEEE 802.1ap.";
+ }
+ identity pip {
+ base iana-interface-type;
+ description
+ "Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
+ }
+ identity aluELP {
+ base iana-interface-type;
+ description
+ "Alcatel-Lucent Ethernet Link Protection.";
+ }
+ identity gpon {
+ base iana-interface-type;
+ description
+ "Gigabit-capable passive optical networks (G-PON) as per
+ ITU-T G.948.";
+ }
+ identity vdsl2 {
+ base iana-interface-type;
+ description
+ "Very high speed digital subscriber line Version 2
+ (as per ITU-T Recommendation G.993.2).";
+ reference
+ "RFC 5650 - Definitions of Managed Objects for Very High
+ Speed Digital Subscriber Line 2 (VDSL2)";
+ }
+ identity capwapDot11Profile {
+ base iana-interface-type;
+ description
+ "WLAN Profile Interface.";
+ reference
+ "RFC 5834 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Binding MIB for
+ IEEE 802.11";
+ }
+ identity capwapDot11Bss {
+ base iana-interface-type;
+ description
+ "WLAN BSS Interface.";
+ reference
+ "RFC 5834 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Binding MIB for
+ IEEE 802.11";
+ }
+ identity capwapWtpVirtualRadio {
+ base iana-interface-type;
+ description
+ "WTP Virtual Radio Interface.";
+ reference
+ "RFC 5833 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Base MIB";
+ }
+ identity bits {
+ base iana-interface-type;
+ description
+ "bitsport.";
+ }
+ identity docsCableUpstreamRfPort {
+ base iana-interface-type;
+ description
+ "DOCSIS CATV Upstream RF Port.";
+ }
+ identity cableDownstreamRfPort {
+ base iana-interface-type;
+ description
+ "CATV downstream RF Port.";
+ }
+ identity vmwareVirtualNic {
+ base iana-interface-type;
+ description
+ "VMware Virtual Network Interface.";
+ }
+ identity ieee802154 {
+ base iana-interface-type;
+ description
+ "IEEE 802.15.4 WPAN interface.";
+ reference
+ "IEEE 802.15.4-2006";
+ }
+ identity otnOdu {
+ base iana-interface-type;
+ description
+ "OTN Optical Data Unit.";
+ }
+ identity otnOtu {
+ base iana-interface-type;
+ description
+ "OTN Optical channel Transport Unit.";
+ }
+ identity ifVfiType {
+ base iana-interface-type;
+ description
+ "VPLS Forwarding Instance Interface Type.";
+ }
+ identity g9981 {
+ base iana-interface-type;
+ description
+ "G.998.1 bonded interface.";
+ }
+ identity g9982 {
+ base iana-interface-type;
+ description
+ "G.998.2 bonded interface.";
+ }
+ identity g9983 {
+ base iana-interface-type;
+ description
+ "G.998.3 bonded interface.";
+ }
+
+ identity aluEpon {
+ base iana-interface-type;
+ description
+ "Ethernet Passive Optical Networks (E-PON).";
+ }
+ identity aluEponOnu {
+ base iana-interface-type;
+ description
+ "EPON Optical Network Unit.";
+ }
+ identity aluEponPhysicalUni {
+ base iana-interface-type;
+ description
+ "EPON physical User to Network interface.";
+ }
+ identity aluEponLogicalLink {
+ base iana-interface-type;
+ description
+ "The emulation of a point-to-point link over the EPON
+ layer.";
+ }
+ identity aluGponOnu {
+ base iana-interface-type;
+ description
+ "GPON Optical Network Unit.";
+ reference
+ "ITU-T G.984.2";
+ }
+ identity aluGponPhysicalUni {
+ base iana-interface-type;
+ description
+ "GPON physical User to Network interface.";
+ reference
+ "ITU-T G.984.2";
+ }
+ identity vmwareNicTeam {
+ base iana-interface-type;
+ description
+ "VMware NIC Team.";
+ }
+ identity docsOfdmDownstream {
+ base iana-interface-type;
+ description
+ "CATV Downstream OFDM interface.";
+ }
+ identity docsOfdmaUpstream {
+ base iana-interface-type;
+ description
+ "CATV Upstream OFDMA interface.";
+ }
+ identity gfast {
+ base iana-interface-type;
+ description
+ "G.fast port.";
+ reference
+ "ITU-T G.9701";
+ }
+ identity sdci {
+ base iana-interface-type;
+ description
+ "SDCI (IO-Link).";
+ reference
+ "IEC 61131-9 Edition 1.0 2013-09";
+ }
+ identity xboxWireless {
+ base iana-interface-type;
+ description
+ "Xbox wireless.";
+ }
+ identity fastdsl {
+ base iana-interface-type;
+ description
+ "FastDSL.";
+ reference
+ "BBF TR-355";
+ }
+ identity docsCableScte55d1FwdOob {
+ base iana-interface-type;
+ description
+ "Cable SCTE 55-1 OOB Forward Channel.";
+ }
+ identity docsCableScte55d1RetOob {
+ base iana-interface-type;
+ description
+ "Cable SCTE 55-1 OOB Return Channel.";
+ }
+ identity docsCableScte55d2DsOob {
+ base iana-interface-type;
+ description
+ "Cable SCTE 55-2 OOB Downstream Channel.";
+ }
+ identity docsCableScte55d2UsOob {
+ base iana-interface-type;
+ description
+ "Cable SCTE 55-2 OOB Upstream Channel.";
+ }
+ identity docsCableNdf {
+ base iana-interface-type;
+ description
+ "Cable Narrowband Digital Forward.";
+ }
+ identity docsCableNdr {
+ base iana-interface-type;
+ description
+ "Cable Narrowband Digital Return.";
+ }
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-extensions@2015-10-09.yang b/models/openconfig-infinera/src/main/yang/openconfig-extensions@2015-10-09.yang
new file mode 100644
index 0000000..9cadce0
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-extensions@2015-10-09.yang
@@ -0,0 +1,64 @@
+module openconfig-extensions {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/openconfig-ext";
+
+ prefix "ocext";
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module provides extensions to the YANG language to allow
+ OpenConfig specific functionality and meta-data to be defined.";
+
+ revision "2015-10-09" {
+ description
+ "Initial OpenConfig public release";
+ }
+
+ revision "2015-10-05" {
+ description
+ "Initial revision";
+ reference "TBD";
+ }
+
+ // extension statements
+ extension openconfig-version {
+ argument "semver" {
+ yin-element false;
+ }
+ description
+ "The OpenConfig version number for the module. This is
+ expressed as a semantic version number of the form:
+ x.y.z
+ where:
+ * x corresponds to the major version,
+ * y corresponds to a minor version,
+ * z corresponds to a patch version.
+ This version corresponds to the model file within which it is
+ defined, and does not cover the whole set of OpenConfig models.
+ Where several modules are used to build up a single block of
+ functionality, the same module version is specified across each
+ file that makes up the module.
+ A major version number of 0 indicates that this model is still
+ in development (whether within OpenConfig or with industry
+ partners), and is potentially subject to change.
+ Following a release of major version 1, all modules will
+ increment major revision number where backwards incompatible
+ changes to the model are made.
+ The minor version is changed when features are added to the
+ model that do not impact current clients use of the model.
+ The patch-level version is incremented when non-feature changes
+ (such as bugfixes or clarifications to human-readable
+ descriptions that do not impact model functionality) are made
+ that maintain backwards compatibility.
+ The version number is stored in the module meta-data.";
+ }
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-if-ethernet@2016-12-22.yang b/models/openconfig-infinera/src/main/yang/openconfig-if-ethernet@2016-12-22.yang
new file mode 100644
index 0000000..f02f581
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-if-ethernet@2016-12-22.yang
@@ -0,0 +1,355 @@
+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;
+ revision-date "2016-05-26";
+ }
+ import iana-if-type {
+ prefix ift;
+ revision-date "2016-11-23";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ }
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+
+ // 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
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-interfaces@2016-05-26.yang b/models/openconfig-infinera/src/main/yang/openconfig-interfaces@2016-05-26.yang
new file mode 100644
index 0000000..4abde5d
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-interfaces@2016-05-26.yang
@@ -0,0 +1,891 @@
+module openconfig-interfaces {
+
+ // namespace
+ namespace "http://openconfig.net/yang/interfaces";
+
+ prefix "oc-if";
+
+ // import some basic types
+ import ietf-interfaces {
+ prefix ietf-if;
+ }
+ import ietf-yang-types {
+ prefix yang;
+ }
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+
+ // import tailf-common {prefix "tailf";}
+ // tailf:export netconf;
+ // tailf:export rest;
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ netopenconfig@googlegroups.com";
+
+ description
+ "Model for managing network interfaces and subinterfaces. This
+ module also defines convenience types / groupings for other
+ models to create references to interfaces:
+ base-interface-ref (type) - reference to a base interface
+ interface-ref (grouping) - container for reference to a
+ interface + subinterface
+ interface-ref-state (grouping) - container for read-only
+ (opstate) reference to interface + subinterface
+ This model reuses data items defined in the IETF YANG model for
+ interfaces described by RFC 7223 with an alternate structure
+ (particularly for operational state data) and and with
+ additional configuration items.";
+
+ oc-ext:openconfig-version "1.0.2";
+
+ revision "2016-05-26" {
+ description
+ "OpenConfig public release";
+ reference "1.0.2";
+ }
+
+
+ // typedef statements
+
+ typedef base-interface-ref {
+ type leafref {
+ path "/oc-if:interfaces/oc-if:interface/oc-if:name";
+ }
+ description
+ "Reusable type for by-name reference to a base interface.
+ This type may be used in cases where ability to reference
+ a subinterface is not required.";
+ }
+
+ typedef interface-id {
+ type string;
+ description
+ "User-defined identifier for an interface, generally used to
+ name a interface reference. The id can be arbitrary but a
+ useful convention is to use a combination of base interface
+ name and subinterface index.";
+ }
+
+ // grouping statements
+
+ grouping interface-ref-common {
+ description
+ "Reference leafrefs to interface / subinterface";
+
+ leaf interface {
+ type leafref {
+ path "/oc-if:interfaces/oc-if:interface/oc-if:name";
+ }
+ description
+ "Reference to a base interface. If a reference to a
+ subinterface is required, this leaf must be specified
+ to indicate the base interface.";
+ }
+
+ leaf subinterface {
+ type leafref {
+ path "/oc-if:interfaces/" +
+ "oc-if:interface[oc-if:name=current()/../interface]/" +
+ "oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
+ }
+ description
+ "Reference to a subinterface -- this requires the base
+ interface to be specified using the interface leaf in
+ this container. If only a reference to a base interface
+ is requuired, this leaf should not be set.";
+ }
+ }
+
+ grouping interface-ref-state-container {
+ description
+ "Reusable opstate w/container for a reference to an
+ interface or subinterface";
+
+ container state {
+ config false;
+ description
+ "Operational state for interface-ref";
+
+ uses interface-ref-common;
+ }
+ }
+
+ grouping interface-ref {
+ description
+ "Reusable definition for a reference to an interface or
+ subinterface";
+
+ container interface-ref {
+ description
+ "Reference to an interface or subinterface";
+
+ container config {
+ description
+ "Configured reference to interface / subinterface";
+
+ uses interface-ref-common;
+ }
+
+ uses interface-ref-state-container;
+ }
+ }
+
+ grouping interface-ref-state {
+ description
+ "Reusable opstate w/container for a reference to an
+ interface or subinterface";
+
+ container interface-ref {
+ description
+ "Reference to an interface or subinterface";
+
+ uses interface-ref-state-container;
+ }
+ }
+
+
+ grouping interface-common-config {
+ description
+ "Configuration data data nodes common to physical interfaces
+ and subinterfaces";
+
+ leaf name {
+ type string;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The name of the interface.
+ A device MAY restrict the allowed values for this leaf,
+ possibly depending on the type of the interface.
+ For system-controlled interfaces, this leaf is the
+ device-specific name of the interface. The 'config false'
+ list interfaces/interface[name]/state contains the currently
+ existing interfaces on the device.
+ If a client tries to create configuration for a
+ system-controlled interface that is not present in the
+ corresponding state list, the server MAY reject
+ the request if the implementation does not support
+ pre-provisioning of interfaces or if the name refers to
+ an interface that can never exist in the system. A
+ NETCONF server MUST reply with an rpc-error with the
+ error-tag 'invalid-value' in this case.
+ The IETF model in RFC 7223 provides YANG features for the
+ following (i.e., pre-provisioning and arbitrary-names),
+ however they are omitted here:
+ If the device supports pre-provisioning of interface
+ configuration, the 'pre-provisioning' feature is
+ advertised.
+ If the device allows arbitrarily named user-controlled
+ interfaces, the 'arbitrary-names' feature is advertised.
+ When a configured user-controlled interface is created by
+ the system, it is instantiated with the same name in the
+ /interfaces/interface[name]/state list.";
+ reference
+ "RFC 7223: A YANG Data Model for Interface Management";
+ }
+
+ leaf description {
+ type string;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ A textual description of the interface.
+ A server implementation MAY map this leaf to the ifAlias
+ MIB object. Such an implementation needs to use some
+ mechanism to handle the differences in size and characters
+ allowed between this leaf and ifAlias. The definition of
+ such a mechanism is outside the scope of this document.
+ Since ifAlias is defined to be stored in non-volatile
+ storage, the MIB implementation MUST map ifAlias to the
+ value of 'description' in the persistently stored
+ datastore.
+ Specifically, if the device supports ':startup', when
+ ifAlias is read the device MUST return the value of
+ 'description' in the 'startup' datastore, and when it is
+ written, it MUST be written to the 'running' and 'startup'
+ datastores. Note that it is up to the implementation to
+ decide whether to modify this single leaf in 'startup' or
+ perform an implicit copy-config from 'running' to
+ 'startup'.
+ If the device does not support ':startup', ifAlias MUST
+ be mapped to the 'description' leaf in the 'running'
+ datastore.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifAlias";
+ }
+
+ leaf enabled {
+ type boolean;
+ default "true";
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ This leaf contains the configured, desired state of the
+ interface.
+ Systems that implement the IF-MIB use the value of this
+ leaf in the 'running' datastore to set
+ IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
+ has been initialized, as described in RFC 2863.
+ Changes in this leaf in the 'running' datastore are
+ reflected in ifAdminStatus, but if ifAdminStatus is
+ changed over SNMP, this leaf is not affected.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
+ }
+
+ }
+
+ grouping interface-phys-config {
+ description
+ "Configuration data for physical interfaces";
+
+ leaf type {
+ type identityref {
+ base ietf-if:interface-type;
+ }
+ mandatory true;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The type of the interface.
+ When an interface entry is created, a server MAY
+ initialize the type leaf with a valid value, e.g., if it
+ is possible to derive the type from the name of the
+ interface.
+ If a client tries to set the type of an interface to a
+ value that can never be used by the system, e.g., if the
+ type is not supported or if the type does not match the
+ name of the interface, the server MUST reject the request.
+ A NETCONF server MUST reply with an rpc-error with the
+ error-tag 'invalid-value' in this case.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifType";
+ }
+
+ leaf mtu {
+ type uint16;
+ description
+ "Set the max transmission unit size in octets
+ for the physical interface. If this is not set, the mtu is
+ set to the operational default -- e.g., 1514 bytes on an
+ Ethernet interface.";
+ }
+
+ uses interface-common-config;
+ }
+
+ grouping interface-phys-holdtime-config {
+ description
+ "Configuration data for interface hold-time settings --
+ applies to physical interfaces.";
+
+ leaf up {
+ type uint32;
+ units milliseconds;
+ default 0;
+ description
+ "Dampens advertisement when the interface
+ transitions from down to up. A zero value means dampening
+ is turned off, i.e., immediate notification.";
+ }
+
+ leaf down {
+ type uint32;
+ units milliseconds;
+ default 0;
+ description
+ "Dampens advertisement when the interface transitions from
+ up to down. A zero value means dampening is turned off,
+ i.e., immediate notification.";
+ }
+ }
+
+ grouping interface-phys-holdtime-state {
+ description
+ "Operational state data for interface hold-time.";
+ }
+
+ grouping interface-phys-holdtime-top {
+ description
+ "Top-level grouping for setting link transition
+ dampening on physical and other types of interfaces.";
+
+ container hold-time {
+ description
+ "Top-level container for hold-time settings to enable
+ dampening advertisements of interface transitions.";
+
+ container config {
+ description
+ "Configuration data for interface hold-time settings.";
+
+ uses interface-phys-holdtime-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for interface hold-time.";
+
+ uses interface-phys-holdtime-config;
+ uses interface-phys-holdtime-state;
+ }
+ }
+ }
+
+ grouping interface-common-state {
+ description
+ "Operational state data (in addition to intended configuration)
+ at the global level for this interface";
+
+ leaf ifindex {
+ type uint32;
+ description
+ "System assigned number for each interface. Corresponds to
+ ifIndex object in SNMP Interface MIB";
+ reference
+ "RFC 2863 - The Interfaces Group MIB";
+ }
+
+ leaf admin-status {
+ type enumeration {
+ enum UP {
+ description
+ "Ready to pass packets.";
+ }
+ enum DOWN {
+ description
+ "Not ready to pass packets and not in some test mode.";
+ }
+ enum TESTING {
+ //TODO: This is generally not supported as a configured
+ //admin state, though it's in the standard interfaces MIB.
+ //Consider removing it.
+ description
+ "In some test mode.";
+ }
+ }
+ //TODO:consider converting to an identity to have the
+ //flexibility to remove some values defined by RFC 7223 that
+ //are not used or not implemented consistently.
+ mandatory true;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The desired state of the interface. In RFC 7223 this leaf
+ has the same read semantics as ifAdminStatus. Here, it
+ reflects the administrative state as set by enabling or
+ disabling the interface.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
+ }
+
+ leaf oper-status {
+ type enumeration {
+ enum UP {
+ value 1;
+ description
+ "Ready to pass packets.";
+ }
+ enum DOWN {
+ value 2;
+ description
+ "The interface does not pass any packets.";
+ }
+ enum TESTING {
+ value 3;
+ description
+ "In some test mode. No operational packets can
+ be passed.";
+ }
+ enum UNKNOWN {
+ value 4;
+ description
+ "Status cannot be determined for some reason.";
+ }
+ enum DORMANT {
+ value 5;
+ description
+ "Waiting for some external event.";
+ }
+ enum NOT_PRESENT {
+ value 6;
+ description
+ "Some component (typically hardware) is missing.";
+ }
+ enum LOWER_LAYER_DOWN {
+ value 7;
+ description
+ "Down due to state of lower-layer interface(s).";
+ }
+ }
+ //TODO:consider converting to an identity to have the
+ //flexibility to remove some values defined by RFC 7223 that
+ //are not used or not implemented consistently.
+ mandatory true;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The current operational state of the interface.
+ This leaf has the same semantics as ifOperStatus.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifOperStatus";
+ }
+
+ leaf last-change {
+ type yang:timeticks;
+ description
+ "Date and time of the last state change of the interface
+ (e.g., up-to-down transition). This corresponds to the
+ ifLastChange object in the standard interface MIB.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifLastChange";
+ }
+
+ }
+
+
+ grouping interface-counters-state {
+ description
+ "Operational state representing interface counters
+ and statistics. Some of these are adapted from RFC 7223";
+
+ //TODO: we may need to break this list of counters into those
+ //that would appear for physical vs. subinterface or logical
+ //interfaces. For now, just replicating the full stats
+ //grouping to both interface and subinterface.
+
+ container counters {
+ description
+ "A collection of interface-related statistics objects.";
+
+ reference
+ "RFC 7223 - A YANG Data Model for Interface
+ Management";
+
+ leaf in-octets {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The total number of octets received on the interface,
+ including framing characters.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
+ }
+
+ leaf in-unicast-pkts {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The number of packets, delivered by this sub-layer to a
+ higher (sub-)layer, that were not addressed to a
+ multicast or broadcast address at this sub-layer.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
+ }
+
+ leaf in-broadcast-pkts {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The number of packets, delivered by this sub-layer to a
+ higher (sub-)layer, that were addressed to a broadcast
+ address at this sub-layer.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCInBroadcastPkts";
+ }
+
+ leaf in-multicast-pkts {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The number of packets, delivered by this sub-layer to a
+ higher (sub-)layer, that were addressed to a multicast
+ address at this sub-layer. For a MAC-layer protocol,
+ this includes both Group and Functional addresses.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCInMulticastPkts";
+ }
+
+ leaf in-discards {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ Changed the counter type to counter64.
+ The number of inbound packets that were chosen to be
+ discarded even though no errors had been detected to
+ prevent their being deliverable to a higher-layer
+ protocol. One possible reason for discarding such a
+ packet could be to free up buffer space.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+
+
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifInDiscards";
+ }
+
+ leaf in-errors {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ Changed the counter type to counter64.
+ For packet-oriented interfaces, the number of inbound
+ packets that contained errors preventing them from being
+ deliverable to a higher-layer protocol. For character-
+ oriented or fixed-length interfaces, the number of
+ inbound transmission units that contained errors
+ preventing them from being deliverable to a higher-layer
+ protocol.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifInErrors";
+ }
+
+ leaf in-unknown-protos {
+ type yang:counter32;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ Changed the counter type to counter64.
+ For packet-oriented interfaces, the number of packets
+ received via the interface that were discarded because
+ of an unknown or unsupported protocol. For
+ character-oriented or fixed-length interfaces that
+ support protocol multiplexing, the number of
+ transmission units received via the interface that were
+ discarded because of an unknown or unsupported protocol.
+ For any interface that does not support protocol
+ multiplexing, this counter is not present.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
+ }
+
+ leaf out-octets {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ Changed the counter type to counter64.
+ The total number of octets transmitted out of the
+ interface, including framing characters.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
+ }
+
+ leaf out-unicast-pkts {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The total number of packets that higher-level protocols
+ requested be transmitted, and that were not addressed
+ to a multicast or broadcast address at this sub-layer,
+ including those that were discarded or not sent.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
+ }
+
+ leaf out-broadcast-pkts {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ The total number of packets that higher-level protocols
+ requested be transmitted, and that were addressed to a
+ broadcast address at this sub-layer, including those
+ that were discarded or not sent.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCOutBroadcastPkts";
+ }
+
+
+ leaf out-multicast-pkts {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ Changed the counter type to counter64.
+ The total number of packets that higher-level protocols
+ requested be transmitted, and that were addressed to a
+ multicast address at this sub-layer, including those
+ that were discarded or not sent. For a MAC-layer
+ protocol, this includes both Group and Functional
+ addresses.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCOutMulticastPkts";
+ }
+
+ leaf out-discards {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ Changed the counter type to counter64.
+ The number of outbound packets that were chosen to be
+ discarded even though no errors had been detected to
+ prevent their being transmitted. One possible reason
+ for discarding such a packet could be to free up buffer
+ space.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
+ }
+
+ leaf out-errors {
+ type yang:counter64;
+ description
+ "[adapted from IETF interfaces model (RFC 7223)]
+ Changed the counter type to counter64.
+ For packet-oriented interfaces, the number of outbound
+ packets that could not be transmitted because of errors.
+ For character-oriented or fixed-length interfaces, the
+ number of outbound transmission units that could not be
+ transmitted because of errors.
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifOutErrors";
+ }
+
+ leaf last-clear {
+ type yang:date-and-time;
+ description
+ "Indicates the last time the interface counters were
+ cleared.";
+ }
+ }
+ }
+
+ // data definition statements
+
+ grouping sub-unnumbered-config {
+ description
+ "Configuration data for unnumbered subinterfaces";
+
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "Indicates that the subinterface is unnumbered. By default
+ the subinterface is numbered, i.e., expected to have an
+ IP address configuration.";
+ }
+ }
+
+ grouping sub-unnumbered-state {
+ description
+ "Operational state data unnumbered subinterfaces";
+ }
+
+ grouping sub-unnumbered-top {
+ description
+ "Top-level grouping unnumbered subinterfaces";
+
+ container unnumbered {
+ description
+ "Top-level container for setting unnumbered interfaces.
+ Includes reference the interface that provides the
+ address information";
+
+ container config {
+ description
+ "Configuration data for unnumbered interface";
+
+ uses sub-unnumbered-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for unnumbered interfaces";
+
+ uses sub-unnumbered-config;
+ uses sub-unnumbered-state;
+ }
+
+ uses oc-if:interface-ref;
+ }
+ }
+
+ grouping subinterfaces-config {
+ description
+ "Configuration data for subinterfaces";
+
+ leaf index {
+ type uint32;
+ default 0;
+ description
+ "The index of the subinterface, or logical interface number.
+ On systems with no support for subinterfaces, or not using
+ subinterfaces, this value should default to 0, i.e., the
+ default subinterface.";
+ }
+
+ uses interface-common-config;
+
+ }
+
+ grouping subinterfaces-state {
+ description
+ "Operational state data for subinterfaces";
+
+ uses interface-common-state;
+ uses interface-counters-state;
+ }
+
+ grouping subinterfaces-top {
+ description
+ "Subinterface data for logical interfaces associated with a
+ given interface";
+
+ container subinterfaces {
+ description
+ "Enclosing container for the list of subinterfaces associated
+ with a physical interface";
+
+ list subinterface {
+ key "index";
+
+ description
+ "The list of subinterfaces (logical interfaces) associated
+ with a physical interface";
+
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+ description
+ "The index number of the subinterface -- used to address
+ the logical interface";
+ }
+
+ container config {
+ description
+ "Configurable items at the subinterface level";
+
+ uses subinterfaces-config;
+ }
+
+ container state {
+
+ config false;
+ description
+ "Operational state data for logical interfaces";
+
+ uses subinterfaces-config;
+ uses subinterfaces-state;
+ }
+ }
+ }
+ }
+
+ grouping interfaces-top {
+ description
+ "Top-level grouping for interface configuration and
+ operational state data";
+
+ container interfaces {
+ description
+ "Top level container for interfaces, including configuration
+ and state data.";
+
+
+ list interface {
+ key "name";
+
+ description
+ "The list of named interfaces on the device.";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ }
+ description
+ "References the configured name of the interface";
+ //TODO: need to consider whether this should actually
+ //reference the name in the state subtree, which
+ //presumably would be the system-assigned name, or the
+ //configured name. Points to the config/name now
+ //because of YANG 1.0 limitation that the list
+ //key must have the same "config" as the list, and
+ //also can't point to a non-config node.
+ }
+
+ container config {
+ description
+ "Configurable items at the global, physical interface
+ level";
+
+ uses interface-phys-config;
+ }
+
+ container state {
+
+ config false;
+ description
+ "Operational state data at the global interface level";
+
+ uses interface-phys-config;
+ uses interface-common-state;
+ uses interface-counters-state;
+ }
+
+ uses interface-phys-holdtime-top;
+ uses subinterfaces-top;
+ }
+ }
+ }
+
+ uses interfaces-top;
+
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-optical-amplifier@2016-03-31.yang b/models/openconfig-infinera/src/main/yang/openconfig-optical-amplifier@2016-03-31.yang
new file mode 100644
index 0000000..fcaec36
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-optical-amplifier@2016-03-31.yang
@@ -0,0 +1,285 @@
+module openconfig-optical-amplifier {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/optical-amplfier";
+
+ prefix "oc-opt-amp";
+
+ import openconfig-transport-line-common {
+ prefix oc-line-com;
+ revision-date "2016-03-31";
+ }
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+
+ // import tailf-common {prefix "tailf";}
+ // tailf:export netconf;
+ // tailf:export rest;
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This model describes configuration and operational state data
+ for optical amplifiers, deployed as part of a transport
+ line system.";
+
+ oc-ext:openconfig-version "0.1.0";
+
+ revision "2016-03-31" {
+ description
+ "Initial public release";
+ reference "0.1.0";
+ }
+
+ revision "2015-12-11" {
+ description
+ "Initial revision";
+ reference "TBD";
+ }
+
+ // extension statements
+
+ // feature statements
+
+ // identity statements
+
+ identity OPTICAL_AMPLIFIER_TYPE {
+ description
+ "Type definition for different types of optical amplifiers";
+ }
+
+ identity EDFA {
+ base OPTICAL_AMPLIFIER_TYPE;
+ description
+ "Erbium doped fiber amplifer (EDFA)";
+ }
+
+ identity FORWARD_RAMAN {
+ base OPTICAL_AMPLIFIER_TYPE;
+ description
+ "Forward pumping Raman amplifier";
+ }
+
+ identity BACKWARD_RAMAN {
+ base OPTICAL_AMPLIFIER_TYPE;
+ description
+ "Backward pumping Raman amplifier";
+ }
+
+ identity HYBRID {
+ base OPTICAL_AMPLIFIER_TYPE;
+ description
+ "Hybrid backward pumping Raman + EDFA amplifier";
+ }
+
+ identity GAIN_RANGE {
+ description
+ "Base type for expressing the gain range for a switched gain
+ amplifier. The gain range is expressed as a generic setting,
+ e.g., LOW/MID/HIGH. The actual db range will be determined
+ by the implementation.";
+ }
+
+ identity LOW_GAIN_RANGE {
+ base GAIN_RANGE;
+ description
+ "LOW gain range setting";
+ }
+
+ identity MID_GAIN_RANGE {
+ base GAIN_RANGE;
+ description
+ "MID gain range setting";
+ }
+
+ identity HIGH_GAIN_RANGE {
+ base GAIN_RANGE;
+ description
+ "HIGH gain range setting";
+ }
+
+ identity FIXED_GAIN_RANGE {
+ base GAIN_RANGE;
+ description
+ "Fixed or non-switched gain amplfier";
+ }
+
+ identity OPTICAL_AMPLIFIER_MODE {
+ description
+ "Type definition for different types of optical amplifier
+ operating modes";
+ }
+
+ identity CONSTANT_POWER {
+ base OPTICAL_AMPLIFIER_MODE;
+ description
+ "Constant power mode";
+ }
+
+ identity CONSTANT_GAIN {
+ base OPTICAL_AMPLIFIER_MODE;
+ description
+ "Constant gain mode";
+ }
+
+
+ // grouping statements
+
+ grouping optical-amplifier-config {
+ description
+ "Configuration data for optical amplifiers";
+
+ leaf name {
+ type string;
+ description
+ "User-defined name assigned to identify a specific amplifier
+ in the device";
+ }
+
+ leaf type {
+ type identityref {
+ base OPTICAL_AMPLIFIER_TYPE;
+ }
+ description
+ "Type of the amplifier";
+ }
+
+ leaf target-gain {
+ type decimal64 {
+ fraction-digits 2;
+ range 0..max;
+ }
+ units dB;
+ description
+ "Positive gain applied by the amplifier.";
+ }
+
+ leaf target-gain-tilt {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "Gain tilt control";
+ }
+
+ leaf gain-range {
+ type identityref {
+ base GAIN_RANGE;
+ }
+ description
+ "Selected gain range. The gain range is a platform-defined
+ value indicating the switched gain amplifier setting";
+ }
+
+ leaf amp-mode {
+ type identityref {
+ base OPTICAL_AMPLIFIER_MODE;
+ }
+ description
+ "The operating mode of the amplifier";
+ }
+
+ leaf output-power {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "Output optical power of the amplifier.";
+ }
+
+ }
+
+ grouping optical-amplifier-state {
+ description
+ "Operational state data for optical amplifiers";
+
+ leaf actual-gain {
+ type decimal64 {
+ fraction-digits 2;
+ range 0..max;
+ }
+ units dB;
+ description
+ "Actual gain applied by the amplifier.";
+ }
+
+ leaf actual-gain-tilt {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The actual gain tilt.";
+ }
+
+ leaf input-power {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "Input optical power of the amplifier.";
+ }
+ }
+
+ grouping optical-amplifier-top {
+ description
+ "Top-level grouping for optical amplifier data";
+
+ container optical-amplifiers {
+ description
+ "Enclosing container for list of amplifiers";
+
+ list amplifier {
+ key "name";
+ description
+ "List of optical amplifiers present in the device";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ }
+ description
+ "Reference to the name of the amplifier";
+ }
+
+ container config {
+ description
+ "Configuration data for the amplifier";
+
+ uses optical-amplifier-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for the amplifier";
+
+ uses optical-amplifier-config;
+ uses optical-amplifier-state;
+ }
+ }
+
+ uses oc-line-com:optical-osc-top;
+ }
+ }
+
+ // data definition statements
+
+ uses optical-amplifier-top;
+
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-platform-transceiver@2016-12-22.yang b/models/openconfig-infinera/src/main/yang/openconfig-platform-transceiver@2016-12-22.yang
new file mode 100644
index 0000000..739a96e
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-platform-transceiver@2016-12-22.yang
@@ -0,0 +1,487 @@
+module openconfig-platform-transceiver {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/platform/transceiver";
+
+ prefix "oc-transceiver";
+
+ // import some basic types
+ import openconfig-platform {
+ prefix oc-platform;
+ revision-date "2016-06-06";
+ }
+ import openconfig-interfaces {
+ prefix oc-if;
+ revision-date "2016-05-26";
+ }
+ import openconfig-transport-types {
+ prefix oc-opt-types;
+ revision-date "2016-12-22";
+ }
+ import openconfig-types {
+ prefix oc-types;
+ revision-date "2017-01-13";
+ }
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+
+ // import tailf-common {prefix "tailf";}
+ // tailf:export netconf;
+ // tailf:export rest;
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module defines configuration and operational state data
+ for transceivers (i.e., pluggable optics). The module should be
+ used in conjunction with the platform model where other
+ physical entity data are represented.
+ In the platform model, a component of type=TRANSCEIVER is
+ expected to be a subcomponent of a PORT component. This
+ module defines a concrete schema for the associated data for
+ components with type=TRANSCEIVER.";
+
+ oc-ext:openconfig-version "0.2.0";
+
+ revision "2016-12-22" {
+ description
+ "Adds preconfiguration data and clarified units";
+ reference "0.2.0";
+ }
+
+ // identity statements
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping optical-power-state {
+ description
+ "Reusable leaves related to optical power state -- these
+ are read-only state values. If avg/min/max statistics are
+ not supported, the target is expected to just supply the
+ instant value";
+
+ container output-power {
+ description
+ "The output optical power of this port in units of 0.01dBm.
+ If the port is an aggregate of multiple physical channels,
+ this attribute is the total power or sum of all channels.
+ Values include the instantaneous, average, minimum, and
+ maximum statistics. If avg/min/max statistics are not
+ supported, the target is expected to just supply the
+ instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-dBm;
+ }
+
+ container input-power {
+ description
+ "The input optical power of this port in units of 0.01dBm.
+ If the port is an aggregate of multiple physical channels,
+ this attribute is the total power or sum of all channels.
+ Values include the instantaneous, average, minimum, and
+ maximum statistics. If avg/min/max statistics are not
+ supported, the target is expected to just supply the
+ instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-dBm;
+ }
+
+ container laser-bias-current {
+ description
+ "The current applied by the system to the transmit laser to
+ achieve the output power. The current is expressed in mA
+ with up to two decimal precision. Values include the
+ instantaneous, average, minimum, and maximum statistics.
+ If avg/min/max statistics are not supported, the target is
+ expected to just supply the instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-mA;
+ }
+ }
+
+ grouping output-optical-frequency {
+ description
+ "Reusable leaves related to optical output power -- this is
+ typically configurable on line side and read-only on the
+ client-side";
+
+ leaf output-frequency {
+ type oc-opt-types:frequency-type;
+ description
+ "The frequency in MHz of the individual physical channel
+ (e.g. ITU C50 - 195.0THz and would be reported as
+ 195,000,000 MHz in this model). This attribute is not
+ configurable on most client ports.";
+ }
+ }
+
+
+ grouping physical-channel-config {
+ description
+ "Configuration data for physical client channels";
+
+ leaf index {
+ type uint16 {
+ range 0..max;
+ }
+ description
+ "Index of the physical channnel or lane within a physical
+ client port";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Text description for the client physical channel";
+ }
+
+ leaf tx-laser {
+ type boolean;
+ description
+ "Enable (true) or disable (false) the transmit label for the
+ channel";
+ }
+
+ leaf target-output-power {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "Target output optical power level of the optical channel,
+ expressed in increments of 0.01 dBm (decibel-milliwats)";
+ }
+ }
+
+ grouping physical-channel-state {
+ description
+ "Operational state data for client channels.";
+
+ uses output-optical-frequency;
+ uses optical-power-state;
+ }
+
+ grouping physical-channel-top {
+ description
+ "Top-level grouping for physical client channels";
+
+ container physical-channels {
+ description
+ "Enclosing container for client channels";
+
+ list channel {
+ key "index";
+ description
+ "List of client channels, keyed by index within a physical
+ client port. A physical port with a single channel would
+ have a single zero-indexed element";
+
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+ description
+ "Reference to the index number of the channel";
+ }
+
+ container config {
+ description
+ "Configuration data for physical channels";
+
+ uses physical-channel-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for channels";
+
+ uses physical-channel-config;
+ uses physical-channel-state;
+ }
+ }
+ }
+ }
+
+
+ grouping port-transceiver-config {
+ description
+ "Configuration data for client port transceivers";
+
+ leaf enabled {
+ type boolean;
+ description
+ "Turns power on / off to the transceiver -- provides a means
+ to power on/off the transceiver (in the case of SFP, SFP+,
+ QSFP,...) or enable high-power mode (in the case of CFP,
+ CFP2, CFP4) and is optionally supported (device can choose to
+ always enable). True = power on / high power, False =
+ powered off";
+ }
+
+ leaf form-factor-preconf {
+ type identityref {
+ base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE;
+ }
+ description
+ "Indicates the type of optical transceiver used on this
+ port. If the client port is built into the device and not
+ pluggable, then non-pluggable is the corresponding state. If
+ a device port supports multiple form factors (e.g. QSFP28
+ and QSFP+, then the value of the transceiver installed shall
+ be reported. If no transceiver is present, then the value of
+ the highest rate form factor shall be reported
+ (QSFP28, for example).
+ The form factor is included in configuration data to allow
+ pre-configuring a device with the expected type of
+ transceiver ahead of deployment. The corresponding state
+ leaf should reflect the actual transceiver type plugged into
+ the system.";
+ }
+
+ leaf ethernet-pmd-preconf {
+ type identityref {
+ base oc-opt-types:ETHERNET_PMD_TYPE;
+ }
+ description
+ "The Ethernet PMD is a property of the optical transceiver
+ used on the port, indicating the type of physical connection.
+ It is included in configuration data to allow pre-configuring
+ a port/transceiver with the expected PMD. The actual PMD is
+ indicated by the ethernet-pmd state leaf.";
+ }
+ }
+
+ grouping port-transceiver-state {
+ description
+ "Operational state data for client port transceivers";
+
+ leaf present {
+ type enumeration {
+ enum PRESENT {
+ description
+ "Transceiver is present on the port";
+ }
+ enum NOT_PRESENT {
+ description
+ "Transceiver is not present on the port";
+ }
+ }
+ description
+ "Indicates whether a transceiver is present in
+ the specified client port.";
+ }
+
+ leaf form-factor {
+ type identityref {
+ base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE;
+ }
+ description
+ "Indicates the type of optical transceiver used on this
+ port. If the client port is built into the device and not
+ pluggable, then non-pluggable is the corresponding state. If
+ a device port supports multiple form factors (e.g. QSFP28
+ and QSFP+, then the value of the transceiver installed shall
+ be reported. If no transceiver is present, then the value of
+ the highest rate form factor shall be reported
+ (QSFP28, for example).";
+ }
+
+ leaf connector-type {
+ type identityref {
+ base oc-opt-types:FIBER_CONNECTOR_TYPE;
+ }
+ description
+ "Connector type used on this port";
+ }
+
+ leaf internal-temp {
+ // TODO: this should probably be removed if we add temperature
+ // as a top-level component property, i.e., transceiver temp
+ // should be reported there.
+ type int16 {
+ range -40..125;
+ }
+ description
+ "Internally measured temperature in degrees Celsius. MSA
+ valid range is between -40 and +125C. Accuracy shall be
+ better than +/- 3 degC over the whole temperature range.";
+ }
+
+ leaf vendor {
+ type string {
+ length 1..16;
+ }
+ description
+ "Full name of transceiver vendor. 16-octet field that
+ contains ASCII characters, left-aligned and padded on the
+ right with ASCII spaces (20h)";
+ }
+
+ leaf vendor-part {
+ type string {
+ length 1..16;
+ }
+ description
+ "Transceiver vendor's part number. 16-octet field that
+ contains ASCII characters, left-aligned and padded on the
+ right with ASCII spaces (20h). If part number is undefined,
+ all 16 octets = 0h";
+ }
+
+ leaf vendor-rev {
+ type string {
+ length 1..2;
+ }
+ description
+ "Transceiver vendor's revision number. 2-octet field that
+ contains ASCII characters, left-aligned and padded on the
+ right with ASCII spaces (20h)";
+ }
+
+ //TODO: these compliance code leaves should be active based on
+ //the type of port
+ leaf ethernet-pmd {
+ type identityref {
+ base oc-opt-types:ETHERNET_PMD_TYPE;
+ }
+ description
+ "Ethernet PMD (physical medium dependent sublayer) that the
+ transceiver supports. The SFF/QSFP MSAs have registers for
+ this and CFP MSA has similar.";
+ }
+
+ leaf sonet-sdh-compliance-code {
+ type identityref {
+ base oc-opt-types:SONET_APPLICATION_CODE;
+ }
+ description
+ "SONET/SDH application code supported by the port";
+ }
+
+ leaf otn-compliance-code {
+ type identityref {
+ base oc-opt-types:OTN_APPLICATION_CODE;
+ }
+ description
+ "OTN application code supported by the port";
+ }
+
+ leaf serial-no {
+ type string {
+ length 1..16;
+ }
+ description
+ "Transceiver serial number. 16-octet field that contains
+ ASCII characters, left-aligned and padded on the right with
+ ASCII spaces (20h). If part serial number is undefined, all
+ 16 octets = 0h";
+ }
+
+ leaf date-code {
+ type yang:date-and-time;
+ description
+ "Representation of the transceiver date code, typically
+ stored as YYMMDD. The time portion of the value is
+ undefined and not intended to be read.";
+ }
+
+ leaf fault-condition {
+ type boolean;
+ description
+ "Indicates if a fault condition exists in the transceiver";
+ }
+
+ }
+
+ grouping port-transceiver-top {
+ description
+ "Top-level grouping for client port transceiver data";
+
+ container transceiver {
+ description
+ "Top-level container for client port transceiver data";
+
+ container config {
+ description
+ "Configuration data for client port transceivers";
+
+ uses port-transceiver-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for client port transceivers";
+
+ uses port-transceiver-config;
+ uses port-transceiver-state;
+ }
+ // physical channels are associated with a transceiver
+ // component
+ uses physical-channel-top;
+ }
+ }
+
+ // data definition statements
+
+ // augment statements
+
+ augment "/oc-platform:components/oc-platform:component" {
+ description
+ "Adding transceiver data to physical inventory";
+
+ uses port-transceiver-top {
+ when "current()/oc-platform:state/" +
+ "oc-platform:type = 'TRANSCEIVER'" {
+ description
+ "Augment is active when component is of type TRANSCEIVER";
+ }
+ }
+ }
+
+ augment "/oc-if:interfaces/oc-if:interface/oc-if:state" {
+ //TODO: add 'when' or other condition to make sure this
+ //leafref points to a component of type TRANSCEIVER.
+ description
+ "Adds a reference from the base interface to its corresponding
+ physical channels.";
+
+ leaf-list physical-channel {
+ type leafref {
+ path "/oc-platform:components/" +
+ "oc-platform:component[oc-platform:name=current()/../oc-platform:hardware-port]/" +
+ "oc-transceiver:transceiver/" +
+ "oc-transceiver:physical-channels/oc-transceiver:channel/" +
+ "oc-transceiver:index";
+ }
+ description
+ "For a channelized interface, list of references to the
+ physical channels (lanes) corresponding to the interface.";
+ }
+ }
+
+ // rpc statements
+
+ // notification statements
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-platform-types@2016-06-06.yang b/models/openconfig-infinera/src/main/yang/openconfig-platform-types@2016-06-06.yang
new file mode 100644
index 0000000..34e8e56
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-platform-types@2016-06-06.yang
@@ -0,0 +1,123 @@
+module openconfig-platform-types {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/platform-types";
+
+ prefix "oc-platform-types";
+
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module defines data types (e.g., YANG identities)
+ to support the OpenConfig component inventory model.";
+
+ oc-ext:openconfig-version "0.4.0";
+
+ revision "2016-06-06" {
+ description
+ "Public release";
+ reference "0.4.0";
+ }
+
+ // identity statements
+
+ identity OPENCONFIG_HARDWARE_COMPONENT {
+ description
+ "Base identity for hardware related components in a managed
+ device. Derived identities are partially based on contents
+ of the IANA Entity MIB.";
+ reference
+ "IANA Entity MIB and RFC 6933";
+ }
+
+
+ identity OPENCONFIG_SOFTWARE_COMPONENT {
+ description
+ "Base identity for software-related components in a managed
+ device";
+ }
+
+ // hardware types
+
+ identity CHASSIS {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Chassis component, typically with multiple slots / shelves";
+ }
+
+ identity BACKPLANE {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Backplane component for aggregating traffic, typically
+ contained in a chassis component";
+ }
+
+ identity POWER_SUPPLY {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Component that is supplying power to the device";
+ }
+
+ identity FAN {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Cooling fan, or could be some other heat-reduction component";
+ }
+
+ identity SENSOR {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Physical sensor, e.g., a temperature sensor in a chassis";
+ }
+
+ identity MODULE {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Replaceable hardware module, e.g., a daughtercard";
+ }
+
+ identity LINECARD {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Linecard component, typically inserted into a chassis slot";
+ }
+
+ identity PORT {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Physical port, e.g., for attaching pluggables and networking
+ cables";
+ }
+
+ identity TRANSCEIVER {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Pluggable module present in a port";
+ }
+
+ identity CPU {
+ base OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Processing unit, e.g., a management processor";
+ }
+
+ identity OPERATING_SYSTEM {
+ base OPENCONFIG_SOFTWARE_COMPONENT;
+ description
+ "Operating system running on a component";
+ }
+
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-platform@2016-06-06.yang b/models/openconfig-infinera/src/main/yang/openconfig-platform@2016-06-06.yang
new file mode 100644
index 0000000..97201ed
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-platform@2016-06-06.yang
@@ -0,0 +1,358 @@
+module openconfig-platform {
+
+ yang-version "1";
+
+ // namespace
+
+ namespace "http://openconfig.net/yang/platform";
+
+ prefix "oc-platform";
+
+ import openconfig-platform-types { prefix oc-platform-types; }
+ import openconfig-interfaces { prefix oc-if; }
+ import openconfig-extensions { prefix oc-ext; }
+
+ // import tailf-common {prefix "tailf";}
+ // tailf:export netconf;
+ // tailf:export rest;
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module defines a data model for representing a system
+ component inventory, which can include hardware or software
+ elements arranged in an arbitrary structure. The primary
+ relationship supported by the model is containment, e.g.,
+ components containing subcomponents.
+ It is expected that this model reflects every field replacable
+ unit on the device at a minimum (i.e., additional information
+ may be supplied about non-replacable components).
+ Every element in the inventory is termed a 'component' with each
+ component expected to have a unique name and type, and optionally
+ a unique system-assigned identifier and FRU number. The
+ uniqueness is guaranteed by the system within the device.
+ Components may have properties defined by the system that are
+ modeled as a list of key-value pairs. These may or may not be
+ user-configurable. The model provides a flag for the system
+ to optionally indicate which properties are user configurable.
+ Each component also has a list of 'subcomponents' which are
+ references to other components. Appearance in a list of
+ subcomponents indicates a containment relationship as described
+ above. For example, a linecard component may have a list of
+ references to port components that reside on the linecard.
+ This schema is generic to allow devices to express their own
+ platform-specific structure. It may be augmented by additional
+ component type-specific schemas that provide a common structure
+ for well-known component types. In these cases, the system is
+ expected to populate the common component schema, and may
+ optionally also represent the component and its properties in the
+ generic structure.
+ The properties for each component may include dynamic values,
+ e.g., in the 'state' part of the schema. For example, a CPU
+ component may report its utilization, temperature, or other
+ physical properties. The intent is to capture all platform-
+ specific physical data in one location, including inventory
+ (presence or absence of a component) and state (physical
+ attributes or status).";
+
+ oc-ext:openconfig-version "0.4.0";
+
+ revision "2016-06-06" {
+ description
+ "Public release";
+ reference "0.4.0";
+ }
+
+ // grouping statements
+
+
+ grouping platform-component-properties-config {
+ description
+ "System-defined configuration data for component properties";
+
+ leaf name {
+ type string;
+ description
+ "System-supplied name of the property -- this is typically
+ non-configurable";
+ }
+
+ leaf value {
+ type union {
+ type string;
+ type boolean;
+ type int64;
+ type uint64;
+ type decimal64 {
+ fraction-digits 2;
+ }
+ }
+ description
+ "Property values can take on a variety of types. Signed and
+ unsigned integer types may be provided in smaller sizes,
+ e.g., int8, uint16, etc.";
+ }
+ }
+
+ grouping platform-component-properties-state {
+ description
+ "Operational state data for component properties";
+
+ leaf configurable {
+ type boolean;
+ description
+ "Indication whether the property is user-configurable";
+ }
+ }
+
+ grouping platform-component-properties-top {
+ description
+ "Top-level grouping ";
+
+ container properties {
+ description
+ "Enclosing container ";
+
+ list property {
+ key "name";
+ description
+ "List of system properties for the component";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ }
+ description
+ "Reference to the property name.";
+ }
+
+ container config {
+ description
+ "Configuration data for each property";
+
+ uses platform-component-properties-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for each property";
+
+ uses platform-component-properties-config;
+ uses platform-component-properties-state;
+ }
+ }
+ }
+ }
+
+ grouping platform-subcomponent-ref-config {
+ description
+ "Configuration data for subcomponent references";
+
+ leaf name {
+ type leafref {
+ path "../../../../../component/config/name";
+ }
+ description
+ "Reference to the name of the subcomponent";
+ }
+ }
+
+ grouping platform-subcomponent-ref-state {
+ description
+ "Operational state data for subcomponent references";
+
+ }
+
+ grouping platform-subcomponent-ref-top {
+ description
+ "Top-level grouping for list of subcomponent references";
+
+ container subcomponents {
+ description
+ "Enclosing container for subcomponent references";
+
+ list subcomponent {
+ key "name";
+ description
+ "List of subcomponent references";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ }
+ description
+ "Reference to the name list key";
+ }
+
+ container config {
+ description
+ "Configuration data ";
+
+ uses platform-subcomponent-ref-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data ";
+
+ uses platform-subcomponent-ref-config;
+ uses platform-subcomponent-ref-state;
+ }
+ }
+ }
+ }
+
+ grouping platform-component-config {
+ description
+ "Configuration data for components";
+
+ leaf name {
+ type string;
+ description
+ "Device name for the component -- this will not be a
+ configurable parameter on many implementations";
+ }
+ }
+
+ grouping platform-component-state {
+ description
+ "Operational state data for device components.";
+
+ leaf type {
+ type union {
+ type identityref {
+ base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
+ }
+ type identityref {
+ base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
+ }
+ }
+ description
+ "Type of component as identified by the system";
+ }
+
+ leaf id {
+ type string;
+ description
+ "Unique identifier assigned by the system for the
+ component";
+ }
+
+ leaf description {
+ type string;
+ description
+ "System-supplied description of the component";
+ }
+
+ leaf mfg-name {
+ type string;
+ description
+ "System-supplied identifier for the manufacturer of the
+ component. This data is particularly useful when a
+ component manufacturer is different than the overall
+ device vendor.";
+ }
+
+ leaf version {
+ type string;
+ description
+ "System-defined version string for a hardware, firmware,
+ or software component.";
+ }
+
+ leaf serial-no {
+ type string;
+ description
+ "System-assigned serial number of the component.";
+ }
+
+ leaf part-no {
+ type string;
+ description
+ "System-assigned part number for the component. This should
+ be present in particular if the component is also an FRU
+ (field replacable unit)";
+ }
+ }
+
+ grouping platform-component-top {
+ description
+ "Top-level grouping for components in the device inventory";
+
+ container components {
+ description
+ "Enclosing container for the components in the system.";
+
+ list component {
+ key "name";
+ description
+ "List of components, keyed by component name.";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ }
+ description
+ "References the component name";
+ }
+
+ container config {
+ description
+ "Configuration data for each component";
+
+ uses platform-component-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for each component";
+
+ uses platform-component-config;
+ uses platform-component-state;
+ }
+
+ uses platform-component-properties-top;
+ uses platform-subcomponent-ref-top;
+ }
+ }
+ }
+
+ // data definition statements
+
+ uses platform-component-top;
+
+
+ // augments
+
+ augment "/oc-if:interfaces/oc-if:interface/oc-if:state" {
+ //TODO: add 'when' or other condition to make sure this
+ //leafref points to a component of type PORT.
+ description
+ "Adds a reference from the base interface to the corresponding
+ port in the device inventory.";
+
+ leaf hardware-port {
+ type leafref {
+ path "/oc-platform:components/oc-platform:component/" +
+ "oc-platform:name";
+ }
+ description
+ "References the hardware port in the device inventory";
+ }
+ }
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-terminal-device@2016-12-22.yang b/models/openconfig-infinera/src/main/yang/openconfig-terminal-device@2016-12-22.yang
new file mode 100644
index 0000000..3bea3e8
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-terminal-device@2016-12-22.yang
@@ -0,0 +1,1135 @@
+module openconfig-terminal-device {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/terminal-device";
+
+ prefix "oc-opt-term";
+
+ import openconfig-types {
+ prefix oc-types;
+ revision-date "2017-01-13";
+ }
+ import openconfig-transport-types {
+ prefix oc-opt-types;
+ revision-date "2016-12-22";
+ }
+ import openconfig-if-ethernet {
+ prefix oc-eth;
+ revision-date "2016-12-22";
+ }
+ import openconfig-platform {
+ prefix oc-platform;
+ revision-date "2016-06-06";
+ }
+ import openconfig-platform-transceiver {
+ prefix oc-transceiver;
+ revision-date "2016-12-22";
+ }
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ }
+ // import tailf-common { prefix "tailf";}
+ // tailf:export netconf;
+ // tailf:export rest;
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module describes a terminal optics device model for
+ managing the terminal systems (client and line side) in a
+ DWDM transport network.
+ Elements of the model:
+ physical port: corresponds to a physical, pluggable client
+ port on the terminal device. Examples includes 10G, 40G, 100G
+ (e.g., 10x10G, 4x25G or 1x100G) and 400G/1T in the future.
+ Physical client ports will have associated operational state or
+ PMs.
+ physical channel: a physical lane or channel in the
+ physical client port. Each physical client port has 1 or more
+ channels. An example is 100GBASE-LR4 client physical port having
+ 4x25G channels. Channels have their own optical PMs and can be
+ monitored independently within a client physical port (e.g.,
+ channel power). Physical client channels are defined in the
+ model as part of a physical client port, and are modeled
+ primarily for reading their PMs.
+ logical channel: a logical grouping of logical grooming elements
+ that may be assigned to subsequent grooming stages for
+ multiplexing / de-multiplexing, or to an optical channel for
+ line side transmission. The logical channels can represent, for
+ example, an ODU/OTU logical packing of the client
+ data onto the line side. Tributaries are similarly logical
+ groupings of demand that can be represented in this structure and
+ assigned to an optical channel. Note that different types of
+ logical channels may be present, each with their corresponding
+ PMs.
+ optical channel: corresponds to an optical carrier and is
+ assigned a wavelength/frequency. Optical channels have PMs
+ such as power, BER, and operational mode.
+ Directionality:
+ To maintain simplicity in the model, the configuration is
+ described from client-to-line direction. The assumption is that
+ equivalent reverse configuration is implicit, resulting in
+ the same line-to-client configuration.
+ Physical layout:
+ The model does not assume a particular physical layout of client
+ and line ports on the terminal device (e.g., such as number of
+ ports per linecard, separate linecards for client and line ports,
+ etc.).";
+
+ oc-ext:openconfig-version "0.4.0";
+
+ revision "2016-12-22" {
+ description
+ "Fixes and additions to terminal optics model";
+ reference "0.4.0";
+ }
+
+
+ grouping terminal-input-optical-power {
+ description
+ "Reusable leaves related to input optical power";
+
+ leaf input-power {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "The input optical power of this port in units of 0.01dBm.
+ If the port is an aggregate of multiple physical channels,
+ this attribute is the total power or sum of all channels.";
+ }
+ }
+
+ grouping terminal-ethernet-protocol-config {
+ description
+ "Configuration data for logical channels with Ethernet
+ framing";
+
+ //TODO:currently a empty container
+ }
+
+ grouping terminal-ethernet-protocol-state {
+ description
+ "Ethernet-specific counters when logical channel
+ is using Ethernet protocol framing, e.g., 10GE, 100GE";
+
+ uses oc-eth:ethernet-interface-state-counters;
+ }
+
+ grouping terminal-ethernet-protocol-top {
+ description
+ "Top-level grouping for data related to Ethernet protocol
+ framing on logical channels";
+
+ container ethernet {
+ description
+ "Top level container for data related to Ethernet framing
+ for the logical channel";
+
+ container config {
+ description
+ "Configuration data for Ethernet protocol framing on
+ logical channels";
+
+ uses terminal-ethernet-protocol-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state data for Ethernet protocol framing
+ on logical channels";
+
+ uses terminal-ethernet-protocol-state;
+ }
+ }
+ }
+
+ grouping terminal-otn-protocol-config {
+ description
+ "OTU configuration when logical channel
+ framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
+
+ leaf tti-msg-transmit {
+ type string;
+ description
+ "Trail trace identifier (TTI) message transmitted";
+ }
+
+ leaf tti-msg-expected {
+ type string;
+ description
+ "Trail trace identifier (TTI) message expected";
+ }
+
+ leaf tti-msg-auto {
+ type boolean;
+ description
+ "Trail trace identifier (TTI) transmit message automatically
+ created. If true, then setting a custom transmit message
+ would be invalid.";
+ }
+ }
+
+ grouping terminal-otn-protocol-counter-stats {
+ description
+ "Counter based statistics containers for logical channels
+ using OTN framing";
+
+ leaf errored-seconds {
+ type yang:counter64;
+ description
+ "The number of seconds that at least one errored blocks
+ occurs, at least one code violation occurs, loss of sync is
+ detected or loss of signal is detected";
+ }
+
+ leaf severely-errored-seconds {
+ type yang:counter64;
+ description
+ "The number of seconds that loss of frame is detected OR
+ the number of errored blocks, code violations, loss of sync
+ or loss of signal is detected exceeds a predefined
+ threshold";
+ }
+
+ leaf unavailable-seconds {
+ type yang:counter64;
+ description
+ "The number of seconds during which the link is unavailable";
+ }
+
+ leaf code-violations {
+ type yang:counter64;
+ description
+ "For ethernet or fiberchannel links, the number of 8b/10b
+ coding violations. For SONET/SDH, the number of BIP (bit
+ interleaved parity) errors";
+ }
+
+ leaf fec-uncorrectable-words {
+ type yang:counter64;
+ description
+ "The number words that were uncorrectable by the FEC";
+ }
+
+ leaf fec-corrected-bytes {
+ type yang:counter64;
+ description
+ "The number of bytes that were corrected by the FEC";
+ }
+
+ leaf fec-corrected-bits {
+ type yang:counter64;
+ description
+ "The number of bits that were corrected by the FEC";
+ }
+
+ leaf background-block-errors {
+ type yang:counter64;
+ description
+ "The number of background block errors";
+ }
+ }
+
+ grouping terminal-otn-protocol-multi-stats {
+ description
+ "Multi-value statistics containers for logical channels using
+ OTN framing (e.g., max, min, avg, instant)";
+
+ container pre-fec-ber {
+ description
+ "Bit error rate before forward error correction -- computed
+ value with 18 decimal precision. Note that decimal64
+ supports values as small as i x 10^-18 where i is an
+ integer. Values smaller than this should be reported as 0
+ to inidicate error free or near error free performance.
+ Values include the instantaneous, average, minimum, and
+ maximum statistics. If avg/min/max statistics are not
+ supported, the target is expected to just supply the
+ instant value";
+
+ uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
+ }
+
+ container post-fec-ber {
+ description
+ "Bit error rate after forward error correction -- computed
+ value with 18 decimal precision. Note that decimal64
+ supports values as small as i x 10^-18 where i is an
+ integer. Values smaller than this should be reported as 0
+ to inidicate error free or near error free performance.
+ Values include the instantaneous, average, minimum, and
+ maximum statistics. If avg/min/max statistics are not
+ supported, the target is expected to just supply the
+ instant value";
+
+ uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
+ }
+
+ container q-value {
+ description
+ "Quality value (factor) in dB of a channel with two
+ decimal precision. Values include the instantaneous,
+ average, minimum, and maximum statistics. If avg/min/max
+ statistics are not supported, the target is expected
+ to just supply the instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-dB;
+ }
+
+ container esnr {
+ description
+ "Electrical signal to noise ratio. Baud rate
+ normalized signal to noise ratio based on
+ error vector magnitude in dB with two decimal
+ precision. Values include the instantaneous, average,
+ minimum, and maximum statistics. If avg/min/max
+ statistics are not supported, the target is expected
+ to just supply the instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-dB;
+ }
+ }
+
+ grouping terminal-otn-protocol-state {
+ description
+ "OTU operational state when logical channel
+ framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
+
+
+ leaf tti-msg-recv {
+ type string;
+ description
+ "Trail trace identifier (TTI) message received";
+ }
+
+ leaf rdi-msg {
+ type string;
+ description
+ "Remote defect indication (RDI) message received";
+ }
+ uses terminal-otn-protocol-counter-stats;
+ uses terminal-otn-protocol-multi-stats;
+ }
+
+ grouping terminal-otn-protocol-top {
+ description
+ "Top-level grouping for data related to OTN protocol framing";
+
+ container otn {
+ description
+ "Top level container for OTU configuration when logical
+ channel framing is using an OTU protocol, e.g., OTU1, OTU3,
+ etc.";
+
+ container config {
+ description
+ "Configuration data for OTN protocol framing";
+
+ uses terminal-otn-protocol-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for OTN protocol PMs, statistics,
+ etc.";
+
+ uses terminal-otn-protocol-config;
+ uses terminal-otn-protocol-state;
+ }
+ }
+ }
+
+ grouping terminal-client-port-assignment-config {
+ description
+ "Configuration data for assigning physical client ports to
+ logical channels";
+
+ leaf index {
+ type uint32;
+ description
+ "Index of the client port assignment";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Descriptive name for the client port-to-logical channel
+ mapping";
+ }
+
+ leaf logical-channel {
+ type leafref {
+ path "/oc-opt-term:terminal-device/oc-opt-term:logical-channels" +
+ "/oc-opt-term:channel/oc-opt-term:index";
+ }
+ description
+ "Reference to the logical channel for this
+ assignment";
+ }
+
+ leaf allocation {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units Gbps;
+ description
+ "Allocation of the client physical port to the assigned
+ logical channel expressed in Gbps. In most cases,
+ the full client physical port rate is assigned to a single
+ logical channel.";
+ }
+
+ }
+
+ grouping terminal-client-port-assignment-state {
+ description
+ "Operational state data for assigning physical client ports
+ to logical channels";
+ }
+
+ grouping terminal-client-port-assignment-top {
+ description
+ "Top-level grouping for the assigment of client physical ports
+ to logical channels";
+ //TODO: this grouping could be removed, instead reusing a common
+ //grouping for logical client assignment pointers
+
+ container logical-channel-assignments {
+ description
+ "Enclosing container for client port to logical client
+ mappings";
+
+ list assignment {
+ key "index";
+ description
+ "List of assignments to logical clients";
+
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+ description
+ "Reference to the index of this logical client
+ assignment";
+ }
+
+ container config {
+ description
+ "Configuration data for the logical client assignment";
+
+ uses terminal-client-port-assignment-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for the logical client
+ assignment";
+
+ uses terminal-client-port-assignment-config;
+ uses terminal-client-port-assignment-state;
+ }
+ }
+ }
+ }
+
+
+ grouping terminal-logical-chan-assignment-config {
+ description
+ "Configuration data for assigning client logical channels
+ to line-side tributaries";
+
+ leaf index {
+ type uint32;
+ description
+ "Index of the current logical client channel to tributary
+ mapping";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Name assigned to the logical client channel";
+ }
+
+ leaf assignment-type {
+ type enumeration {
+ enum LOGICAL_CHANNEL {
+ description
+ "Subsequent channel is a logical channel";
+ }
+ enum OPTICAL_CHANNEL {
+ description
+ "Subsequent channel is a optical channel / carrier";
+ }
+ }
+ description
+ "Each logical channel element may be assigned to subsequent
+ stages of logical elements to implement further grooming, or
+ can be assigned to a line-side optical channel for
+ transmission. Each assignment also has an associated
+ bandwidth allocation.";
+ }
+
+ leaf logical-channel {
+ type leafref {
+ path "/oc-opt-term:terminal-device/" +
+ "oc-opt-term:logical-channels/oc-opt-term:channel/" +
+ "oc-opt-term:index";
+ }
+ must "../assignment-type = 'LOGICAL_CHANNEL'" {
+ description
+ "The assignment-type must be set to LOGICAL_CHANNEL for
+ this leaf to be valid";
+ }
+ description
+ "Reference to another stage of logical channel elements.";
+ }
+
+ leaf optical-channel {
+ type leafref {
+ path "/oc-platform:components/oc-platform:component/" +
+ "oc-platform:name";
+ }
+ must "../assignment-type = 'OPTICAL_CHANNEL'" {
+ description
+ "The assignment-type must be set to OPTICAL_CHANNEL for
+ this leaf to be valid";
+ }
+ description
+ "Reference to the line-side optical channel that should
+ carry the current logical channel element. Use this
+ reference to exit the logical element stage.";
+ }
+
+ leaf allocation {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units Gbps;
+ description
+ "Allocation of the logical client channel to the tributary
+ or sub-channel, expressed in Gbps";
+ }
+
+ }
+
+ grouping terminal-logical-chan-assignment-state {
+ description
+ "Operational state data for the assignment of logical client
+ channel to line-side tributary";
+ }
+
+ grouping terminal-logical-chan-assignment-top {
+ description
+ "Top-level grouping for the list of logical client channel-to-
+ tributary assignments";
+
+ container logical-channel-assignments {
+ //TODO: we need a commonly understood name for this logical
+ //channel structure
+ description
+ "Enclosing container for tributary assignments";
+
+ list assignment {
+ key "index";
+ description
+ "Logical channel elements may be assigned directly to
+ optical channels for line-side transmission, or can be
+ further groomed into additional stages of logical channel
+ elements. The grooming can multiplex (i.e., split the
+ current element into multiple elements in the subsequent
+ stage) or de-multiplex (i.e., combine the current element
+ with other elements into the same element in the subsequent
+ stage) logical elements in each stage.
+ Note that to support the ability to groom the logical
+ elements, the list of logical channel elements should be
+ populated with an entry for the logical elements at
+ each stage, starting with the initial assignment from the
+ respective client physical port.
+ Each logical element assignment consists of a pointer to
+ an element in the next stage, or to an optical channel,
+ along with a bandwidth allocation for the corresponding
+ assignment (e.g., to split or combine signal).";
+
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+ description
+ "Reference to the index for the current tributary
+ assignment";
+ }
+
+ container config {
+ description
+ "Configuration data for tributary assignments";
+
+ uses terminal-logical-chan-assignment-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for tributary assignments";
+
+ uses terminal-logical-chan-assignment-config;
+ uses terminal-logical-chan-assignment-state;
+ }
+ }
+ }
+ }
+
+ grouping terminal-logical-channel-ingress-config {
+ description
+ "Configuration data for ingress signal to logical channel";
+
+ leaf transceiver {
+ type leafref {
+ path "/oc-platform:components/oc-platform:component/" +
+ "oc-platform:name";
+ }
+ description
+ "Reference to the transceiver carrying the input signal
+ for the logical channel. If specific physical channels
+ are mapped to the logical channel (as opposed to all
+ physical channels carried by the transceiver), they can be
+ specified in the list of physical channel references.";
+ }
+
+ leaf-list physical-channel {
+ type leafref {
+ path "/oc-platform:components/oc-platform:component/" +
+ "oc-transceiver:transceiver/" +
+ "oc-transceiver:physical-channels/" +
+ "oc-transceiver:channel/oc-transceiver:index";
+ }
+ description
+ "This list should be populated with references
+ to the client physical channels that feed this logical
+ channel from the transceiver specified in the 'transceiver'
+ leaf, which must be specified. If this leaf-list is empty,
+ all physical channels in the transceiver are assumed to be
+ mapped to the logical channel.";
+ }
+ }
+
+ grouping terminal-logical-channel-ingress-state {
+ description
+ "Operational state data for ingress signal to logical channel";
+ }
+
+ grouping terminal-logical-channel-ingress-top {
+ description
+ "Top-level grouping for ingress signal to logical channel";
+
+ container ingress {
+ description
+ "Top-level container for specifying references to the
+ source of signal for the logical channel, either a
+ transceiver or individual physical channels";
+
+ container config {
+ description
+ "Configuration data for the signal source for the
+ logical channel";
+
+ uses terminal-logical-channel-ingress-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for the signal source for the
+ logical channel";
+
+ uses terminal-logical-channel-ingress-config;
+ uses terminal-logical-channel-ingress-state;
+ }
+ }
+ }
+
+ grouping terminal-logical-channel-config {
+ description
+ "Configuration data for logical channels";
+
+ leaf index {
+ type uint32;
+ description
+ "Index of the current logical channel";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Description of the logical channel";
+ }
+
+ leaf admin-state {
+ type oc-opt-types:admin-state-type;
+ description
+ "Sets the admin state of the logical channel";
+ }
+
+ leaf rate-class {
+ type identityref {
+ base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE;
+ }
+ description
+ "Rounded bit rate of the tributary signal. Exact bit rate
+ will be refined by protocol selection.";
+ }
+
+ leaf trib-protocol {
+ type identityref {
+ base oc-opt-types:TRIBUTARY_PROTOCOL_TYPE;
+ }
+ description
+ "Protocol framing of the tributary signal. If this
+ LogicalChannel is directly connected to a Client-Port or
+ Optical-Channel, this is the protocol of the associated port.
+ If the LogicalChannel is connected to other LogicalChannels,
+ the TributaryProtocol of the LogicalChannels will define a
+ specific mapping/demapping or multiplexing/demultiplexing
+ function.
+ Not all protocols are valid, depending on the value
+ of trib-rate-class. The expectation is that the NMS
+ will validate that a correct combination of rate class
+ and protocol are specfied. Basic combinations are:
+ rate class: 1G
+ protocols: 1GE
+ rate class: 2.5G
+ protocols: OC48, STM16
+ rate class: 10G
+ protocols: 10GE LAN, 10GE WAN, OC192, STM64, OTU2, OTU2e,
+ OTU1e, ODU2, ODU2e, ODU1e
+ rate class: 40G
+ protocols: 40GE, OC768, STM256, OTU3, ODU3
+ rate class: 100G
+ protocols: 100GE, 100G MLG, OTU4, OTUCn, ODU4";
+ }
+
+ leaf logical-channel-type {
+ type identityref {
+ base oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE;
+ }
+ description
+ "The type / stage of the logical element determines the
+ configuration and operational state parameters (PMs)
+ available for the logical element";
+ }
+
+ leaf loopback-mode {
+ type oc-opt-types:loopback-mode-type;
+ description
+ "Sets the loopback type on the logical channel. Setting the
+ mode to something besides NONE activates the loopback in
+ the specified mode.";
+ }
+ }
+
+
+ grouping terminal-logical-channel-state {
+ description
+ "Operational state data for logical client channels";
+
+ leaf link-state {
+ type enumeration {
+ enum UP {
+ description
+ "Logical channel is operationally up";
+ }
+ enum DOWN {
+ description
+ "Logical channel is operationally down";
+ }
+ }
+ description
+ "Link-state of the Ethernet protocol on the logical channel,
+ SONET / SDH framed signal, etc.";
+ }
+
+ }
+
+ grouping terminal-logical-channel-top {
+ description
+ "Top-level grouping for logical channels";
+
+ container logical-channels {
+ description
+ "Enclosing container the list of logical channels";
+
+ list channel {
+ key "index";
+ description
+ "List of logical channels";
+ //TODO: naming for this list of logical elements should be
+ //revisited.
+
+ leaf index {
+ type string;
+ // type leafref {
+ // path "../config/index";
+ // }
+ description
+ "Reference to the index of the logical channel";
+ }
+
+ container config {
+ description
+ "Configuration data for logical channels";
+
+ uses terminal-logical-channel-config;
+
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for logical channels";
+
+ uses terminal-logical-channel-config;
+ uses terminal-logical-channel-state;
+ }
+
+ uses terminal-otn-protocol-top {
+ when "config/logical-channel-type = 'PROT_OTN'" {
+ description
+ "Include the OTN protocol data only when the
+ channel is using OTN framing.";
+ }
+ }
+ uses terminal-ethernet-protocol-top {
+ when "config/logical-channel-type = 'oc-opt-types:PROT_ETHERNET'" {
+ description
+ "Include the Ethernet protocol statistics only when the
+ protocol used by the link is Ethernet.";
+ }
+ }
+ uses terminal-logical-channel-ingress-top;
+ uses terminal-logical-chan-assignment-top;
+ }
+ }
+ }
+
+
+ grouping terminal-optical-channel-config {
+ description
+ "Configuration data for describing optical channels";
+
+ leaf frequency {
+ type oc-opt-types:frequency-type;
+ description
+ "Frequency of the optical channel, expressed in MHz";
+ }
+
+ leaf target-output-power {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "Target output optical power level of the optical channel,
+ expressed in increments of 0.01 dBm (decibel-milliwats)";
+ }
+
+ leaf operational-mode {
+ type uint16;
+ description
+ "Vendor-specific mode identifier -- sets the operational
+ mode for the channel. The specified operational mode must
+ exist in the list of supported operational modes supplied
+ by the device";
+ //
+ // Ideally, this leaf should be a leafref to the supported
+ // operational modes, but YANG 1.0 does not allow a r/w
+ // leaf to be a leafref to a r/o leaf.
+ }
+
+
+ leaf line-port {
+ type leafref {
+ path "/oc-platform:components/oc-platform:component/" +
+ "oc-platform:name";
+ }
+ description
+ "Reference to the line-side physical port that carries
+ this optical channel. The target port should be
+ a component in the physical inventory data model.";
+ }
+ }
+
+ grouping terminal-optical-channel-state {
+ description
+ "Operational state data for optical channels";
+
+ leaf group-id {
+ type uint32;
+ description
+ "If the device places constraints on which optical
+ channels must be managed together (e.g., transmitted on the
+ same line port), it can indicate that by setting the group-id
+ to the same value across related optical channels.";
+ }
+
+ uses oc-transceiver:optical-power-state;
+
+ container chromatic-dispersion {
+ description
+ "Chromatic Dispersion of an optical channel in
+ picoseconds / nanometer (ps/nm) as reported by receiver
+ with two decimal precision. Values include the instantaneous,
+ average, minimum, and maximum statistics. If avg/min/max
+ statistics are not supported, the target is expected to just
+ supply the instant value";
+
+ uses oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm;
+ }
+
+ container polarization-mode-dispersion {
+ description
+ "Polarization Mode Dispersion of an optical channel
+ in picosends (ps) as reported by receiver with two decimal
+ precision. Values include the instantaneous, average,
+ minimum, and maximum statistics. If avg/min/max statistics
+ are not supported, the target is expected to just supply the
+ instant value";
+
+ uses oc-opt-types:avg-min-max-instant-stats-precision2-ps;
+ }
+
+ container second-order-polarization-mode-dispersion {
+ description
+ "Second Order Polarization Mode Dispersion of an optical
+ channel in picoseconds squared (ps^2) as reported by
+ receiver with two decimal precision. Values include the
+ instantaneous, average, minimum, and maximum statistics.
+ If avg/min/max statistics are not supported, the target
+ is expected to just supply the instant value";
+
+ uses oc-opt-types:avg-min-max-instant-stats-precision2-ps2;
+ }
+
+ container polarization-dependent-loss {
+ description
+ "Polarization Dependent Loss of an optical channel
+ in dB as reported by receiver with two decimal precision.
+ Values include the instantaneous, average, minimum, and
+ maximum statistics. If avg/min/max statistics are not
+ supported, the target is expected to just supply the
+ instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-dB;
+ }
+ }
+
+ grouping terminal-optical-channel-top {
+ description
+ "Top-level grouping for optical channel data";
+
+ container optical-channel {
+ description
+ "Enclosing container for the list of optical channels";
+
+ container config {
+ description
+ "Configuration data for optical channels";
+
+ uses terminal-optical-channel-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for optical channels";
+
+ uses terminal-optical-channel-config;
+ uses terminal-optical-channel-state;
+ }
+ }
+ }
+
+ grouping terminal-operational-mode-config {
+ description
+ "Configuration data for vendor-supported operational modes";
+ }
+
+ grouping terminal-operational-mode-state {
+ description
+ "Operational state data for vendor-supported operational
+ modes";
+
+ leaf mode-id {
+ type uint16;
+ description
+ "Two-octet encoding of the vendor-defined operational
+ mode";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Vendor-supplied textual description of the characteristics
+ of this operational mode to enable operators to select the
+ appropriate mode for the application.";
+ }
+
+ //TODO: examples of the kind of info that would be useful to
+ //report in the operational mode:
+ //Symbol rate (32G, 40G, 43G, 64G, etc.)
+ //Modulation (QPSK, 8-QAM, 16-QAM, etc.)
+ //Differential encoding (on, off/pilot symbol, etc)
+ //State of polarization tracking mode (default, med.
+ //high-speed, etc.)
+ //Pulse shaping (RRC, RC, roll-off factor)
+ //FEC mode (SD, HD, % OH)
+
+ leaf vendor-id {
+ type string;
+ description
+ "Identifier to represent the vendor / supplier of the
+ platform and the associated operational mode information";
+ }
+ }
+
+ grouping terminal-operational-mode-top {
+ description
+ "Top-level grouping for vendor-supported operational modes";
+
+ container operational-modes {
+ description
+ "Enclosing container for list of operational modes";
+
+ list mode {
+ key "mode-id";
+ config false;
+ description
+ "List of operational modes supported by the platform.
+ The operational mode provides a platform-defined summary
+ of information such as symbol rate, modulation, pulse
+ shaping, etc.";
+
+ leaf mode-id {
+ type leafref {
+ path "../state/mode-id";
+ }
+ description
+ "Reference to mode-id";
+ }
+
+ container config {
+ description
+ "Configuration data for operational mode";
+
+ uses terminal-operational-mode-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for the platform-defined
+ operational mode";
+
+ uses terminal-operational-mode-config;
+ uses terminal-operational-mode-state;
+ }
+ }
+ }
+ }
+
+
+ grouping terminal-device-config {
+ description
+ "Configuration data for transport terminal devices at a
+ device-wide level";
+ }
+
+ grouping terminal-device-state {
+ description
+ "Operational state data for transport terminal devices at a
+ device-wide level";
+ }
+
+ grouping terminal-device-top {
+ description
+ "Top-level grouping for data for terminal devices";
+
+ container terminal-device {
+ description
+ "Top-level container for the terminal device";
+
+ container config {
+ description
+ "Configuration data for global terminal-device";
+
+ uses terminal-device-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for global terminal device";
+
+ uses terminal-device-config;
+ uses terminal-device-state;
+ }
+
+ uses terminal-logical-channel-top;
+ uses terminal-operational-mode-top;
+
+ }
+ }
+
+ // data definition statements
+
+ uses terminal-device-top;
+
+ // augment statements
+
+/* augment "/oc-platform:components/oc-platform:component" {
+ when "/oc-platform:components/oc-platform:component/" +
+ "oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL'" {
+ description
+ "Augment is active when component is of type
+ OPTICAL_CHANNEL";
+ }
+ description
+ "Adding optical channel data to physical inventory";
+
+ uses terminal-optical-channel-top {
+ }
+ }
+*/
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-transport-line-common@2016-03-31.yang b/models/openconfig-infinera/src/main/yang/openconfig-transport-line-common@2016-03-31.yang
new file mode 100644
index 0000000..5f03d55
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-transport-line-common@2016-03-31.yang
@@ -0,0 +1,233 @@
+module openconfig-transport-line-common {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/transport-line-common";
+
+ prefix "oc-line-com";
+
+ // import some basic types
+ import openconfig-platform {
+ prefix oc-platform;
+ revision-date "2016-06-06";
+ }
+ import openconfig-platform-types {
+ prefix oc-platform-types;
+ revision-date "2016-06-06";
+ }
+ import openconfig-interfaces {
+ prefix oc-if;
+ revision-date "2016-05-26";
+ }
+ import iana-if-type {
+ prefix ift;
+ revision-date "2016-11-23";
+ }
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+
+ // import tailf-common {prefix "tailf";}
+ // tailf:export netconf;
+ // tailf:export rest;
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module defines common data elements for OpenConfig data
+ models for optical transport line system elements, such as
+ amplifiers and ROADMs (wavelength routers).";
+
+ oc-ext:openconfig-version "0.1.0";
+
+ revision "2016-03-31" {
+ description
+ "Initial public release";
+ reference "0.1.0";
+ }
+
+
+ // extension statements
+
+ // feature statements
+
+ // identity statements
+
+ identity OPTICAL_LINE_PORT_TYPE {
+ description
+ "Type definition for optical node port types";
+ }
+
+ identity INGRESS {
+ base OPTICAL_LINE_PORT_TYPE;
+ description
+ "Ingress port, corresponding to a signal entering
+ a line device such as an amplifier or wavelength
+ router.";
+ }
+
+ identity EGRESS {
+ base OPTICAL_LINE_PORT_TYPE;
+ description
+ "Egress port, corresponding to a signal exiting
+ a line device wavelength router.";
+ }
+
+ identity ADD {
+ base OPTICAL_LINE_PORT_TYPE;
+ description
+ "Add port, corresponding to a signal injected
+ at a wavelength router.";
+ }
+
+ identity DROP {
+ base OPTICAL_LINE_PORT_TYPE;
+ description
+ "Drop port, corresponding to a signal dropped
+ at a wavelength router.";
+ }
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping optical-osc-config {
+ description
+ "Configuration data for OSC interfaces";
+
+ leaf-list interface {
+ type oc-if:base-interface-ref;
+ description
+ "List of references to OSC interfaces";
+ }
+ }
+
+ grouping optical-osc-state {
+ description
+ "Operational state data for OSC interfaces";
+ }
+
+
+
+ grouping optical-osc-top {
+ description
+ "Top-level grouping for configuration and operational state
+ data for optical supervisory channels (OSC) for amplifiers,
+ WSS/ROADM, nodes, etc.";
+
+ container supervisory-channels {
+ description
+ "Top-level container for OSC data";
+
+ container config {
+ description
+ "Configuration data for OSCs";
+
+ uses optical-osc-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for OSCs";
+
+ uses optical-osc-config;
+ uses optical-osc-state;
+ }
+ }
+ }
+
+
+ grouping transport-line-common-port-config {
+ description
+ "Configuration data for optical line ports";
+ }
+
+ grouping transport-line-common-port-state {
+ description
+ "Operational state data describing optical line ports";
+
+ leaf optical-port-type {
+ type identityref {
+ base OPTICAL_LINE_PORT_TYPE;
+ }
+ description
+ "Indicates the type of transport line port. This is an
+ informational field that should be made available by the
+ device (e.g., in the openconfig-platform model).";
+ }
+ }
+
+ grouping transport-line-common-port-top {
+ description
+ "Top-level grouping ";
+
+ container optical-port {
+ description
+ "Top-level container ";
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for optical line ports";
+
+ uses transport-line-common-port-config;
+ uses transport-line-common-port-state;
+ }
+ }
+ }
+
+
+
+ // data definition statements
+
+ // uses optical-osc-top;
+
+ // augment statements
+/*
+ augment "/oc-platform:components/oc-platform:component" {
+ description
+ "Adding optical line port data to platform model";
+
+ uses transport-line-common-port-top {
+ when "/oc-platform:components/oc-platform:component/" +
+ "oc-platform:state/oc-platform:type = 'oc-platform-types:PORT'" {
+ description
+ "Augment is active when component is of type
+ PORT";
+ }
+ }
+ }
+*/
+ //TODO:this is placeholder until SONET model is added
+ //to interfaces model
+/* augment "/oc-if:interfaces/oc-if:interface" {
+ when "oc-if:type = 'ift:sonet'" {
+ description "Additional interface configuration parameters when
+ the interface type is SONET/SDH";
+ }
+ description "Adds additional SONET/SDH-specific data to
+ osc model";
+
+ container sonet {
+ description
+ "Data related to SONET/SDH interfaces";
+ }
+ }
+*/
+ // rpc statements
+
+ // notification statements
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-transport-types@2016-12-22.yang b/models/openconfig-infinera/src/main/yang/openconfig-transport-types@2016-12-22.yang
new file mode 100644
index 0000000..1b15e68
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-transport-types@2016-12-22.yang
@@ -0,0 +1,765 @@
+module openconfig-transport-types {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/transport-types";
+
+ prefix "oc-opt-types";
+
+ import openconfig-platform-types {
+ prefix oc-platform-types;
+ revision-date "2016-06-06";
+ }
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module contains general type definitions and identities
+ for optical transport models.";
+
+ oc-ext:openconfig-version "0.4.0";
+
+ revision "2016-12-22" {
+ description
+ "Fixes and additions for terminal optics model";
+ reference "0.4.0";
+ }
+
+ // typedef statements
+
+ typedef frequency-type {
+ type uint64;
+ units "MHz";
+ description
+ "Type for optical spectrum frequency values";
+ }
+
+ typedef admin-state-type {
+ type enumeration {
+ enum ENABLED {
+ description
+ "Sets the channel admin state to enabled";
+ }
+ enum DISABLED {
+ description
+ "Sets the channel admin state to disabled";
+ }
+ enum MAINT {
+ description
+ "Sets the channel to maintenance / diagnostic mode";
+ }
+ }
+ description "Administrative state modes for
+ logical channels in the transponder model.";
+ }
+
+ typedef loopback-mode-type {
+ type enumeration {
+ enum NONE {
+ description
+ "No loopback is applied";
+ }
+ enum FACILITY {
+ description
+ "A loopback which directs traffic normally transmitted
+ on the port back to the device as if received on the same
+ port from an external source.";
+ }
+ enum TERMINAL {
+ description
+ "A loopback which directs traffic received from an external
+ source on the port back out the transmit side of the same
+ port.";
+ }
+ }
+ default NONE;
+ description
+ "Loopback modes for transponder logical channels";
+ }
+
+ // grouping statements
+
+ grouping avg-min-max-instant-stats-precision2-ps-nm {
+ description
+ "Common grouping for recording picosecond per nanometer
+ values with 2 decimal precision. Values include the
+ instantaneous, average, minimum, and maximum statistics";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps-nm;
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps-nm;
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps-nm;
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps-nm;
+ description
+ "The maximum value of the statistic over the sampling
+ period";
+ }
+ }
+
+ grouping avg-min-max-instant-stats-precision2-ps {
+ description
+ "Common grouping for recording picosecond values with
+ 2 decimal precision. Values include the instantaneous,
+ average, minimum, and maximum statistics";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps;
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps;
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps;
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps;
+ description
+ "The maximum value of the statistic over the sampling
+ period";
+ }
+ }
+
+ grouping avg-min-max-instant-stats-precision2-ps2 {
+ description
+ "Common grouping for recording picosecond^2 values with
+ 2 decimal precision. Values include the instantaneous,
+ average, minimum, and maximum statistics";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps^2;
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps^2;
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps^2;
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units ps^2;
+ description
+ "The maximum value of the statistic over the sampling
+ period";
+ }
+ }
+
+ grouping avg-min-max-instant-stats-precision18-ber {
+ description
+ "Common grouping for recording bit error rate (BER) values
+ with 18 decimal precision. Note that decimal64 supports
+ values as small as i x 10^-18 where i is an integer. Values
+ smaller than this should be reported as 0 to inidicate error
+ free or near error free performance. Values include the
+ instantaneous, average, minimum, and maximum statistics";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 18;
+ }
+ units bit-errors-per-second;
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 18;
+ }
+ units bit-errors-per-second;
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 18;
+ }
+ units bit-errors-per-second;
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 18;
+ }
+ units bit-errors-per-second;
+ description
+ "The maximum value of the statistic over the sampling
+ period";
+ }
+ }
+
+ // identity statements
+
+ identity TRIBUTARY_PROTOCOL_TYPE {
+ description
+ "Base identity for protocol framing used by tributary
+ signals.";
+ }
+
+ identity PROT_1GE {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "1G Ethernet protocol";
+ }
+
+ identity PROT_OC48 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OC48 protocol";
+ }
+
+ identity PROT_STM16 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "STM 16 protocol";
+ }
+
+ identity PROT_10GE_LAN {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "10G Ethernet LAN protocol";
+ }
+
+ identity PROT_10GE_WAN {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "10G Ethernet WAN protocol";
+ }
+
+ identity PROT_OC192 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OC 192 (9.6GB) port protocol";
+ }
+
+ identity PROT_STM64 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "STM 64 protocol";
+ }
+
+ identity PROT_OTU2 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OTU 2 protocol";
+ }
+
+ identity PROT_OTU2E {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OTU 2e protocol";
+ }
+
+ identity PROT_OTU1E {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OTU 1e protocol";
+ }
+
+ identity PROT_ODU2 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "ODU 2 protocol";
+ }
+
+ identity PROT_ODU2E {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "ODU 2e protocol";
+ }
+
+ identity PROT_40GE {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "40G Ethernet port protocol";
+ }
+
+ identity PROT_OC768 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OC 768 protocol";
+ }
+
+ identity PROT_STM256 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "STM 256 protocol";
+ }
+
+ identity PROT_OTU3 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OTU 3 protocol";
+ }
+
+ identity PROT_ODU3 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "ODU 3 protocol";
+ }
+
+ identity PROT_100GE {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "100G Ethernet protocol";
+ }
+
+ identity PROT_100G_MLG {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "100G MLG protocol";
+ }
+
+ identity PROT_OTU4 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OTU4 signal protocol (112G) for transporting
+ 100GE signal";
+ }
+
+ identity PROT_OTUCN {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "OTU Cn protocol";
+ }
+
+ identity PROT_ODU4 {
+ base TRIBUTARY_PROTOCOL_TYPE;
+ description "ODU 4 protocol";
+ }
+
+ identity TRANSCEIVER_FORM_FACTOR_TYPE {
+ description
+ "Base identity for identifying the type of pluggable optic
+ transceiver (i.e,. form factor) used in a port.";
+ }
+
+ identity CFP {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "C form-factor pluggable, that can support up to a
+ 100 Gb/s signal with 10x10G or 4x25G physical channels";
+ }
+
+ identity CFP2 {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "1/2 C form-factor pluggable, that can support up to a
+ 200 Gb/s signal with 10x10G, 4x25G, or 8x25G physical
+ channels";
+ }
+
+ identity CFP2_ACO {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "CFP2 analog coherent optics transceiver, supporting
+ 100 Gb, 200Gb, and 250 Gb/s signal.";
+ }
+
+ identity CFP4 {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "1/4 C form-factor pluggable, that can support up to a
+ 100 Gb/s signal with 10x10G or 4x25G physical channels";
+ }
+
+ identity QSFP {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "OriginalQuad Small Form-factor Pluggable transceiver that can
+ support 4x1G physical channels. Not commonly used.";
+ }
+
+ identity QSFP_PLUS {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "Quad Small Form-factor Pluggable transceiver that can support
+ up to 4x10G physical channels.";
+ }
+
+ identity QSFP28 {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "QSFP pluggable optic with support for up to 4x28G physical
+ channels";
+ }
+
+ identity CPAK {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "Cisco CPAK transceiver supporting 100 Gb/s.";
+ }
+
+ identity SFP {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "Small form-factor pluggable transceiver supporting up to
+ 10 Gb/s signal";
+ }
+
+ identity SFP_PLUS {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "Enhanced small form-factor pluggable transceiver supporting
+ up to 16 Gb/s signals, including 10 GbE and OTU2";
+ }
+
+ identity XFP {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "10 Gigabit small form factor pluggable transceiver supporting
+ 10 GbE and OTU2";
+ }
+
+ identity X2 {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "10 Gigabit small form factor pluggable transceiver supporting
+ 10 GbE using a XAUI inerface and 4 data channels.";
+ }
+
+ identity NON_PLUGGABLE {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "Represents a port that does not require a pluggable optic,
+ e.g., with on-board optics like COBO";
+ }
+
+ identity OTHER {
+ base TRANSCEIVER_FORM_FACTOR_TYPE;
+ description
+ "Represents a transceiver form factor not otherwise listed";
+ }
+
+ identity FIBER_CONNECTOR_TYPE {
+ description
+ "Type of optical fiber connector";
+ }
+
+ identity SC_CONNECTOR {
+ base FIBER_CONNECTOR_TYPE;
+ description
+ "SC type fiber connector";
+ }
+
+ identity LC_CONNECTOR {
+ base FIBER_CONNECTOR_TYPE;
+ description
+ "LC type fiber connector";
+ }
+
+ identity MPO_CONNECTOR {
+ base FIBER_CONNECTOR_TYPE;
+ description
+ "MPO (multi-fiber push-on/pull-off) type fiber connector
+ 1x12 fibers";
+ }
+
+ identity ETHERNET_PMD_TYPE {
+ description
+ "Ethernet compliance codes (PMD) supported by transceivers";
+ }
+
+ identity ETH_10GBASE_LRM {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 10GBASE_LRM";
+ }
+
+ identity ETH_10GBASE_LR {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 10GBASE_LR";
+ }
+
+ identity ETH_10GBASE_ZR {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 10GBASE_ZR";
+ }
+
+ identity ETH_10GBASE_ER {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 10GBASE_ER";
+ }
+
+ identity ETH_10GBASE_SR {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 10GBASE_SR";
+ }
+
+ identity ETH_40GBASE_CR4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 40GBASE_CR4";
+ }
+
+ identity ETH_40GBASE_SR4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 40GBASE_SR4";
+ }
+
+ identity ETH_40GBASE_LR4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 40GBASE_LR4";
+ }
+
+ identity ETH_40GBASE_ER4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 40GBASE_ER4";
+ }
+
+ identity ETH_40GBASE_PSM4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 40GBASE_PSM4";
+ }
+
+ identity ETH_4X10GBASE_LR {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 4x10GBASE_LR";
+ }
+
+ identity ETH_4X10GBASE_SR {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 4x10GBASE_SR";
+ }
+
+ identity ETH_100G_AOC {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100G_AOC";
+ }
+
+ identity ETH_100G_ACC {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100G_ACC";
+ }
+
+ identity ETH_100GBASE_SR10 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_SR10";
+ }
+
+ identity ETH_100GBASE_SR4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_SR4";
+ }
+
+ identity ETH_100GBASE_LR4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_LR4";
+ }
+
+ identity ETH_100GBASE_ER4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_ER4";
+ }
+
+ identity ETH_100GBASE_CWDM4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_CWDM4";
+ }
+
+ identity ETH_100GBASE_CLR4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_CLR4";
+ }
+
+ identity ETH_100GBASE_PSM4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_PSM4";
+ }
+
+ identity ETH_100GBASE_CR4 {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: 100GBASE_CR4";
+ }
+
+ identity ETH_UNDEFINED {
+ base ETHERNET_PMD_TYPE;
+ description "Ethernet compliance code: undefined";
+ }
+
+ identity SONET_APPLICATION_CODE {
+ description
+ "Supported SONET/SDH application codes";
+ }
+
+ identity VSR2000_3R2 {
+ base SONET_APPLICATION_CODE;
+ description
+ "SONET/SDH application code: VSR2000_3R2";
+ }
+
+ identity VSR2000_3R3 {
+ base SONET_APPLICATION_CODE;
+ description
+ "SONET/SDH application code: VSR2000_3R3";
+ }
+
+ identity VSR2000_3R5 {
+ base SONET_APPLICATION_CODE;
+ description
+ "SONET/SDH application code: VSR2000_3R5";
+ }
+
+ identity SONET_UNDEFINED {
+ base SONET_APPLICATION_CODE;
+ description
+ "SONET/SDH application code: undefined";
+ }
+
+ identity OTN_APPLICATION_CODE {
+ description
+ "Supported OTN application codes";
+ }
+
+ identity P1L1_2D1 {
+ base OTN_APPLICATION_CODE;
+ description
+ "OTN application code: P1L1_2D1";
+ }
+
+ identity P1S1_2D2 {
+ base OTN_APPLICATION_CODE;
+ description
+ "OTN application code: P1S1_2D2";
+ }
+
+ identity P1L1_2D2 {
+ base OTN_APPLICATION_CODE;
+ description
+ "OTN application code: P1L1_2D2";
+ }
+
+ identity OTN_UNDEFINED {
+ base OTN_APPLICATION_CODE;
+ description
+ "OTN application code: undefined";
+ }
+
+ identity TRIBUTARY_RATE_CLASS_TYPE {
+ description
+ "Rate of tributary signal _- identities will typically reflect
+ rounded bit rate.";
+ }
+
+ identity TRIB_RATE_1G {
+ base TRIBUTARY_RATE_CLASS_TYPE;
+ description
+ "1G tributary signal rate";
+ }
+
+ identity TRIB_RATE_2.5G {
+ base TRIBUTARY_RATE_CLASS_TYPE;
+ description
+ "2.5G tributary signal rate";
+ }
+
+ identity TRIB_RATE_10G {
+ base TRIBUTARY_RATE_CLASS_TYPE;
+ description
+ "10G tributary signal rate";
+ }
+
+ identity TRIB_RATE_40G {
+ base TRIBUTARY_RATE_CLASS_TYPE;
+ description
+ "40G tributary signal rate";
+ }
+
+ identity TRIB_RATE_100G {
+ base TRIBUTARY_RATE_CLASS_TYPE;
+ description
+ "100G tributary signal rate";
+ }
+
+ identity LOGICAL_ELEMENT_PROTOCOL_TYPE {
+ description
+ "Type of protocol framing used on the logical channel or
+ tributary";
+ }
+
+ identity PROT_ETHERNET {
+ base LOGICAL_ELEMENT_PROTOCOL_TYPE;
+ description
+ "Ethernet protocol framing";
+ }
+
+ identity PROT_OTN {
+ base LOGICAL_ELEMENT_PROTOCOL_TYPE;
+ description
+ "OTN protocol framing";
+ }
+
+ identity OPTICAL_CHANNEL {
+ base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
+ description
+ "Optical channels act as carriers for transport traffic
+ directed over a line system. They are represented as
+ physical components in the physical inventory model.";
+ }
+
+}
diff --git a/models/openconfig-infinera/src/main/yang/openconfig-types@2017-01-13.yang b/models/openconfig-infinera/src/main/yang/openconfig-types@2017-01-13.yang
new file mode 100644
index 0000000..4bc2535
--- /dev/null
+++ b/models/openconfig-infinera/src/main/yang/openconfig-types@2017-01-13.yang
@@ -0,0 +1,328 @@
+module openconfig-types {
+ yang-version "1";
+
+ namespace "http://openconfig.net/yang/openconfig-types";
+
+ prefix "oc-types";
+
+ // import statements
+ import openconfig-extensions {
+ prefix oc-ext;
+ revision-date "2015-10-09";
+ }
+
+ // meta
+ organization
+ "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ netopenconfig@googlegroups.com";
+
+ description
+ "This module contains a set of general type definitions that
+ are used across OpenConfig models. It can be imported by modules
+ that make use of these types.";
+
+ oc-ext:openconfig-version "0.3.2";
+
+ revision "2017-01-13" {
+ description
+ "Add ADDRESS_FAMILY identity";
+ reference "0.3.2";
+ }
+
+ revision "2016-11-14" {
+ description
+ "Correct length of ieeefloat32";
+ reference "0.3.1";
+ }
+
+ revision "2016-11-11" {
+ description
+ "Additional types - ieeefloat32 and routing-password";
+ reference "0.3.0";
+ }
+
+ revision "2016-05-31" {
+ description
+ "OpenConfig public release";
+ reference "0.2.0";
+ }
+
+ typedef percentage {
+ type uint8 {
+ range "0..100";
+ }
+ description
+ "Integer indicating a percentage value";
+ }
+
+ typedef std-regexp {
+ type string;
+ description
+ "This type definition is a placeholder for a standard
+ definition of a regular expression that can be utilised in
+ OpenConfig models. Further discussion is required to
+ consider the type of regular expressions that are to be
+ supported. An initial proposal is POSIX compatible.";
+ }
+
+ typedef timeticks64 {
+ type uint64;
+ description
+ "This type is based on the timeticks type defined in
+ RFC 6991, but with 64-bit width. It represents the time,
+ modulo 2^64, in hundredths of a second between two epochs.";
+ reference
+ "RFC 6991 - Common YANG Data Types";
+ }
+
+ typedef ieeefloat32 {
+ type binary {
+ length "32";
+ }
+ description
+ "An IEEE 32-bit floating point number. The format of this number
+ is of the form:
+ 1-bit sign
+ 8-bit exponent
+ 24-bit fraction
+ The floating point value is calculated using:
+ (-1)**S * 2**(Exponent-127) * (1+Fraction)";
+ }
+
+ typedef routing-password {
+ type string;
+ description
+ "This type is indicative of a password that is used within
+ a routing protocol which can be returned in plain text to the
+ NMS by the local system. Such passwords are typically stored
+ as encrypted strings. Since the encryption used is generally
+ well known, it is possible to extract the original value from
+ the string - and hence this format is not considered secure.
+ Leaves specified with this type should not be modified by
+ the system, and should be returned to the end-user in plain
+ text. This type exists to differentiate passwords, which
+ may be sensitive, from other string leaves. It could, for
+ example, be used by the NMS to censor this data when
+ viewed by particular users.";
+ }
+
+ grouping avg-min-max-stats-precision1 {
+ description
+ "Common nodes for recording average, minimum, and
+ maximum values for a statistic. These values all have
+ fraction-digits set to 1.";
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 1;
+ }
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 1;
+ }
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 1;
+ }
+ description
+ "The maximum value of the statitic over the sampling
+ period";
+ }
+ }
+
+ grouping avg-min-max-instant-stats-precision1 {
+ description
+ "Common grouping for recording an instantaneous statistic value
+ in addition to avg-min-max stats";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 1;
+ }
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ uses avg-min-max-stats-precision1;
+ }
+
+ grouping avg-min-max-instant-stats-precision2-dB {
+ description
+ "Common grouping for recording dB values with 2 decimal
+ precision. Values include the instantaneous, average,
+ minimum, and maximum statistics";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The maximum value of the statistic over the sampling
+ period";
+ }
+ }
+
+ grouping avg-min-max-instant-stats-precision2-dBm {
+ description
+ "Common grouping for recording dBm values with 2 decimal
+ precision. Values include the instantaneous, average,
+ minimum, and maximum statistics";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "The maximum value of the statistic over the sampling
+ period";
+ }
+ }
+
+ grouping avg-min-max-instant-stats-precision2-mA {
+ description
+ "Common grouping for recording mA values with 2 decimal
+ precision. Values include the instantaneous, average,
+ minimum, and maximum statistics";
+
+ leaf instant {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units mA;
+ description
+ "The instantaneous value of the statistic.";
+ }
+
+ leaf avg {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units mA;
+ description
+ "The arithmetic mean value of the statistic over the
+ sampling period.";
+ }
+
+ leaf min {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units mA;
+ description
+ "The minimum value of the statistic over the sampling
+ period";
+ }
+
+ leaf max {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units mA;
+ description
+ "The maximum value of the statistic over the sampling
+ period";
+ }
+ }
+
+ identity ADDRESS_FAMILY {
+ description
+ "A base identity for all address families";
+ }
+
+ identity IPV4 {
+ base ADDRESS_FAMILY;
+ description
+ "The IPv4 address family";
+ }
+
+ identity IPV6 {
+ base ADDRESS_FAMILY;
+ description
+ "The IPv6 address family";
+ }
+
+ identity MPLS {
+ base ADDRESS_FAMILY;
+ description
+ "The MPLS address family";
+ }
+
+ identity L2_ETHERNET {
+ base ADDRESS_FAMILY;
+ description
+ "The 802.3 Ethernet address family";
+ }
+}