module org-openroadm-interfaces {
  namespace "http://org/openroadm/interfaces";
  prefix openROADM-if;

  organization "Open ROADM MSA";
  contact
    "OpenROADM.org";
  description
    "YANG definitions for device facility interfaces. 
     Reused ietf-interfaces and some interface-type defined in iana-if-type.
     
     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";
  }

  identity interface-type {
    description
      "Base identity from which specific interface types are
       derived.";
  }

  identity ethernetCsmacd {
    base 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 ip {
    base interface-type;
    description
      "IP (for APPN HPR in IP networks).";
  }

  identity opticalChannel {
    base interface-type;
    description
      "Optical Channel.";
  }

  identity opticalTransport {
    base interface-type;
    description
      "Optical Transport.";
  }

  identity otnOdu {
    base interface-type;
    description
      "OTN Optical Data Unit.";
  }

  identity otnOtu {
    base interface-type;
    description
      "OTN Optical channel Transport Unit.";
  }

  identity openROADMOpticalMultiplex {
    base interface-type;
    description
      "Optical Transport Multiplex type for openROADM";
  }
}
