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

module traffic-class {
  namespace "http://opennetworking.org/aether/traffic-class";
  prefix tp;

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

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description
    "The aether traffic class associates qos constants
     with a named class of service";

  revision "2021-06-02" {
    description "An Aether Traffic Class";
    reference "RFC 6087";
  }

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

  container traffic-class {
    description "The top level container";

    list traffic-class {
      key "id";
      description
        "List of traffic class";

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

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

      leaf pelr {
        type at:pelr;
        description "PELR exponent";
      }

      leaf pdb {
        type at:pdb;
        description "PDB";
      }

      leaf qci {
        type at:qci;
        description "QCI";
      }

      leaf description {
        type at:description;
        description "description of this traffic class";
      }
    }
  }
}
