// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0

submodule onf-application {
  belongs-to onf-enterprise { prefix ent; }

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

  include onf-traffic-class;

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description
    "An Aether Application is an application that devices may
     connect to. Includes a set of endpoints where services are
     provided.";

  revision "2022-01-14" {
    description "Refactored as submodule";
    reference "RFC 6020";
  }

  revision "2021-09-10" {
    description "Aether Application.";
    reference "RFC 6087";
  }

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

  grouping application {
    description "The application grouping";

    list application {
      key "application-id";
      description
        "List of applications";

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

      uses at:desc-display-name;

      leaf address {
        type ietf:host;
        mandatory true;
        description
            "Address of this application. Either a hostname, an IP, or a subnet.";
      }

      list endpoint {
        key "endpoint-id";
        leaf endpoint-id {
          type yg:yang-identifier;
          description
              "Id of this endpoint";
        }

        uses at:desc-display-name;

        leaf port-start {
          type ietf:port-number;
          description
              "First port in range";
        }
        leaf port-end {
          type ietf:port-number;
          description
              "Last port in range";
        }
        leaf protocol {
          type at:protocol;
          description
              "Protocol of this endpoint";
        }
        container mbr {
          description "Maximum bitrate";
          leaf uplink {
            type at:bitrate;
            units bps;
            description "Per-Device per-Application MBR uplink data rate in bps";
          }

          leaf downlink {
            type at:bitrate;
            units bps;
            description "Per-Device per application MBR downlink data rate in bps";
          }
        }
        leaf traffic-class {
          type leafref {
            path "../../../traffic-class/traffic-class-id";
          }
          description
            "Link to traffic class";
        }

        description "list for endpoint";
      }
    }
  }
}
