module bbf-nt-service-profile-voltha {
  yang-version 1.1;

  namespace "urn:bbf:yang:bbf-nt-service-profile-voltha";
  prefix bbf-voltha-srv-prof;

  import bbf-nt-service-profile {
    prefix bbf-nt-srv-prof;
  }
  import bbf-nt-line-profile {
    prefix bbf-nt-line-prof;
  }
  import ietf-yang-types {
    prefix yang;
  }

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

     Editor:      TBD

     WA Director: Mengmeng Li, China Mobile

     WA Director: Bruno Cornaglia, Vodafone";
  description
    "TBD.

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

  revision 2022-03-22 {
    description
      "Initial revision.";
    reference
      "TBD";
  }

  augment "/bbf-nt-srv-prof:service-profiles"
    + "/bbf-nt-srv-prof:service-profile/bbf-nt-srv-prof:ports"
    + "/bbf-nt-srv-prof:port" {
    description
      "Augmentation of the service profile to add bandwidth profiles
       and VOLTHA specific values";
    
    leaf technology-profile-id {
      type uint32;
      description
        "ID of the technology profile, that has to be already
         configured in VOLTHA.
         The technology profile protobuf definitation can be found
         here https://github.com/opencord/voltha-protos/blob/" +
         "master/protos/voltha_protos/tech_profile.proto";
    }
    leaf upstream-subscriber-bp-name {
      type leafref {
        path
          "/bbf-nt-line-prof:line-bandwidth-profiles"
          + "/bbf-nt-line-prof:line-bandwidth-profile"
          + "/bbf-nt-line-prof:name";
      }
      description
       "Name of the UNI upstream bandwidth profile";
    }
    leaf downstream-subscriber-bp-name {
      type leafref {
        path
          "/bbf-nt-line-prof:line-bandwidth-profiles"
          + "/bbf-nt-line-prof:line-bandwidth-profile"
          + "/bbf-nt-line-prof:name";
      }
      description
       "Name of the UNI downstream bandwidth profile";
    }
    leaf upstream-olt-bp-name {
      type leafref {
        path
          "/bbf-nt-line-prof:line-bandwidth-profiles"
          + "/bbf-nt-line-prof:line-bandwidth-profile"
          + "/bbf-nt-line-prof:name";
      }
      description
       "Name of the OLT upstream bandwidth profile";
    }
    leaf downstream-olt-bp-name {
      type leafref {
        path
          "/bbf-nt-line-prof:line-bandwidth-profiles"
          + "/bbf-nt-line-prof:line-bandwidth-profile"
          + "/bbf-nt-line-prof:name";
      }
      description
       "Name of the OLT downstream bandwidth profile";
    }
    leaf mac-learning-enabled {
      type boolean;
      description
        "Whether or not MAC learning has to be enabled for
         this service";
    }
    leaf dhcp-required {
      type boolean;
      description
       "Whether or not DHCP is required for this service";
    }
    leaf igmp-required {
      type boolean;
      description
       "Whether or not IGMP is required for this service";
    }
    leaf pppoe-required {
      type boolean;
      description
       "Whether or not PPPoE is required for this service";
    }
    leaf configured-mac-address {
      type yang:mac-address;
      description
      "MAC address for the service";
    }
  }
}
