// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: Apache-2.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";
      }
    }
  }
}
