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

  import bbf-yang-types {
    prefix bbf-yang;
  }
  include bbf-xpon-base;
  include bbf-xpon-multicast-gemport-body;

  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 distribution sets.

     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>";
  }

  augment '/bbf-xpon:xpon' {
    description
      "Augment system level xPON configuration with multicase
       distribution set configuration.";
    container multicast-distribution-set {
      description
        "Configuration data for a multicast distribution set.";
      uses multicast-distribution-set-data;
    }
  }

  grouping multicast-distribution-set-data {
    description
      "All configuration data for a multicast distribution set.";
    list multicast-set {
      key "name";
      leaf name {
        type bbf-yang:string-ascii64;
        description
          "Name of the multicast distribution set.";
      }
      leaf multicast-gemport-ref {
        type multicast-gemport-ref;
        description
          "Points to a multicast GEM port.";
      }
      choice multicast-vlans {
        description
          "Multicast VLAN list or all. All means all multicast
           vlans are carried on the same GEM port.";
        case vlan-list {
          description
            "Multicast VLAN list.";
          list vlan-list {
            key "multicast-vlan-id";
            leaf multicast-vlan-id {
              type uint16 {
                range "0..4095";
              }
              description
                "Multicast VLAN-ID.";
            }
            description
              "List of vlans.";
          }
        }
        case all-multicast-vlans {
          description
            "All multicast VLANs are carried on the same
             GEM port.";
          leaf all-multicast-vlans {
            type empty;
            description
              "All multicast VLANs.";
          }
        }
      }
      description
        "List of multicast sets.";
    }
  }
}
