module bbf-if-type {
  yang-version 1.1;
  namespace "urn:bbf:yang:bbf-if-type";
  prefix bbfift;

  import iana-if-type {
    prefix ianaift;
  }
  import ietf-interfaces {
    prefix if;
  }

  organization
    "Broadband Forum <https://www.broadband-forum.org>
     Common YANG Work Area";
  contact
    "Comments or questions about this Broadband Forum YANG module
     should be directed to <mailto:help@broadband-forum.org>.

     Editor:      Nick Hancock, ADTRAN

     Editor:      Ludwig Pauwels, Nokia

     PS Leader:   Joey Boyd, ADTRAN

     PS Leader:   Sowrirajan Padmanabhan, Nokia

     WA Director: Joey Boyd, ADTRAN

     WA Director: Sven Ooghe, Nokia";
  description
    "This module contains a collection of YANG definitions for
     supporting the Broadband Forum requirements on reusable data
     types as applicable to access network equipment. As such, this
     module is specific to access network equipment (e.g.,
     BBF-specified Access Nodes and FTTdp DPUs).

     Specifically, this module defines interface types that are needed
     for BBF applications but are not defined in iana-if-type.

     Copyright (c) 2017-2020, Broadband Forum

     Redistribution and use in source and binary forms, with or
     without modification, are permitted provided that the following
     conditions are met:

     1. Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.

     2. 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.

     3. Neither the name of the copyright holder 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 COPYRIGHT HOLDERS AND
     CONTRIBUTORS \"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 SHALL THE COPYRIGHT HOLDER OR
     CONTRIBUTORS 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.

     The above license is used as a license under copyright only.
     Please reference the Forum IPR Policy for patent licensing terms
     <https://www.broadband-forum.org/ipr-policy>.

     Any moral rights which are necessary to exercise under the above
     license grant are also deemed granted under this license.

     This version of this YANG module is part of TR-383a3; see
     the TR itself for full legal notices.";

  revision 2020-10-13 {
    description
      "Amendment 3.
       * Approval Date:    2020-10-13.
       * Publication Date: 2020-10-13.";
    reference
      "TR-383a3: Common YANG Modules
                 <https://www.broadband-forum.org/technical/download/
                          TR-383_Amendment-3.pdf>";
  }
  revision 2018-12-03 {
    description
      "Amendment 2.
       * Approval Date:    2018-12-03.
       * Publication Date: 2018-12-03.";
    reference
      "TR-383a2: Common YANG Modules
               <https://www.broadband-forum.org/technical/download/
                        TR-383_Amendment-2.pdf>";
  }
  revision 2018-07-13 {
    description
      "Amendment 1.
       * Approval Date:    2018-06-04.
       * Publication Date: see revision date above.";
    reference
      "TR-383: Common YANG Modules
               <https://www.broadband-forum.org/technical/download/
                        TR-383_Amendment-1.pdf>";
  }
  revision 2017-05-08 {
    description
      "Initial revision.
       * Approval Date:    see revision date above.
       * Publication Date: 2017-06-02.";
    reference
      "TR-383: Common YANG Modules
               <https://www.broadband-forum.org/technical/download/
                        TR-383.pdf>";
  }

  identity bbf-interface-type {
    base if:interface-type;
    description
      "This identity is used as a base for all interface types
       defined by the BBF that are not in the 'ifType definitions'
       registry maintained by IANA.";
  }

  identity sub-interface {
    base bbf-interface-type;
    description
      "Base type for generic sub-interfaces. ";
  }

  identity vlan-sub-interface {
    base ianaift:l2vlan;
    base sub-interface;
    description
      "A sub-interface which carries traffic that is parsed for VLAN
       tags. I.e. either the frames carries VLAN tags, or the first
       Ethertype differs from one of the VLAN TPIDs defined by IEEE
       and then the frame is considered as untagged. ";
  }

  identity l2-termination {
    base bbf-interface-type;
    description
      "An interface which terminates layer 2 traffic without the
       need to be associated with any Ethernet-like interface.";
  }

  identity ethernet-like {
    base bbf-interface-type;
    description
      "An abstract identity defining a class of interfaces which
       represents a logical interface transporting Ethernet frames,
       i.e. frames with a destination and source MAC address, an
       Ethernet type or length field, and a payload. This
       'interface type' is intended only to be used to define
       constraints against a class of interfaces each of which have
       their 'type' derived from this identity (as well as potentially
       others). At no time should this identity be used as the 'type'
       for an interface.";
  }
}
