submodule bbf-xpon-multicast-gemport-body {
  yang-version 1.1;
  belongs-to bbf-xpon {
    prefix bbf-xpon;
  }

  import ietf-interfaces {
    prefix if;
  }
  import bbf-xpon-if-type {
    prefix bbf-xponift;
  }
  import bbf-yang-types {
    prefix bbf-yang;
  }
  include bbf-xpon-base;

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

     Editor:      Joey Boyd, ADTRAN

     Editor:      Samuel Chen, Broadcom

     Editor:      Robert Peschi, Nokia

     WA Director: Marta Seda, Calix

     WA Director: Lin Wei, Huawei";
  description
    "This submodule contains a collection of YANG definitions for
     managing multicast GEM ports.

     Copyright (c) 2018, 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-385; see
     the TR itself for full legal notices.";

  revision 2019-02-25 {
    description
      "Initial revision.
       * Approval Date:    2019-02-25.
       * Publication Date: 2019-02-25.";
    reference
      "TR-385: ITU-T PON YANG Modules
               <https://www.broadband-forum.org/technical/download/
                        TR-385.pdf>";
  }

  typedef multicast-gemport-ref {
    type leafref {
      path '/bbf-xpon:xpon/bbf-xpon:multicast-gemports/bbf-xpon:'
         + 'multicast-gemport/bbf-xpon:name';
    }
    description
      "Points to multicast GEM port.";
  }

  augment '/bbf-xpon:xpon' {
    description
      "Augment system level xPON configuration with multicase GEM
       port configuration.";
    container multicast-gemports {
      description
        "Multicast GEM ports configuration data.";
      uses multicast-gemports-config-data;
    }
  }

  grouping multicast-gemports-config-data {
    description
      "The config data of multicast GEM ports. Multicast GEM ports
       can be used for multicast or broadcast.";
    list multicast-gemport {
      key "name";
      leaf name {
        type bbf-yang:string-ascii64;
        description
          "The name of the multicast GEM port.";
      }
      leaf gemport-id {
        type uint32;
        description
          "The ID of the multicast GEM port.";
      }
      leaf interface {
        type if:interface-ref;
        must
          "/if:interfaces/if:interface[if:name=current()]
           /if:type='bbf-xponift:channel-pair'" {
          error-message
            "Must reference a channel pair.";
        }
        description
          "Each channel pair has in general one or several multicast
           GEM ports.";
      }
      leaf traffic-class {
        type uint8 {
          range "0..7";
        }
        description
          "Traffic class value.";
      }
      leaf is-broadcast {
        type boolean;
        default "false";
        description
          "If true, this multicast GEM port is used for broadcast
           traffic.";
      }
      description
        "List of multicast GEM ports.";
    }
  }
}
