module org-openroadm-ethernet-interfaces {
  namespace "http://org/openroadm/ethernet-interfaces";
  prefix org-openroadm-eth-interfaces;

  import org-openroadm-device {
    prefix org-openroadm-device;
  }
  import org-openroadm-interfaces {
    prefix openROADM-if;
  }

  organization "Open ROADM MSA";
  contact
    "OpenROADM.org";
  description
    "YANG definitions for device facility ethernet interfaces.
     
     Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016, 
     AT&T Intellectual Property.  All other rights reserved.
     
     Redistribution and use in source and binary forms, with or without modification, 
     are permitted provided that the following conditions are met:
     
     * Redistributions of source code must retain the above copyright notice, this 
       list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above copyright notice, 
       this list of conditions and the following disclaimer in the documentation and/or 
       other materials provided with the distribution.
     * Neither the Members of the Open ROADM MSA Agreement nor the names of its 
       contributors may be used to endorse or promote products derived from this software 
       without specific prior written permission.
     
     THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS'' 
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
     IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT, 
     INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA, 
     OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
     WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
     POSSIBILITY OF SUCH DAMAGE.
     
     Also contains code components extracted from IETF Interfaces.  These code components 
     are copyrighted and licensed as follows:
     
     Copyright (c) 2016 IETF Trust and the persons identified as the document authors. 
     All rights reserved. 
     
     This document is subject to BCP 78 and the IETF Trust’s Legal Provisions Relating 
     to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of 
     publication of this document. Please review these documents carefully, as they 
     describe your rights and restrictions with respect to this document. Code Components 
     extracted from this document must include Simplified BSD License text as described in
     Section 4.e of the Trust Legal Provisions and are provided without warranty as 
     described in the Simplified BSD License.";

  revision 2016-10-14 {
    description
      "Version 1.2";
  }

  grouping eth-attributes {
    leaf speed {
      type uint32;
      description
        "Set speed of the interface, unit mbps. 
         This is for ETH facility. ";
    }
    leaf fec {
      type enumeration {
        enum off;
        enum rsfec;
      }
      description "Forward Error Correction Choices. ";
    }                                      
    leaf duplex {
      type enumeration {
        enum "half" {
          value 0;
          description
            "half duplex";
        }
        enum "full" {
          value 1;
          description
            "full duplex";
        }
      }
      default "full";
      description
        "Set duplex selections.";
    }
    leaf mtu {
      type uint32 {
        range "1518..9000";
      }
      default "1522";
      description
        "Set Maximum Frame Size.";
    }
    leaf auto-negotiation {
      type enumeration {
        enum "enabled" {
          value 1;
          description
            "Auto Negotiation enabled";
        }
        enum "disabled" {
          value 0;
          description
            "Auto Negotiation disabled";
        }
      }
      default "enabled";
      description
        "Set Auto Negotiation: Enabled/Disabled.";
    }
    leaf curr-speed {
      config false;
      type string;
      description
        "speed (UNKNOWN/AUTO/10/100/1000/10000) corresponding to the interface";
    }
    leaf curr-duplex {
      config false;
      type string;
      description
        "duplex (HALF/FULL) corresponding to the interface";
    }
  }

  grouping ethernet-container {
    container ethernet {
      description
        "Ethernet Interfaces";
      uses eth-attributes;
    }
  }

  augment "/org-openroadm-device:org-openroadm-device/org-openroadm-device:interface" {
    when "org-openroadm-device:type = 'openROADM-if:ethernetCsmacd'";
    uses ethernet-container;
  }
}
