// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: Apache-2.0

module upf {
  namespace "http://opennetworking.org/aether/upf";
  prefix upf;

  import aether-types { prefix at; }
  import ietf-inet-types { prefix inet; }
  import enterprise{ prefix ent; }
  import ietf-yang-types{ prefix yg; }

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description "A Aether UPF List is a named User Plane Function.";

  revision "2021-06-02" {
    description "An Aether User Plane Function";
    reference "RFC 6087";
  }

  typedef upf-id {
        type yg:yang-identifier {
            length 1..32;
        }
    description "The typedef for upf-id";
  }

  container upf {
    description "The top level container";

    list upf {
      key "id";
      description
        "A list of named upfs.";

      leaf id {
        type upf-id;
        description "ID for this upf.";
      }

      leaf address {
        type inet:host;
        mandatory true;
        description
          "Address of UPF";
      }

      leaf port {
        type inet:port-number;
        mandatory true;
        description
            "Port for UPF";
      }

      leaf display-name {
        type string {
            length 1..80;
        }
        description "display name to use in GUI or CLI";
      }

      leaf description {
        type at:description;
        description "description of this UPF";
      }

      // UPFs are always owned by an Enterprise, since they typically exist on the
      // Enterprise's edge. TODO: Consider whether they should be owned by a Site
      // instead of Enterprise.
      leaf enterprise {
        type leafref {
          path "/ent:enterprise/ent:enterprise/ent:id";
        }
        mandatory true;
        description
          "Link to enterprise that owns this Access Point List";
      }
    }
  }
}
