huawei-qos

Quality of service.

  • Version: 2020-06-11

    huawei-qos@2020-06-11


    
      module huawei-qos {
    
        yang-version 1;
    
        namespace "urn:huawei:yang:huawei-qos";
    
        prefix qos;
    
        import huawei-pub-type {
          prefix pub-type;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-acl {
          prefix acl;
        }
        import huawei-bfd {
          prefix bfd;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-time-range {
          prefix timerange;
        }
        import huawei-license {
          prefix lcs;
        }
        import huawei-ethernet {
          prefix ethernet;
        }
    
        include huawei-qos-type;
    
        organization
          "Huawei Technologies Co., Ltd.";
    
        contact
          "Huawei Industrial Base
    Bantian, Longgang
    Shenzhen 518129
    People's Republic of China
    Website: http://www.huawei.com
    Email: support@huawei.com";
    
        description "Quality of service.";
    
        revision "2020-06-11" {
          description
            "Modify descriptions and add units.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-05-27" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-04-10" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-04-01" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-20" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-11" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-03" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-01-18" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-12-02" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-11-04" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-10-18" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "qos";
    
        grouping policy-statistics-type {
          description
            "Traffic policy statistics information.";
          leaf match-packets {
            type uint64;
            units "packet";
            description
              "Number of matched packets.";
          }
    
          leaf match-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched bytes.";
          }
    
          leaf match-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of matched packets.";
          }
    
          leaf match-byte-rate {
            type uint64;
            units "Byte/s";
            description "Rate of matched bytes.";
          }
    
          leaf miss-packets {
            type uint64;
            units "packet";
            description
              "Number of unmatched packets.";
          }
    
          leaf miss-bytes {
            type uint64;
            units "Byte";
            description
              "Number of unmatched bytes.";
          }
    
          leaf match-pass-packets {
            type uint64;
            units "packet";
            description
              "Number of matched and passed packets.";
          }
    
          leaf match-pass-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched and passed bytes.";
          }
    
          leaf match-drop-packets {
            type uint64;
            units "packet";
            description
              "Number of matched but discarded packets.";
          }
    
          leaf match-drop-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched but discarded bytes.";
          }
    
          leaf miss-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets that do not match the policy.";
          }
    
          leaf miss-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes that do not match the policy.";
          }
    
          leaf match-pass-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets that match the policy and passed.";
          }
    
          leaf match-pass-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes that match the policy and passed.";
          }
    
          leaf match-drop-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets that match the policy but are discarded.";
          }
    
          leaf match-drop-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes that match the policy but are discarded.";
          }
    
          leaf urpf-packets {
            type uint64;
            units "packet";
            description
              "Number of packets discarded by URPF.";
          }
    
          leaf urpf-bytes {
            type uint64;
            units "Byte";
            description
              "Number of bytes discarded by URPF.";
          }
    
          leaf urpf-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of packets discarded by URPF.";
          }
    
          leaf urpf-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of bytes discarded by URPF.";
          }
    
          leaf car-packets {
            type uint64;
            units "packet";
            description
              "Number of packets processed by CAR.";
          }
    
          leaf car-bytes {
            type uint64;
            units "Byte";
            description
              "Number of bytes processed by CAR.";
          }
    
          leaf car-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of packets processed by CAR.";
          }
    
          leaf car-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of bytes processed by CAR.";
          }
    
          leaf filter-packets {
            type uint64;
            units "packet";
            description
              "Number of filtered packets.";
          }
    
          leaf filter-bytes {
            type uint64;
            units "Byte";
            description
              "Number of filtered bytes.";
          }
    
          leaf filter-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of filtered packets.";
          }
    
          leaf filter-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of filtered bytes.";
          }
        }  // grouping policy-statistics-type
    
        grouping multi-policy-statistics-type {
          description
            "Multiple traffic policy statistics information.";
          leaf match-packets {
            type uint64;
            units "packet";
            description
              "Number of matched packets.";
          }
    
          leaf match-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched bytes.";
          }
    
          leaf match-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of matched packets.";
          }
    
          leaf match-byte-rate {
            type uint64;
            units "Byte/s";
            description "Rate of matched bytes.";
          }
    
          leaf miss-packets {
            type uint64;
            units "packet";
            description
              "Number of unmatched packets.";
          }
    
          leaf miss-bytes {
            type uint64;
            units "Byte";
            description
              "Number of unmatched bytes.";
          }
    
          leaf match-pass-packets {
            type uint64;
            units "packet";
            description
              "Number of matched and passed packets.";
          }
    
          leaf match-pass-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched and passed bytes.";
          }
    
          leaf match-drop-packets {
            type uint64;
            units "packet";
            description
              "Number of matched but discarded packets.";
          }
    
          leaf match-drop-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched but discarded bytes.";
          }
    
          leaf miss-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets that do not match the policy.";
          }
    
          leaf miss-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes that do not match the policy.";
          }
    
          leaf match-pass-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets that match the policy and passed.";
          }
    
          leaf match-pass-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes that match the policy and passed.";
          }
    
          leaf match-drop-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets that match the policy but are discarded.";
          }
    
          leaf match-drop-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes that match the policy but are discarded.";
          }
    
          leaf filter-packets {
            type uint64;
            units "packet";
            description
              "Number of filtered packets.";
          }
    
          leaf filter-bytes {
            type uint64;
            units "Byte";
            description
              "Number of filtered bytes.";
          }
    
          leaf filter-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of filtered packets.";
          }
    
          leaf filter-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of filtered bytes.";
          }
        }  // grouping multi-policy-statistics-type
    
        grouping classifier-statistics-type {
          description
            "Traffic classifier statistics information.";
          leaf match-packets {
            type uint64;
            units "packet";
            description
              "Number of matched packets.";
          }
    
          leaf match-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched bytes.";
          }
    
          leaf match-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of matched packets.";
          }
    
          leaf match-byte-rate {
            type uint64;
            units "Byte/s";
            description "Rate of matched bytes.";
          }
    
          leaf match-pass-packets {
            type uint64;
            units "packet";
            description
              "Number of matched and passed packets.";
          }
    
          leaf match-pass-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched and passed bytes.";
          }
    
          leaf match-drop-packets {
            type uint64;
            units "packet";
            description
              "Number of matched but discarded packets.";
          }
    
          leaf match-drop-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched but discarded bytes.";
          }
    
          leaf match-pass-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets matching the traffic classifier and passed.";
          }
    
          leaf match-pass-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes matching the traffic classifier and passed.";
          }
    
          leaf match-drop-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets matching the traffic classifier but discarded.";
          }
    
          leaf match-drop-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes matching the traffic classifier but discarded.";
          }
    
          leaf filter-packets {
            type uint64;
            units "packet";
            description
              "Number of filtered packets.";
          }
    
          leaf filter-bytes {
            type uint64;
            units "Byte";
            description
              "Number of filtered bytes.";
          }
    
          leaf filter-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of filtered packets.";
          }
    
          leaf filter-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of filtered bytes.";
          }
    
          leaf urpf-drop-packets {
            type uint64;
            units "packet";
            description
              "Number of the discarded packets by URPF check.";
          }
    
          leaf urpf-drop-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the discarded bytes by URPF check.";
          }
    
          leaf urpf-drop-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the discarded packets by URPF check.";
          }
    
          leaf urpf-drop-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the discarded bytes by URPF check.";
          }
    
          leaf car-packets {
            type uint64;
            units "packet";
            description
              "Number of the processed packets by CAR.";
          }
    
          leaf car-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the processed bytes by CAR.";
          }
    
          leaf car-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the passed packets by CAR.";
          }
    
          leaf car-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the passed bytes by CAR.";
          }
    
          leaf car-pass-packets {
            type uint64;
            units "packet";
            description
              "Number of the passed packets by CAR.";
          }
    
          leaf car-pass-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the passed bytes by CAR.";
          }
    
          leaf car-drop-packets {
            type uint64;
            units "packet";
            description
              "Number of the discarded packets by CAR.";
          }
    
          leaf car-drop-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the discarded bytes by CAR.";
          }
    
          leaf car-pass-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the passed packets CAR.";
          }
    
          leaf car-pass-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the passed bytes by CAR.";
          }
    
          leaf car-drop-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the discarded packets by CAR.";
          }
    
          leaf car-drop-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the discarded bytes by CAR.";
          }
    
          leaf car-green-packets {
            type uint64;
            units "packet";
            description
              "Number of green packets by CAR.";
          }
    
          leaf car-green-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the bytes of green packets by CAR.";
          }
    
          leaf car-yellow-packets {
            type uint64;
            units "packet";
            description
              "Number of yellow packets by CAR.";
          }
    
          leaf car-yellow-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the bytes of yellow packets by CAR.";
          }
    
          leaf car-red-packets {
            type uint64;
            units "packet";
            description
              "Number of red packets by CAR.";
          }
    
          leaf car-red-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the bytes of red packets by CAR.";
          }
    
          leaf car-green-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of green packets by CAR.";
          }
    
          leaf car-green-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes of green packets by CAR.";
          }
    
          leaf car-yellow-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of yellow packets by CAR.";
          }
    
          leaf car-yellow-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes of yellow packets by CAR.";
          }
    
          leaf car-red-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of red packets by CAR.";
          }
    
          leaf car-red-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes of red packets by CAR.";
          }
        }  // grouping classifier-statistics-type
    
        grouping multi-policy-classifier-statistics-type {
          description
            "Multiple traffic classifier statistics information.";
          leaf match-packets {
            type uint64;
            units "packet";
            description
              "Number of matched packets.";
          }
    
          leaf match-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched bytes.";
          }
    
          leaf match-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of matched packets.";
          }
    
          leaf match-byte-rate {
            type uint64;
            units "Byte/s";
            description "Rate of matched bytes.";
          }
    
          leaf match-pass-packets {
            type uint64;
            units "packet";
            description
              "Number of matched and passed packets.";
          }
    
          leaf match-pass-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched and passed bytes.";
          }
    
          leaf match-drop-packets {
            type uint64;
            units "packet";
            description
              "Number of matched but discarded packets.";
          }
    
          leaf match-drop-bytes {
            type uint64;
            units "Byte";
            description
              "Number of matched but discarded bytes.";
          }
    
          leaf match-pass-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets matching the traffic classifier and passed.";
          }
    
          leaf match-pass-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes matching the traffic classifier and passed.";
          }
    
          leaf match-drop-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the packets matching the traffic classifier but discarded.";
          }
    
          leaf match-drop-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes matching the traffic classifier but discarded.";
          }
    
          leaf filter-packets {
            type uint64;
            units "packet";
            description
              "Number of filtered packets.";
          }
    
          leaf filter-bytes {
            type uint64;
            units "Byte";
            description
              "Number of filtered bytes.";
          }
    
          leaf filter-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of filtered packets.";
          }
    
          leaf filter-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of filtered bytes.";
          }
    
          leaf car-packets {
            type uint64;
            units "packet";
            description
              "Number of the processed packets by CAR.";
          }
    
          leaf car-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the processed bytes by CAR.";
          }
    
          leaf car-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the passed packets by CAR.";
          }
    
          leaf car-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the passed bytes by CAR.";
          }
    
          leaf car-pass-packets {
            type uint64;
            units "packet";
            description
              "Number of the passed packets by CAR.";
          }
    
          leaf car-pass-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the passed bytes by CAR.";
          }
    
          leaf car-drop-packets {
            type uint64;
            units "packet";
            description
              "Number of the discarded packets by CAR.";
          }
    
          leaf car-drop-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the discarded bytes by CAR.";
          }
    
          leaf car-pass-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the passed packets CAR.";
          }
    
          leaf car-pass-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the passed bytes by CAR.";
          }
    
          leaf car-drop-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of the discarded packets by CAR.";
          }
    
          leaf car-drop-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the discarded bytes by CAR.";
          }
    
          leaf car-green-packets {
            type uint64;
            units "packet";
            description
              "Number of green packets by CAR.";
          }
    
          leaf car-green-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the bytes of green packets by CAR.";
          }
    
          leaf car-yellow-packets {
            type uint64;
            units "packet";
            description
              "Number of yellow packets by CAR.";
          }
    
          leaf car-yellow-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the bytes of yellow packets by CAR.";
          }
    
          leaf car-red-packets {
            type uint64;
            units "packet";
            description
              "Number of red packets by CAR.";
          }
    
          leaf car-red-bytes {
            type uint64;
            units "Byte";
            description
              "Number of the bytes of red packets by CAR.";
          }
    
          leaf car-green-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of green packets by CAR.";
          }
    
          leaf car-green-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes of green packets by CAR.";
          }
    
          leaf car-yellow-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of yellow packets by CAR.";
          }
    
          leaf car-yellow-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes of yellow packets by CAR.";
          }
    
          leaf car-red-packet-rate {
            type uint64;
            units "pps";
            description
              "Rate of red packets by CAR.";
          }
    
          leaf car-red-byte-rate {
            type uint64;
            units "Byte/s";
            description
              "Rate of the bytes of red packets by CAR.";
          }
        }  // grouping multi-policy-classifier-statistics-type
    
        grouping car-statistics-type {
          description
            "Car statistics information.";
          leaf pass-packets {
            type uint64;
            units "packet";
            description "Pass packets.";
          }
    
          leaf pass-bytes {
            type uint64;
            units "Byte";
            description "Pass bytes.";
          }
    
          leaf pass-packet-rate {
            type uint64;
            units "pps";
            description "Pass packet rate.";
          }
    
          leaf pass-byte-rate {
            type uint64;
            units "Byte/s";
            description "Pass byte rate.";
          }
    
          leaf drop-packets {
            type uint64;
            units "packet";
            description "Drop packets.";
          }
    
          leaf drop-bytes {
            type uint64;
            units "Byte";
            description "Drop bytes.";
          }
    
          leaf drop-packet-rate {
            type uint64;
            units "pps";
            description "Drop packet rate.";
          }
    
          leaf drop-byte-rate {
            type uint64;
            units "Byte/s";
            description "Drop byte rate.";
          }
        }  // grouping car-statistics-type
    
        container qos {
          description "Quality of service.";
          container wred-template {
            description
              "Configure wred template.";
            container flow-wreds {
              description
                "List of configure flow wred.";
              list flow-wred {
                key "name";
                max-elements 6144;
                description
                  "Configure flow wred.";
                leaf name {
                  type string {
                    length "1..31";
                  }
                  description "Flow wred name.";
                }
    
                leaf queue-depth {
                  type uint32 {
                    range "1..4294967295";
                  }
                  units "kB";
                  description "Queue depth.";
                }
    
                container wred-colors {
                  description
                    "List of configure flow wred color.";
                  list wred-color {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the flow wred template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "color";
                    max-elements 3;
                    description
                      "Configure flow wred color.";
                    leaf color {
                      type qos-color;
                      description "Color.";
                    }
    
                    leaf low-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Low limit percentage.";
                    }
    
                    leaf high-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      must
                        "../high-limit-percentage>=../low-limit-percentage";
                      default "100";
                      description
                        "High limit percentage.";
                    }
    
                    leaf discard-percentage {
                      type uint8 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Discarding percentage.";
                    }
                  }  // list wred-color
                }  // container wred-colors
              }  // list flow-wred
            }  // container flow-wreds
    
            container port-wreds {
              description
                "List of configure configure port wred.";
              list port-wred {
                key "name";
                max-elements 127;
                description
                  "Configure port wred.";
                leaf name {
                  type string {
                    length "1..31";
                  }
                  description "Port WRED name.";
                }
    
                leaf queue-depth {
                  type uint32 {
                    range "8..4294967295";
                  }
                  units "kB";
                  description "QUEUE DEPTH.";
                }
    
                container wred-colors {
                  description
                    "List of configure port wred color. This node has default configurations. The default configuration cannot be created. The current configuration cannot be changed to the default configuration. If no user configuration exists, you can check the default configurations through the wred-colors-states node.";
                  list wred-color {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the port wred template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    must
                      "./high-limit-percentage>=./low-limit-percentage";
                    key "color";
                    max-elements 3;
                    description
                      "Configure port wred color.";
                    leaf color {
                      type qos-color;
                      description "Color.";
                    }
    
                    leaf low-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      mandatory true;
                      description
                        "Low limit percentage.";
                    }
    
                    leaf high-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      mandatory true;
                      description
                        "High limit percentage.";
                    }
    
                    leaf discard-percentage {
                      type uint8 {
                        range "1..100";
                      }
                      units "%";
                      mandatory true;
                      description
                        "Discarding percentage.";
                    }
                  }  // list wred-color
                }  // container wred-colors
    
                container wred-color-states {
                  config false;
                  description
                    "List of configure operational state of port wred color.";
                  list wred-color-state {
                    key "color";
                    max-elements 3;
                    description
                      "Operational state of port wred color.";
                    leaf color {
                      type qos-color;
                      description "Color.";
                    }
    
                    leaf low-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      description
                        "Low limit percentage.";
                    }
    
                    leaf high-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      description
                        "High limit percentage.";
                    }
    
                    leaf discard-percentage {
                      type uint8 {
                        range "1..100";
                      }
                      units "%";
                      description
                        "Discarding percentage.";
                    }
                  }  // list wred-color-state
                }  // container wred-color-states
              }  // list port-wred
            }  // container port-wreds
    
            container wreds {
              description
                "List of configure wred.";
              list wred {
                key "name";
                max-elements 8;
                description "Configure wred.";
                leaf name {
                  type string {
                    length "1..31";
                  }
                  description "Wred name.";
                }
    
                leaf buffer-size-percentage {
                  type uint32 {
                    range "1..100";
                  }
                  units "%";
                  description
                    "Buffer size percentage.";
                }
    
                container colors {
                  description
                    "List of configure wred color.";
                  list color {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the wred template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "color";
                    max-elements 3;
                    description
                      "Configure wred color. This node cannot be deleted.";
                    leaf color {
                      type qos-color;
                      description "Color.";
                    }
    
                    leaf low-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Low limit percentage.";
                    }
    
                    leaf high-limit-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      must
                        "../high-limit-percentage>=../low-limit-percentage";
                      default "100";
                      description
                        "High limit percentage.";
                    }
    
                    leaf discard-percentage {
                      type uint8 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Discarding percentage.";
                    }
                  }  // list color
                }  // container colors
              }  // list wred
            }  // container wreds
          }  // container wred-template
    
          container queue-scheduler-template {
            description
              "Configure queue scheduler template.";
            container flow-queues {
              description
                "List of configure flow queue profile.";
              list flow-queue {
                key "name";
                max-elements 2048;
                description
                  "Configure flow queue profile.";
                leaf name {
                  type template-name;
                  description "Flow queue name.";
                }
    
                leaf mode {
                  ext:operation-exclude "update" {
                    description "After the flow queue template is created, the node cannot be modified.";
                  }
                  type flow-queue-template-type;
                  mandatory true;
                  description
                    "Flow queue template mode.";
                }
    
                container normal-mode-queues {
                  when "../mode='normal'";
                  description
                    "List of configure the scheduling parameters of normal mode flow queue.";
                  list normal-mode-queue {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the flow queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "service-class";
                    max-elements 8;
                    description
                      "Configure the scheduling parameters of normal mode flow queue.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Class of service.";
                    }
    
                    leaf flow-wred-name {
                      type leafref {
                        path "../../../../../../wred-template/flow-wreds/flow-wred/name";
                      }
                      description "Flow wred.";
                    }
    
                    choice config-type {
                      description
                        "Specify config type.";
                      case shaping-mode {
                        description
                          "Specify config type choice case as shaping mode.";
                        leaf schedule-mode {
                          type queue-schedule-mode;
                          mandatory true;
                          description
                            "Scheduling strategy of flow queue. Can not be deleted or removed when lowlatency configured or serviceClass joined to share-shaping.";
                        }
    
                        leaf weight {
                          when
                            "../schedule-mode='wfq'";
                          type uint8 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Weight of WFQ scheduling strategy.";
                        }
    
                        leaf pbs {
                          type uint32 {
                            range "1..10000000";
                          }
                          units "Byte";
                          description
                            "Peak burst size.";
                        }
    
                        leaf low-latency {
                          when
                            "../schedule-mode='pq'";
                          type queue-low-latency;
                          description
                            "Low Latency.";
                        }
    
                        leaf low-jitter {
                          type queue-low-jitter;
                          description
                            "Low Jitter.";
                        }
    
                        choice shaping-parameters {
                          description
                            "Specify shaping parameters.";
                          case shaping {
                            description
                              "Specify shaping parameters choice case as shaping value.";
                            leaf shaping-value {
                              type uint32 {
                                range
                                  "8..4294967294";
                              }
                              units "kbit/s";
                              description
                                "Rate of shaping.";
                            }
                          }  // case shaping
    
                          case shaping-percent {
                            description
                              "Specify shaping parameters choice case as shaping percentage value.";
                            leaf shaping-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              description
                                "Percentage of shaping.";
                            }
                          }  // case shaping-percent
    
                          case car {
                            description
                              "Specify shaping parameters choice case as car value.";
                            leaf car-value {
                              when
                                "../service-class='ef' or ../service-class='cs6' or ../service-class='cs7'";
                              type uint32 {
                                range
                                  "8..4294967294";
                              }
                              units "kbit/s";
                              description
                                "Rate of car.";
                            }
                          }  // case car
    
                          case car-percent {
                            description
                              "Specify shaping parameters choice case as car percentage value.";
                            leaf car-percentage {
                              when
                                "../service-class='ef' or ../service-class='cs6' or ../service-class='cs7'";
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              description
                                "Percentage of car.";
                            }
                          }  // case car-percent
                        }  // choice shaping-parameters
                      }  // case shaping-mode
    
                      case cir-mode {
                        description
                          "Specify config type choice case as cir mode.";
                        leaf cir-schedule-mode {
                          type queue-cir-schedule-mode;
                          mandatory true;
                          description
                            "Scheduling strategy of flow queue.";
                        }
    
                        leaf pir-schedule-mode {
                          type queue-schedule-mode;
                          mandatory true;
                          description
                            "Scheduling strategy of flow queue.";
                        }
    
                        leaf pir-weight {
                          when
                            "../pir-schedule-mode='wfq'";
                          type uint8 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Weight of WFQ scheduling strategy.";
                        }
    
                        leaf cbs {
                          type uint32 {
                            range "1..4194304";
                          }
                          units "Byte";
                          must
                            "(../pir-pbs>=../cbs) or not(../pir-pbs)";
                          description
                            "Committed burst size.";
                        }
    
                        leaf pir-pbs {
                          type uint32 {
                            range "1..4194304";
                          }
                          units "Byte";
                          must
                            "(../pir-pbs>=../cbs) or not(../cbs)";
                          description
                            "Peak burst size.";
                        }
    
                        choice cir-parameters {
                          mandatory true;
                          description
                            "Specify cir parameters.";
                          case cir {
                            description
                              "Specify cir parameters choice case as cir value.";
                            leaf cir-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "kbit/s";
                              must
                                "../pir-value>=../cir-value";
                              mandatory true;
                              description
                                "Committed information rate.";
                            }
    
                            leaf pir-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "kbit/s";
                              must
                                "../pir-value>=../cir-value";
                              mandatory true;
                              description
                                "Peak information rate.";
                            }
                          }  // case cir
    
                          case cir-percent {
                            description
                              "Specify cir parameters choice case as cir percentage value.";
                            leaf cir-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              must
                                "../pir-percentage>=../cir-percentage";
                              mandatory true;
                              description
                                "CIR percentage.";
                            }
    
                            leaf pir-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              must
                                "../pir-percentage>=../cir-percentage";
                              mandatory true;
                              description
                                "PIR percentage.";
                            }
                          }  // case cir-percent
                        }  // choice cir-parameters
                      }  // case cir-mode
                    }  // choice config-type
                  }  // list normal-mode-queue
                }  // container normal-mode-queues
    
                container share-shapings {
                  description
                    "Configure share shaping.";
                  container share-shaping {
                    when "../../mode='normal'";
                    must
                      "not(not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true'))";
                    presence
                      "create share-shape";
                    description
                      "Enable/disable share shaping. The configuration involves at least two queues, and the scheduling mode of the queues must be the same.";
                    leaf be {
                      type be-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode) and ../be='true')";
                      must
                        "../af1='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode";
                      must
                        "../af2='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode";
                      must
                        "../af3='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "BE.";
                    }
    
                    leaf af1 {
                      type af1-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode) and ../af1='true')";
                      must
                        "../af2='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode";
                      must
                        "../af3='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF1.";
                    }
    
                    leaf af2 {
                      type af2-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode) and ../af2='true')";
                      must
                        "../af3='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF2.";
                    }
    
                    leaf af3 {
                      type af3-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode) and ../af3='true')";
                      must
                        "../af4='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF3.";
                    }
    
                    leaf af4 {
                      type af4-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode) and ../af4='true')";
                      must
                        "../ef='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF4.";
                    }
    
                    leaf ef {
                      type ef-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode) and ../ef='true')";
                      must
                        "../cs6='false' or ../ef='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../ef='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "EF.";
                    }
    
                    leaf cs6 {
                      type cs6-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode) and ../cs6='true')";
                      must
                        "../cs7='false' or ../cs6='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "CS6.";
                    }
    
                    leaf cs7 {
                      type cs7-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode) and ../cs7='true')";
                      default "false";
                      description "CS7.";
                    }
    
                    leaf queue-schedule-mode {
                      type share-shape-mode;
                      must
                        "(../queue-schedule-mode='wfq' and ../weight) or (../queue-schedule-mode!='wfq' and not(../weight))";
                      default "not-config";
                      description
                        "Scheduling strategy of flow queue.";
                    }
    
                    leaf weight {
                      type uint8 {
                        range "1..100";
                      }
                      must
                        "../queue-schedule-mode='wfq' or (../queue-schedule-mode!='wfq' and not(../weight))";
                      description
                        "Weight of WFQ scheduling strategy. Weight must be deleted with queue-schedule-mode 'Wfq'.";
                    }
    
                    leaf share-shaping-pir {
                      type uint32 {
                        range "1..4294967294";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Rate of shaping.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      default "131072";
                      description
                        "Peak burst size.";
                    }
                  }  // container share-shaping
                }  // container share-shapings
    
                container share-shaping-ids {
                  when "../mode='normal'";
                  description
                    "List of configure share shaping with shap ID.";
                  list share-shaping-id {
                    must
                      "not(not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true'))";
                    key "shap-id";
                    description
                      "Configure share shaping with shap ID. The configuration involves at least two queues, and the scheduling mode of the queues must be the same.";
                    leaf shap-id {
                      type shapid-upritype;
                      description "Shap Id.";
                    }
    
                    leaf be {
                      type be-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode) and ../be='true')";
                      must
                        "../af1='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode";
                      must
                        "../af2='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode";
                      must
                        "../af3='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "BE.";
                    }
    
                    leaf af1 {
                      type af1-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode) and ../af1='true')";
                      must
                        "../af2='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode";
                      must
                        "../af3='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF1.";
                    }
    
                    leaf af2 {
                      type af2-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode) and ../af2='true')";
                      must
                        "../af3='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF2.";
                    }
    
                    leaf af3 {
                      type af3-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode) and ../af3='true')";
                      must
                        "../af4='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF3.";
                    }
    
                    leaf af4 {
                      type af4-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode) and ../af4='true')";
                      must
                        "../ef='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF4.";
                    }
    
                    leaf ef {
                      type ef-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode) and ../ef='true')";
                      must
                        "../cs6='false' or ../ef='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../ef='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "EF.";
                    }
    
                    leaf cs6 {
                      type cs6-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode) and ../cs6='true')";
                      must
                        "../cs7='false' or ../cs6='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "CS6.";
                    }
    
                    leaf cs7 {
                      type cs7-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode) and ../cs7='true')";
                      default "false";
                      description "CS7.";
                    }
    
                    leaf queue-schedule-mode {
                      type share-shape-mode;
                      must
                        "(../queue-schedule-mode='wfq' and ../weight) or (../queue-schedule-mode!='wfq' and not(../weight))";
                      default "not-config";
                      description
                        "Scheduling strategy of flow queue.";
                    }
    
                    leaf weight {
                      type uint8 {
                        range "1..100";
                      }
                      must
                        "../queue-schedule-mode='wfq' or (../queue-schedule-mode!='wfq' and not(../weight))";
                      description
                        "Weight of WFQ scheduling strategy. Weight must be deleted with queue-schedule-mode 'Wfq'.";
                    }
    
                    leaf share-shaping-pir {
                      type uint32 {
                        range "1..4294967294";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Rate of shaping.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      default "131072";
                      description
                        "Peak burst size.";
                    }
                  }  // list share-shaping-id
                }  // container share-shaping-ids
    
                container share-shape-random-discards {
                  description
                    "Configure share shaping random discard.";
                  container share-shape-random-discard {
                    when "../../mode='normal'";
                    must
                      "not(not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true'))";
                    presence
                      "create share-shape-rdmdscrd";
                    description
                      "Enable/disable share shaping random discard. The configuration involves at least two queues.";
                    leaf be {
                      type be-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode) and ../be='true')";
                      must
                        "../af1='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode";
                      must
                        "../af2='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode";
                      must
                        "../af3='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../be='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='be']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "BE.";
                    }
    
                    leaf af1 {
                      type af1-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode) and ../af1='true')";
                      must
                        "../af2='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode";
                      must
                        "../af3='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af1='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af1']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF1.";
                    }
    
                    leaf af2 {
                      type af2-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode) and ../af2='true')";
                      must
                        "../af3='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode";
                      must
                        "../af4='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af2='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af2']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF2.";
                    }
    
                    leaf af3 {
                      type af3-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode) and ../af3='true')";
                      must
                        "../af4='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode";
                      must
                        "../ef='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af3='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af3']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF3.";
                    }
    
                    leaf af4 {
                      type af4-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode) and ../af4='true')";
                      must
                        "../ef='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode";
                      must
                        "../cs6='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../af4='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='af4']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "AF4.";
                    }
    
                    leaf ef {
                      type ef-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode) and ../ef='true')";
                      must
                        "../cs6='false' or ../ef='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode";
                      must
                        "../cs7='false' or ../ef='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='ef']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "EF.";
                    }
    
                    leaf cs6 {
                      type cs6-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode) and ../cs6='true')";
                      must
                        "../cs7='false' or ../cs6='false' or ../../../normal-mode-queues/normal-mode-queue[service-class='cs6']/schedule-mode=../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode";
                      default "false";
                      description "CS6.";
                    }
    
                    leaf cs7 {
                      type cs7-type;
                      must
                        "not(not(../../../normal-mode-queues/normal-mode-queue[service-class='cs7']/schedule-mode) and ../cs7='true')";
                      default "false";
                      description "CS7.";
                    }
    
                    leaf random-discard {
                      type string {
                        length "1..3";
                        pattern
                          '(0\.[1-9])|([1-4]\.[0-9])|[1-5]|(5\.0)';
                      }
                      mandatory true;
                      description
                        "Random discard percentage-value between 0.1 to 5 and the accuracy is 0.1.";
                    }
                  }  // container share-shape-random-discard
                }  // container share-shape-random-discards
    
                container normal-mode-random-discards {
                  when "../mode='normal'";
                  description
                    "List of configure the random discard value of normal mode flow queue.";
                  list normal-mode-random-discard {
                    key "service-class";
                    max-elements 8;
                    description
                      "Configure the random discard value of normal mode flow queue.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Class of service.";
                    }
    
                    leaf random-discard {
                      type string {
                        length "1..3";
                        pattern
                          '(0\.[1-9])|([1-4]\.[0-9])|[1-5]|(5\.0)';
                      }
                      mandatory true;
                      description
                        "Random discard percentage-value between 0.1 to 5 and the accuracy is 0.1.";
                    }
                  }  // list normal-mode-random-discard
                }  // container normal-mode-random-discards
    
                container four-cos-mode-queues {
                  when "../mode='4cos'";
                  description
                    "List of configure four cos mode flow queue.";
                  list four-cos-mode-queue {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the flow queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "cos-value";
                    max-elements 4;
                    description
                      "Configure four cos mode flow queue.";
                    leaf cos-value {
                      type qos-cos-value;
                      description
                        "Service class.";
                    }
    
                    leaf schedule-mode {
                      type queue-schedule-mode;
                      mandatory true;
                      description "Priority.";
                    }
    
                    leaf weight {
                      when
                        "../schedule-mode='wfq'";
                      type uint8 {
                        range "1..100";
                      }
                      mandatory true;
                      description
                        "Weight of scheduling strategy.";
                    }
    
                    leaf shaping {
                      type uint32 {
                        range "8..4294967294";
                      }
                      units "kbit/s";
                      description
                        "Rate of shaping.";
                    }
    
                    leaf shaping-percentage {
                      when "not(../shaping)";
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      description
                        "Percentage of shaping.";
                    }
    
                    leaf pbs {
                      when
                        "../shaping or ../shaping-percentage";
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
    
                    leaf flow-wred-name {
                      type leafref {
                        path "../../../../../../wred-template/flow-wreds/flow-wred/name";
                      }
                      description "Wred name.";
                    }
                  }  // list four-cos-mode-queue
                }  // container four-cos-mode-queues
    
                container priority-mode-queues {
                  when "../mode='priority'";
                  description
                    "List of configure priority mode flow queues.";
                  list priority-mode-queue {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the flow queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "service-class";
                    max-elements 8;
                    description
                      "Configure priority mode flow queue.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Service class.";
                    }
    
                    leaf priority {
                      type uint8 {
                        range "0..3";
                      }
                      mandatory true;
                      description "Priority.";
                    }
    
                    leaf weight {
                      type uint8 {
                        range "1..100";
                      }
                      mandatory true;
                      description
                        "Weight of priority flow queue.";
                    }
    
                    leaf shaping {
                      type uint32 {
                        range "8..4294967294";
                      }
                      units "kbit/s";
                      description
                        "Rate of priority flow queue shaping.";
                    }
    
                    leaf shaping-percentage {
                      when "not(../shaping)";
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      description
                        "Percentage of shaping.";
                    }
    
                    leaf pbs {
                      when
                        "../shaping or ../shaping-percentage";
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
    
                    leaf flow-wred-name {
                      type leafref {
                        path "../../../../../../wred-template/flow-wreds/flow-wred/name";
                      }
                      description "Wred name.";
                    }
                  }  // list priority-mode-queue
                }  // container priority-mode-queues
    
                container priority-mode-schedules {
                  when "../mode='priority'";
                  description
                    "List of configure schedule parameters of priority mode flow queue.";
                  list priority-mode-schedule {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the flow queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "priority";
                    description
                      "Configure schedule parameters of priority mode flow queue.";
                    leaf priority {
                      type uint8 {
                        range "0..3";
                      }
                      description "Priority.";
                    }
    
                    leaf schedule-mode {
                      type priority-flow-queue-schedule-mode;
                      mandatory true;
                      description "Schedule.";
                    }
                  }  // list priority-mode-schedule
                }  // container priority-mode-schedules
    
                container priority-mode-share-shapings {
                  when "../mode='priority'";
                  description
                    "List of configure priority mode flow queue share shaping.";
                  list priority-mode-share-shaping {
                    must
                      "not(not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
                    must
                      "not(not(./be) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
                    must
                      "not(not(./be) and not(./af1) and not(./af3) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
                    must
                      "not(not(./be) and not(./af1) and not(./af2) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
                    must
                      "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./ef) and not(./cs6) and not(./cs7))";
                    must
                      "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./cs6) and not(./cs7))";
                    must
                      "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs7))";
                    must
                      "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs6))";
                    key "shap-id";
                    max-elements 2;
                    description
                      "Configure priority mode flow queue share shaping.";
                    leaf shap-id {
                      type shap-id-type;
                      description "Shap id.";
                    }
    
                    leaf be {
                      type queue-select-be-type;
                      must
                        "not(../af1) or ../../../priority-mode-queues/priority-mode-queue[service-class='be']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af1']/priority";
                      must
                        "not(../af2) or ../../../priority-mode-queues/priority-mode-queue[service-class='be']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af2']/priority";
                      must
                        "not(../af3) or ../../../priority-mode-queues/priority-mode-queue[service-class='be']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af3']/priority";
                      must
                        "not(../af4) or ../../../priority-mode-queues/priority-mode-queue[service-class='be']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af4']/priority";
                      must
                        "not(../ef) or ../../../priority-mode-queues/priority-mode-queue[service-class='be']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='ef']/priority";
                      must
                        "not(../cs6) or ../../../priority-mode-queues/priority-mode-queue[service-class='be']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs6']/priority";
                      must
                        "not(../cs7) or ../../../priority-mode-queues/priority-mode-queue[service-class='be']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs7']/priority";
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/be) or not(../../priority-mode-share-shaping[shap-id='1']/be)";
                      description "Queue be.";
                    }
    
                    leaf af1 {
                      type queue-select-af1-type;
                      must
                        "not(../af2) or ../../../priority-mode-queues/priority-mode-queue[service-class='af1']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af2']/priority";
                      must
                        "not(../af3) or ../../../priority-mode-queues/priority-mode-queue[service-class='af1']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af3']/priority";
                      must
                        "not(../af4) or ../../../priority-mode-queues/priority-mode-queue[service-class='af1']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af4']/priority";
                      must
                        "not(../ef) or ../../../priority-mode-queues/priority-mode-queue[service-class='af1']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='ef']/priority";
                      must
                        "not(../cs6) or ../../../priority-mode-queues/priority-mode-queue[service-class='af1']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs6']/priority";
                      must
                        "not(../cs7) or ../../../priority-mode-queues/priority-mode-queue[service-class='af1']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs7']/priority";
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/af1) or not(../../priority-mode-share-shaping[shap-id='1']/af1)";
                      description "Queue af1.";
                    }
    
                    leaf af2 {
                      type queue-select-af2-type;
                      must
                        "not(../af3) or ../../../priority-mode-queues/priority-mode-queue[service-class='af2']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af3']/priority";
                      must
                        "not(../af4) or ../../../priority-mode-queues/priority-mode-queue[service-class='af2']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af4']/priority";
                      must
                        "not(../ef) or ../../../priority-mode-queues/priority-mode-queue[service-class='af2']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='ef']/priority";
                      must
                        "not(../cs6) or ../../../priority-mode-queues/priority-mode-queue[service-class='af2']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs6']/priority";
                      must
                        "not(../cs7) or ../../../priority-mode-queues/priority-mode-queue[service-class='af2']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs7']/priority";
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/af2) or not(../../priority-mode-share-shaping[shap-id='1']/af2)";
                      description "Queue af2.";
                    }
    
                    leaf af3 {
                      type queue-select-af3-type;
                      must
                        "not(../af4) or ../../../priority-mode-queues/priority-mode-queue[service-class='af3']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='af4']/priority";
                      must
                        "not(../ef) or ../../../priority-mode-queues/priority-mode-queue[service-class='af3']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='ef']/priority";
                      must
                        "not(../cs6) or ../../../priority-mode-queues/priority-mode-queue[service-class='af3']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs6']/priority";
                      must
                        "not(../cs7) or ../../../priority-mode-queues/priority-mode-queue[service-class='af3']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs7']/priority";
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/af3) or not(../../priority-mode-share-shaping[shap-id='1']/af3)";
                      description "Queue af3.";
                    }
    
                    leaf af4 {
                      type queue-select-af4-type;
                      must
                        "not(../ef) or ../../../priority-mode-queues/priority-mode-queue[service-class='af4']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='ef']/priority";
                      must
                        "not(../cs6) or ../../../priority-mode-queues/priority-mode-queue[service-class='af4']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs6']/priority";
                      must
                        "not(../cs7) or ../../../priority-mode-queues/priority-mode-queue[service-class='af4']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs7']/priority";
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/af4) or not(../../priority-mode-share-shaping[shap-id='1']/af4)";
                      description "Queue af4.";
                    }
    
                    leaf ef {
                      type queue-select-ef-type;
                      must
                        "not(../cs6) or ../../../priority-mode-queues/priority-mode-queue[service-class='ef']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs6']/priority";
                      must
                        "not(../cs7) or ../../../priority-mode-queues/priority-mode-queue[service-class='ef']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs7']/priority";
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/ef) or not(../../priority-mode-share-shaping[shap-id='1']/ef)";
                      description "Queue ef.";
                    }
    
                    leaf cs6 {
                      type queue-select-cs6-type;
                      must
                        "not(../cs7) or ../../../priority-mode-queues/priority-mode-queue[service-class='cs6']/priority=../../../priority-mode-queues/priority-mode-queue[service-class='cs7']/priority";
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/cs6) or not(../../priority-mode-share-shaping[shap-id='1']/cs6)";
                      description "Queue cs6.";
                    }
    
                    leaf cs7 {
                      type queue-select-cs7-type;
                      must
                        "not(../../priority-mode-share-shaping[shap-id='not-config']/cs7) or not(../../priority-mode-share-shaping[shap-id='1']/cs7)";
                      description "Queue cs7.";
                    }
    
                    leaf schedule-mode {
                      type priority-flow-queue-schedule-mode;
                      description
                        "Share shapig schedule mode.";
                    }
    
                    leaf weight {
                      type uint8 {
                        range "1..100";
                      }
                      description
                        "Weight scheduling strategy.";
                    }
    
                    leaf share-shaping-pir {
                      type uint32 {
                        range "1..4294967294";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Rate of share shaping.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      default "131072";
                      description
                        "Peak burst size.";
                    }
                  }  // list priority-mode-share-shaping
                }  // container priority-mode-share-shapings
    
                container eight-cos-mode-queues {
                  when "../mode='8cos-enhance'";
                  description
                    "List of configure the scheduling parameters of eight cos mode flow queue.";
                  list eight-cos-mode-queue {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the flow queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "cos";
                    max-elements 8;
                    description
                      "Configure the scheduling parameters of eight cos mode flow queue.";
                    leaf cos {
                      type uint8 {
                        range "0..7";
                      }
                      description
                        "Class of service.";
                    }
    
                    container flow-wred {
                      description
                        "Configure flow wred.";
                      leaf name {
                        type leafref {
                          path "../../../../../../../wred-template/flow-wreds/flow-wred/name";
                        }
                        description
                          "Flow wred name.";
                      }
                    }  // container flow-wred
    
                    container car-mode {
                      when
                        "../cos=5 or ../cos=6 or ../cos=7";
                      presence "create car-mode";
                      description
                        "Enable/disable car mode.";
                    }  // container car-mode
    
                    container remark-color {
                      presence
                        "create remark-color";
                      description
                        "Enable/disable remark color.";
                    }  // container remark-color
    
                    container parent-priority {
                      ext:generated-by "system" {
                        description "The instances are created and deleted following the parameters of eight cos mode flow queue.";
                      }
                      ext:operation-exclude "create" {
                        description "The instances cannot be created.";
                      }
                      must
                        "cir-parent-priority < pir-parent-priority";
                      presence
                        "create parent-priority";
                      description
                        "Configure parent priority.";
                      leaf cir-parent-priority {
                        type uint8 {
                          range "0..2";
                        }
                        mandatory true;
                        description
                          "Cir parent priority value.";
                      }
    
                      leaf cir-weight {
                        ext:dynamic-default {
                          ext:default-value "10" {
                            when "../../cos=0 or ../../cos=1 or ../../cos=2";
                            description "The default value is 10 when cos is 0, 1 or 2.";
                          }
                          ext:default-value "15" {
                            when "../../cos=3 or ../../cos=4";
                            description "The default value is 15 when cos is 3 or 4.";
                          }
                          ext:default-value "20" {
                            when "../../cos=5 or ../../cos=6 or ../../cos=7";
                            description "The default value is 20 when cos is 5, 6 or 7.";
                          }
                        }
                        type uint8 {
                          range "1..100";
                        }
                        description
                          "Cir weight.";
                      }
    
                      leaf pir-parent-priority {
                        type uint8 {
                          range "1..3";
                        }
                        mandatory true;
                        description
                          "Pir parent priority value.";
                      }
    
                      leaf pir-weight {
                        ext:dynamic-default {
                          ext:default-value "10" {
                            when "../../cos=0 or ../../cos=1 or ../../cos=2";
                            description "The default value is 10 when cos is 0, 1 or 2.";
                          }
                          ext:default-value "15" {
                            when "../../cos=3 or ../../cos=4";
                            description "The default value is 15 when cos is 3 or 4.";
                          }
                          ext:default-value "20" {
                            when "../../cos=5 or ../../cos=6 or ../../cos=7";
                            description "The default value is 20 when cos is 5, 6 or 7.";
                          }
                        }
                        type uint8 {
                          range "1..100";
                        }
                        description
                          "Pir weight.";
                      }
                    }  // container parent-priority
    
                    container pir {
                      must
                        "pbs>=cbs or not(pbs) or not(cbs)";
                      presence "create pir";
                      description
                        "Configure pir of flow queue.";
                      choice parameter {
                        mandatory true;
                        description
                          "Specify parameter.";
                        case value-mode {
                          description
                            "Specify pir parameter choice case as value mode.";
                          leaf pir-value {
                            type uint32 {
                              range
                                "8..4294967294";
                            }
                            units "kbit/s";
                            must
                              "../pir-value>=../cir-value or not(../cir-value)";
                            mandatory true;
                            description
                              "Peak information rate.";
                          }
    
                          leaf cir-value {
                            type uint32 {
                              range
                                "8..4294967294";
                            }
                            units "kbit/s";
                            must
                              "../pir-value>=../cir-value";
                            description
                              "Committed information rate.";
                          }
                        }  // case value-mode
    
                        case percent-mode {
                          description
                            "Specify pir parameter choice case as percent mode.";
                          leaf pir-percent {
                            type uint8 {
                              range "0..100";
                            }
                            units "%";
                            must
                              "../pir-percent>=../cir-percent or not(../cir-percent)";
                            mandatory true;
                            description
                              "Peak information rate percent.";
                          }
    
                          leaf cir-percent {
                            type uint8 {
                              range "0..100";
                            }
                            units "%";
                            must
                              "../pir-percent>=../cir-percent";
                            description
                              "Committed information rate percent.";
                          }
                        }  // case percent-mode
                      }  // choice parameter
    
                      leaf pbs {
                        type uint32 {
                          range "1..max";
                        }
                        units "Byte";
                        description
                          "Peak burst size.";
                      }
    
                      leaf cbs {
                        when
                          "../cir-value or ../cir-percent";
                        type uint32 {
                          range "1..max";
                        }
                        units "Byte";
                        description
                          "Committed burst size.";
                      }
                    }  // container pir
                  }  // list eight-cos-mode-queue
                }  // container eight-cos-mode-queues
              }  // list flow-queue
            }  // container flow-queues
    
            container profiles {
              description
                "List of configure QoS profile.";
              list profile {
                key "name";
                max-elements 4095;
                description
                  "Configure QoS profile.";
                leaf name {
                  type qos-profile-template-name;
                  description
                    "Name of qos profile.";
                }
    
                leaf mode {
                  ext:operation-exclude "update" {
                    description "After profile template is created, the node cannot be modified.";
                  }
                  type profile-template-type;
                  mandatory true;
                  description
                    "Profile Template Mode. This node does not support modification.";
                }
    
                leaf description {
                  type string {
                    length "1..63";
                  }
                  description
                    "Profile template description.";
                }
    
                container user-queues {
                  when "../mode!='8cos-enhance'";
                  description
                    "List of configure user queue.";
                  list user-queue {
                    key "direction";
                    max-elements 2;
                    description
                      "Configure user queue.";
                    leaf direction {
                      type all-direction-type;
                      description "Direction.";
                    }
    
                    choice config-type {
                      mandatory true;
                      description
                        "Specify config type.";
                      case cir-mode {
                        description
                          "Specify config type choice case as cir mode.";
                        leaf cir {
                          type uint32 {
                            range
                              "0 | 16..4294967294";
                          }
                          units "kbit/s";
                          must "../pir>=../cir";
                          mandatory true;
                          description
                            "Committed information rate.";
                        }
    
                        leaf pir {
                          type uint32 {
                            range
                              "0 | 16..4294967294";
                          }
                          units "kbit/s";
                          must "../pir>=../cir";
                          mandatory true;
                          description
                            "Peak information rate.";
                        }
                      }  // case cir-mode
    
                      case cir-percent-mode {
                        description
                          "Specify config type choice case as cir percentage mode.";
                        leaf cir-percent {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          must
                            "../pir-percent>=../cir-percent";
                          mandatory true;
                          description
                            "Cir percentage.";
                        }
    
                        leaf pir-percent {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          must
                            "../pir-percent>=../cir-percent";
                          mandatory true;
                          description
                            "Pir percentage.";
                        }
                      }  // case cir-percent-mode
                    }  // choice config-type
    
                    leaf cbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      description
                        "Committed burst size.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      must "../pbs>=../cbs";
                      description
                        "Peak burst size.";
                    }
    
                    leaf priority-level-id {
                      type priority-level-type;
                      default "low";
                      description
                        "PIR priority.";
                    }
    
                    leaf flow-queue-name {
                      type leafref {
                        path "../../../../../flow-queues/flow-queue/name";
                      }
                      must
                        "../../../../../flow-queues/flow-queue[name=current()]/mode!='8cos-enhance' and not(../../../../../flow-queues/flow-queue[name=current()]/mode='4cos' and ../direction='inbound')";
                      description "Flow queue.";
                    }
    
                    leaf flow-mapping-name {
                      type leafref {
                        path "../../../../../flow-mappings/flow-mapping/name";
                      }
                      description
                        "Flow mapping.";
                    }
    
                    leaf user-group-queue-name {
                      type leafref {
                        path "../../../../../user-group-queues/user-group-queue/name";
                      }
                      must
                        "(../../../../../user-group-queues/user-group-queue[name=current()]/mode!='priority' and ../direction='inbound') or (../direction!='inbound')";
                      description
                        "User group queue.";
                    }
    
                    leaf service-template-name {
                      type leafref {
                        path "../../../../../service-templates/service-template/name";
                      }
                      description
                        "Service template.";
                    }
    
                    leaf queue-4cos-mapping-name {
                      when
                        "../flow-queue-name and ../../../../../flow-queues/flow-queue[name=current()/../flow-queue-name]/mode='4cos'";
                      type leafref {
                        path "../../../../../queue-4cos-mappings/queue-4cos-mapping/name";
                      }
                      description
                        "Queue 4cos mapping.";
                    }
    
                    leaf adjust-on-card {
                      type adjust-on-card-type;
                      default "disable";
                      description
                        "Adjust on card flag.";
                    }
                  }  // list user-queue
                }  // container user-queues
    
                container user-queue-weights {
                  when "../mode!='8cos-enhance'";
                  description
                    "List of configure user queue weight.";
                  list user-queue-weight {
                    ext:generated-by "system" {
                      description "The instance is generated automatically.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "direction";
                    max-elements 2;
                    description
                      "Configure user queue weight.";
                    leaf direction {
                      type qos-direction-type;
                      description "Direction.";
                    }
    
                    leaf weight {
                      type uint8 {
                        range "1..63";
                      }
                      default "10";
                      description "SQ Weight.";
                    }
                  }  // list user-queue-weight
                }  // container user-queue-weights
    
                container user-queue-time-ranges {
                  when "(../mode='time-range')";
                  must
                    "count(./user-queue-time-range[direction = 'inbound']/time-range-name)<=2 and count(./user-queue-time-range[direction = 'outbound']/time-range-name)<=2 and count(./user-queue-time-range[direction = 'all']/time-range-name)<=2";
                  description
                    "List of configure user queue time range.";
                  list user-queue-time-range {
                    must
                      "(./direction='all' and not (../user-queue-time-range[direction='inbound']) and not(../user-queue-time-range[direction='outbound']) or (./direction!='all' and not(../user-queue-time-range[direction='all'])))";
                    must
                      "./service-template-name or ./adjust-on-card='disable'";
                    key "direction time-range-name";
                    max-elements 4;
                    description
                      "Configure user queue time range.";
                    leaf direction {
                      type all-direction-type;
                      description "Direction.";
                    }
    
                    leaf time-range-name {
                      type leafref {
                        path "/timerange:time-range/timerange:time-range-instances/timerange:time-range-instance/timerange:name";
                      }
                      description
                        "Time range name.";
                    }
    
                    leaf cir {
                      type uint32 {
                        range
                          "0 | 16..4294967294";
                      }
                      units "kbit/s";
                      must "../pir>=../cir";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf pir {
                      type uint32 {
                        range
                          "0 | 16..4294967294";
                      }
                      units "kbit/s";
                      must "../pir>=../cir";
                      mandatory true;
                      description
                        "Peak information rate.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      must
                        "not(../pbs) or ../pbs>=../cbs";
                      description
                        "Committed burst size.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      must
                        "not(../cbs) or ../pbs>=../cbs";
                      description
                        "Peak burst size.";
                    }
    
                    leaf priority-level-id {
                      type priority-level-type;
                      default "low";
                      description
                        "PIR priority.";
                    }
    
                    leaf flow-queue-name {
                      type leafref {
                        path "../../../../../flow-queues/flow-queue/name";
                      }
                      must
                        "../../../../../flow-queues/flow-queue[name=current()]/mode='normal'";
                      description
                        "Flow queue name.";
                    }
    
                    leaf flow-mapping-name {
                      type leafref {
                        path "../../../../../flow-mappings/flow-mapping/name";
                      }
                      description
                        "Flow mapping name.";
                    }
    
                    leaf user-group-queue-name {
                      type leafref {
                        path "../../../../../user-group-queues/user-group-queue/name";
                      }
                      must
                        "(../../../../../user-group-queues/user-group-queue[name=current()]/mode!='priority' and ../direction='inbound') or (../direction!='inbound')";
                      description
                        "User group queue name.";
                    }
    
                    leaf service-template-name {
                      type leafref {
                        path "../../../../../service-templates/service-template/name";
                      }
                      description
                        "Service template name.";
                    }
    
                    leaf adjust-on-card {
                      type adjust-on-card-type;
                      default "disable";
                      description
                        "Adjust on card flag.";
                    }
                  }  // list user-queue-time-range
                }  // container user-queue-time-ranges
    
                container cars {
                  when "../mode='normal'";
                  description
                    "List of configure CAR action.";
                  list car {
                    must
                      "(./direction='all' and not(../car[direction='inbound']) and not(../car[direction='outbound'])) or (./direction!='all' and not(../car[direction='all']))";
                    must
                      "(./cir-value and ./cbs) or not(./cir-value)";
                    key "type direction";
                    description
                      "Configure CAR action.";
                    leaf type {
                      type qos-car-type;
                      description
                        "Type of a CAR action.";
                    }
    
                    leaf direction {
                      type car-direction-type;
                      description
                        "Direction of a CAR action.";
                    }
    
                    choice cir-parameters {
                      mandatory true;
                      description
                        "Specify cir parameters.";
                      case cir {
                        description
                          "Specify cir parameters choice case as cir value.";
                        leaf cir-value {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          units "kbit/s";
                          must
                            "../cbs and (not(../pir-value) or ../pir-value>=../cir-value)";
                          mandatory true;
                          description
                            "Committed information rate.";
                        }
    
                        leaf pir-value {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          units "kbit/s";
                          must
                            "../pir-value>=../cir-value";
                          description
                            "Peak information rate.";
                        }
                      }  // case cir
    
                      case cir-percentage {
                        description
                          "Specify cir parameters choice case as cir percentage value.";
                        leaf cir-percent {
                          when "../type='car'";
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          must
                            "not(../pir-percent) or ../pir-percent>=../cir-percent";
                          mandatory true;
                          description
                            "Committed information rate percent.";
                        }
    
                        leaf pir-percent {
                          when "../type='car'";
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          must
                            "../pir-percent>=../cir-percent";
                          description
                            "Peak information rate percent.";
                        }
                      }  // case cir-percentage
                    }  // choice cir-parameters
    
                    leaf cbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      description
                        "Committed burst size.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      must "../cbs";
                      description
                        "Peak burst size.";
                    }
    
                    leaf green-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the green packets.";
                    }
    
                    leaf green-service-class {
                      when
                        "../green-action='pass'";
                      type qos-service-class;
                      description
                        "Service class marked to the green packets.";
                    }
    
                    leaf green-color {
                      when
                        "../green-service-class";
                      type qos-color;
                      mandatory true;
                      description
                        "Color marked to the green packets.";
                    }
    
                    leaf yellow-action {
                      type color-action-type;
                      description
                        "Action performed to the yellow packets.";
                    }
    
                    leaf yellow-service-class {
                      when
                        "../yellow-action='pass'";
                      type qos-service-class;
                      description
                        "Service class marked to the yellow packets.";
                    }
    
                    leaf yellow-color {
                      when
                        "../yellow-service-class";
                      type qos-color;
                      mandatory true;
                      description
                        "Color marked to the yellow packets.";
                    }
    
                    leaf red-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the red packets.";
                    }
    
                    leaf red-service-class {
                      when
                        "../red-action='pass'";
                      type qos-service-class;
                      description
                        "Service class marked to the red packets.";
                    }
    
                    leaf red-color {
                      when
                        "../red-service-class";
                      type qos-color;
                      mandatory true;
                      description
                        "Color marked to the red packets.";
                    }
    
                    leaf color-aware {
                      type color-aware-type;
                      description "Color Aware.";
                    }
                  }  // list car
                }  // container cars
    
                container profile-cars {
                  when "../mode='normal'";
                  description
                    "List of configure CAR action.";
                  list profile-car {
                    key "type direction";
                    description
                      "Configure CAR action.";
                    leaf type {
                      type profile-car-type;
                      description
                        "Type of a CAR action.";
                    }
    
                    leaf direction {
                      type profile-car-direction-type;
                      description
                        "Direction of a CAR action.";
                    }
    
                    leaf cir-value {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      must
                        "../pir-value>=../cir-value";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf pir-value {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      must
                        "../pir-value>=../cir-value";
                      mandatory true;
                      description
                        "Peak information rate.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Committed burst size.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "1..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Peak burst size.";
                    }
    
                    leaf priority-aware {
                      type priority-aware-type;
                      description
                        "Priority aware.";
                    }
    
                    leaf priority-template-name {
                      when "../priority-aware";
                      type leafref {
                        path "../../../../../priority-templates/priority-template/name";
                      }
                      default "default";
                      description
                        "Priority template name.";
                    }
    
                    leaf adjust-value {
                      type int32 {
                        range "-32..31";
                      }
                      default "4";
                      description
                        "Adjust value.";
                    }
    
                    leaf green-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the green packets.";
                    }
    
                    leaf green-service-class {
                      when
                        "../green-action='pass'";
                      type qos-service-class;
                      description
                        "Service class marked to the green packets.";
                    }
    
                    leaf green-color {
                      when
                        "../green-service-class";
                      type qos-color;
                      mandatory true;
                      description
                        "Color marked to the green packets.";
                    }
    
                    leaf yellow-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the yellow packets.";
                    }
    
                    leaf yellow-service-class {
                      when
                        "../yellow-action='pass'";
                      type qos-service-class;
                      description
                        "Service class marked to the yellow packets.";
                    }
    
                    leaf yellow-color {
                      when
                        "../yellow-service-class";
                      type qos-color;
                      mandatory true;
                      description
                        "Color marked to the yellow packets.";
                    }
    
                    leaf red-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the red packets.";
                    }
    
                    leaf red-service-class {
                      when
                        "../red-action='pass'";
                      type qos-service-class;
                      description
                        "Service class marked to the red packets.";
                    }
    
                    leaf red-color {
                      when
                        "../red-service-class";
                      type qos-color;
                      mandatory true;
                      description
                        "Color marked to the red packets.";
                    }
    
                    leaf color-aware {
                      type color-aware-type;
                      description "Color Aware.";
                    }
                  }  // list profile-car
                }  // container profile-cars
    
                container suppressions {
                  when "../mode='normal'";
                  description
                    "List of configure suppression action.";
                  list suppression {
                    must
                      "(./type='broadcast' and ./direction!='outbound' and not (../suppression[type!='bu']) and not (../suppression[type!='bum']) or not (./type='broadcast') or ./direction='outbound') or (./type='unknow-unicast' and ./direction!='outbound' and not (../suppression[type!='bu']) and not (../suppression[type!='bum']) or not (./type='unknow-unicast') or ./direction='outbound') or (./type='multicast' and ./direction!='outbound' and not (../suppression[type!='bum']) or not (./type='multicast') or ./direction='outbound')";
                    key "type direction";
                    description
                      "Configure suppression action.";
                    leaf type {
                      type qos-suppression-type;
                      description
                        "Type of a suppression action.";
                    }
    
                    leaf direction {
                      type suppression-direction-type;
                      description "Direction.";
                    }
    
                    leaf cir {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Committed burst size.";
                    }
    
                    leaf adjust-value {
                      type int32 {
                        range "-32..31";
                      }
                      default "4";
                      description
                        "Adjust value.";
                    }
                  }  // list suppression
                }  // container suppressions
    
                container mpls-tunnel-flow-queues {
                  description
                    "Configure MPLS tunnel flow queue.";
                  container mpls-tunnel-flow-queue {
                    when "../../mode='normal'";
                    presence
                      "Create mpls-tunnel-flow-queue.";
                    description
                      "Enable/disable MPLS tunnel flow queue.";
                    leaf flow-queue-name {
                      type leafref {
                        path "../../../../../flow-queues/flow-queue/name";
                      }
                      must
                        "../../../../../flow-queues/flow-queue[name=current()]/mode='normal'";
                      mandatory true;
                      description "Flow queue.";
                    }
    
                    leaf flow-mapping-name {
                      type leafref {
                        path "../../../../../flow-mappings/flow-mapping/name";
                      }
                      description
                        "Flow mapping.";
                    }
    
                    leaf user-group-queue-name {
                      type leafref {
                        path "../../../../../user-group-queues/user-group-queue/name";
                      }
                      must
                        "../../../../../user-group-queues/user-group-queue[name=current()]/mode='normal'";
                      description
                        "User group queue.";
                    }
    
                    leaf service-template-name {
                      type leafref {
                        path "../../../../../service-templates/service-template/name";
                      }
                      description
                        "Service template.";
                    }
                  }  // container mpls-tunnel-flow-queue
                }  // container mpls-tunnel-flow-queues
    
                container eight-cos-mode-queues {
                  when "../mode='8cos-enhance'";
                  description
                    "List of configure eight cos mode queue.";
                  list eight-cos-mode-queue {
                    must
                      "(direction='all' and not(../eight-cos-mode-queue[direction='inbound']) and not(../eight-cos-mode-queue[direction='outbound']) or (direction!='all' and not(../eight-cos-mode-queue[direction='all'])))";
                    key "direction";
                    max-elements 2;
                    description
                      "Configure eight cos mode queue.";
                    leaf direction {
                      type all-direction-type;
                      description "Direction.";
                    }
    
                    leaf user-queue-name {
                      type leafref {
                        path "../../../../../user-queue-templates/user-queue-template/name";
                      }
                      mandatory true;
                      description "User queue.";
                    }
    
                    leaf flow-queue-name {
                      type leafref {
                        path "../../../../../flow-queues/flow-queue/name";
                      }
                      must
                        "../../../../../flow-queues/flow-queue[name=current()]/mode='8cos-enhance'";
                      description "Flow queue.";
                    }
    
                    leaf user-group-queue-name {
                      type leafref {
                        path "../../../../../user-group-queues/user-group-queue/name";
                      }
                      must
                        "not(../../../../../user-group-queues/user-group-queue[name=current()]/mode='priority' and ../direction='inbound')";
                      description
                        "User group queue.";
                    }
                  }  // list eight-cos-mode-queue
                }  // container eight-cos-mode-queues
              }  // list profile
            }  // container profiles
    
            container flow-mappings {
              description
                "List of configure flow mapping.";
              list flow-mapping {
                key "name";
                max-elements 15;
                description
                  "Configure flow mapping. This object has default configurations.";
                leaf name {
                  type template-name;
                  description
                    "Flow mapping name.";
                }
    
                container parameters {
                  description
                    "List of configure parameters of flow mapping.";
                  list parameter {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the flow mapping template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "flow-queue-service-class";
                    max-elements 8;
                    description
                      "Configure parameters of flow mapping.";
                    leaf flow-queue-service-class {
                      type qos-service-class;
                      description
                        "Flow queue service class.";
                    }
    
                    leaf port-queue-service-class {
                      type qos-service-class;
                      mandatory true;
                      description
                        "Port queue service class.";
                    }
                  }  // list parameter
                }  // container parameters
              }  // list flow-mapping
            }  // container flow-mappings
    
            container queue-4cos-mappings {
              description
                "List of configure queue 4cos mapping.";
              list queue-4cos-mapping {
                key "name";
                max-elements 8;
                description
                  "Configure queue 4cos mapping. This object has default configurations.";
                leaf name {
                  type template-name;
                  description
                    "Queue 4cos mapping name.";
                }
    
                container parameters {
                  description
                    "List of configure parameters of queue 4cos mapping.";
                  list parameter {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the 4cos mapping template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "flow-queue-service-class";
                    max-elements 8;
                    description
                      "Configure parameters of queue 4cos mapping.";
                    leaf flow-queue-service-class {
                      type qos-service-class;
                      description
                        "Flow queue service class.";
                    }
    
                    leaf four-queue-service-class {
                      type qos-cos-value;
                      mandatory true;
                      description
                        "Queue 4cos service class.";
                    }
                  }  // list parameter
                }  // container parameters
              }  // list queue-4cos-mapping
            }  // container queue-4cos-mappings
    
            container user-group-queues {
              description
                "List of configure user group queue.";
              list user-group-queue {
                key "name";
                max-elements 8191;
                description
                  "Configure user group queue.";
                leaf name {
                  type template-name;
                  description
                    "User group queue name.";
                }
    
                leaf mode {
                  ext:operation-exclude "update" {
                    description "After the user group queue template is created, the node cannot be modified.";
                  }
                  type gq-template-type;
                  mandatory true;
                  description
                    "User group queue mode. This node does not support modification.";
                }
    
                leaf mode-template {
                  when "../mode='normal'";
                  type mode-template-status;
                  description
                    "User group queue mode template status. After the user-group-queue is applied, the attribute of this node cannot be changed.";
                }
    
                container shapings {
                  when "../mode='normal'";
                  description
                    "List of configure user group queue shaping.";
                  list shaping {
                    key "direction";
                    max-elements 2;
                    description
                      "Configure user group queue shaping.";
                    leaf direction {
                      type qos-direction-type;
                      description "Direction.";
                    }
    
                    leaf pir {
                      type uint32 {
                        range "66..4294967294";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Peak information rate.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "64..2097152";
                      }
                      units "Byte";
                      default "524288";
                      description
                        "Peak burst size.";
                    }
                  }  // list shaping
                }  // container shapings
    
                container shaping-priortys {
                  when "../mode='priority'";
                  description
                    "List of configure priorty user group queue shaping.";
                  list shaping-priorty {
                    key "priority direction";
                    max-elements 4;
                    description
                      "Configure priorty user group queue shaping.";
                    leaf priority {
                      type priority-shaping-type;
                      description "Priority.";
                    }
    
                    leaf direction {
                      type out-direction-type;
                      description "Direction.";
                    }
    
                    leaf shaping-value {
                      type uint32 {
                        range "66..4294967294";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Shaping value.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "64..2097152";
                      }
                      units "Byte";
                      default "524288";
                      description
                        "Peak burst size.";
                    }
                  }  // list shaping-priorty
                }  // container shaping-priortys
    
                container cir-pirs {
                  when "../mode='normal'";
                  description
                    "List of configure user group queue cir pir.";
                  list cir-pir {
                    key "direction";
                    description
                      "Configure user group queue cir pir.";
                    leaf direction {
                      type out-direction-type;
                      description "Direction.";
                    }
    
                    leaf cir {
                      type uint32 {
                        range "66..4294967294";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "64..2097152";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Committed burst size.";
                    }
    
                    leaf pir {
                      type uint32 {
                        range "66..4294967294";
                      }
                      units "kbit/s";
                      must "(../pir>=../cir)";
                      mandatory true;
                      description
                        "Peak information rate. During creation, the pir is generated based on the configured cir.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "64..2097152";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Peak burst size.";
                    }
                  }  // list cir-pir
                }  // container cir-pirs
    
                container weights {
                  when "../mode='normal'";
                  description
                    "List of configure weight.";
                  list weight {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the user group queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "direction";
                    description
                      "Configure weight.";
                    leaf direction {
                      type out-direction-type;
                      description "Direction.";
                    }
    
                    leaf weight-value {
                      type uint8 {
                        range "1..63";
                      }
                      mandatory true;
                      description
                        "Weight value.";
                    }
                  }  // list weight
                }  // container weights
    
                container user-group-queue-statisticss {
                  config false;
                  description
                    "List of user group queue statistics.";
                  list user-group-queue-statistics {
                    key "slot-id direction service-class";
                    description
                      "User group queue statistics.";
                    leaf slot-id {
                      type slot-id;
                      description "Slot id.";
                    }
    
                    leaf direction {
                      type qos-gq-direction-type;
                      description "Direction.";
                    }
    
                    leaf service-class {
                      type qos-service-class-filter;
                      description
                        "Class of service.";
                    }
    
                    leaf group-name {
                      type group-name;
                      description "Group name.";
                    }
    
                    leaf pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of passed packets.";
                    }
    
                    leaf pass-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of passed bytes.";
                    }
    
                    leaf pass-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the packets passed during the latest 30 seconds.";
                    }
    
                    leaf pass-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the bytes passed during the latest 30 seconds.";
                    }
    
                    leaf drop-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of dropped packets.";
                    }
    
                    leaf drop-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of dropped bytes.";
                    }
    
                    leaf drop-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Number of dropped bytes.";
                    }
    
                    leaf drop-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the bytes dropped during the latest 30 seconds.";
                    }
                  }  // list user-group-queue-statistics
                }  // container user-group-queue-statisticss
              }  // list user-group-queue
            }  // container user-group-queues
    
            container service-templates {
              description
                "List of configure service template. Some products have default templates. The default templates cannot be modified or deleted. The parameters of some default templates can be modified.";
              list service-template {
                key "name";
                description
                  "Configure service template.";
                leaf name {
                  type template-name;
                  description
                    "Service template name.";
                }
    
                leaf slot-id {
                  type slot-id;
                  description "Slot id.";
                }
    
                container service-lengths {
                  description
                    "List of configure length of network header.";
                  list service-length {
                    ext:generated-by "system" {
                      description "The template is generated automatically.";
                    }
                    ext:operation-exclude "create" {
                      description "The template cannot be created.";
                    }
                    key "direction";
                    max-elements 2;
                    description
                      "Configure length of network header. This node cannot be deleted.";
                    leaf direction {
                      type qos-direction-type;
                      description "Direction.";
                    }
    
                    leaf value {
                      type int32 {
                        range "-63..63";
                      }
                      mandatory true;
                      description
                        "Length value of network header.";
                    }
                  }  // list service-length
                }  // container service-lengths
    
                container service-length-on-etm {
                  description
                    "Configure length of network header on ETM.";
                  leaf value {
                    type int32 {
                      range "-63..63";
                    }
                    description
                      "Length value of network header on ETM.";
                  }
                }  // container service-length-on-etm
              }  // list service-template
            }  // container service-templates
    
            container port-queue-templates {
              description
                "List of configure port queue template.";
              list port-queue-template {
                key "name";
                max-elements 1024;
                description
                  "Configure port queue template.";
                leaf name {
                  type template-name;
                  description
                    "Port queue template name.";
                }
    
                container queues {
                  description
                    "List of configure port queue template parameter.";
                  list queue {
                    key "service-class";
                    max-elements 8;
                    description
                      "Configure port queue template parameter. This node has default configurations. The default configuration cannot be created. The current configuration cannot be changed to the default configuration. If no user configuration exists, you can check the default configurations through the queue-states node.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Service class.";
                    }
    
                    leaf port-wred-name {
                      type leafref {
                        path "../../../../../../wred-template/port-wreds/port-wred/name";
                      }
                      description
                        "Port wred name.";
                    }
    
                    choice config-type {
                      mandatory true;
                      description
                        "Specify config type.";
                      case shaping-mode {
                        description
                          "Specify config type choice case as shaping mode.";
                        leaf queue-schedule-mode {
                          type queue-schedule-mode;
                          mandatory true;
                          description
                            "Schedule Mode.";
                        }
    
                        leaf weight {
                          when
                            "../queue-schedule-mode='wfq'";
                          type uint8 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Weight of wfq scheduling strategy.";
                        }
    
                        leaf pbs {
                          when
                            "../shaping-value or ../shaping-percentage";
                          type uint32 {
                            range "1..65535";
                          }
                          units "Byte";
                          description
                            "Peak burst size.";
                        }
    
                        leaf low-latency {
                          when
                            "../queue-schedule-mode='pq'";
                          type queue-low-latency;
                          description
                            "Low latency. Some boards do not support this object.";
                        }
    
                        choice shaping-parameters {
                          description
                            "Specify shaping parameters.";
                          case shaping {
                            description
                              "Specify shaping parameters choice case as shaping value.";
                            leaf shaping-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "Mbit/s";
                              description
                                "Shaping value.";
                            }
                          }  // case shaping
    
                          case shaping-percent {
                            description
                              "Specify shaping parameters choice case as shaping percentage value.";
                            leaf shaping-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              description
                                "Shaping percentage.";
                            }
                          }  // case shaping-percent
                        }  // choice shaping-parameters
                      }  // case shaping-mode
    
                      case cir-mode {
                        description
                          "Specify config type choice case as cir mode. Some boards do not support this object.";
                        leaf cir-schedule-mode {
                          type queue-cir-schedule-mode;
                          mandatory true;
                          description
                            "Scheduling strategy of cir.";
                        }
    
                        leaf pir-schedule-mode {
                          type queue-schedule-mode;
                          mandatory true;
                          description
                            "Scheduling strategy of pir.";
                        }
    
                        leaf pir-weight {
                          when
                            "../pir-schedule-mode='wfq'";
                          type uint8 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Weight of wfq scheduling strategy.";
                        }
    
                        leaf cbs {
                          type uint32 {
                            range "1..65535";
                          }
                          units "Byte";
                          must
                            "../pir-pbs>=../cbs or not(../pir-pbs)";
                          description
                            "Committed burst size.";
                        }
    
                        leaf pir-pbs {
                          type uint32 {
                            range "1..65535";
                          }
                          units "Byte";
                          must
                            "../pir-pbs>=../cbs or not(../cbs)";
                          description
                            "Peak burst size.";
                        }
    
                        choice cir-parameters {
                          mandatory true;
                          description
                            "Specify cir parameters.";
                          case cir {
                            description
                              "Specify cir parameters choice case as cir value.";
                            leaf cir-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "Mbit/s";
                              must
                                "../pir-value>=../cir-value";
                              mandatory true;
                              description
                                "Specify cir value.";
                            }
    
                            leaf pir-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "Mbit/s";
                              must
                                "../pir-value>=../cir-value";
                              mandatory true;
                              description
                                "Peak information rate.";
                            }
                          }  // case cir
    
                          case cir-percent {
                            description
                              "Specify cir parameters choice case as cir percentage value.";
                            leaf cir-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              must
                                "../pir-percentage>=../cir-percentage";
                              mandatory true;
                              description
                                "Cir percentage.";
                            }
    
                            leaf pir-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              must
                                "../pir-percentage>=../cir-percentage";
                              mandatory true;
                              description
                                "Pir percentage.";
                            }
                          }  // case cir-percent
                        }  // choice cir-parameters
                      }  // case cir-mode
                    }  // choice config-type
                  }  // list queue
                }  // container queues
    
                container queue-states {
                  config false;
                  description
                    "List of operational state of port queue template parameter.";
                  list queue-state {
                    key "service-class";
                    description
                      "Operational state of port queue template parameter.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Service class.";
                    }
    
                    leaf port-wred-name {
                      type leafref {
                        path "../../../../../../wred-template/port-wreds/port-wred/name";
                      }
                      description
                        "Port wred name.";
                    }
    
                    choice config-type {
                      description
                        "Specify config type.";
                      case shaping-mode {
                        description
                          "Specify config type choice case as shaping mode.";
                        leaf queue-schedule-mode {
                          type queue-schedule-mode;
                          description
                            "Schedule Mode.";
                        }
    
                        leaf weight {
                          when
                            "../queue-schedule-mode='wfq'";
                          type uint8 {
                            range "1..100";
                          }
                          description
                            "Weight of wfq scheduling strategy.";
                        }
    
                        leaf pbs {
                          when
                            "../shaping-value or ../shaping-percentage";
                          type uint32 {
                            range "1..65535";
                          }
                          units "Byte";
                          description
                            "Peak burst size.";
                        }
    
                        leaf low-latency {
                          when
                            "../queue-schedule-mode='pq'";
                          type queue-low-latency;
                          description
                            "Low latency. Some boards do not support this object.";
                        }
    
                        choice shaping-parameters {
                          description
                            "Specify shaping parameters.";
                          case shaping {
                            description
                              "Specify shaping parameters choice case as shaping value.";
                            leaf shaping-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "Mbit/s";
                              description
                                "Shaping value.";
                            }
                          }  // case shaping
    
                          case shaping-percent {
                            description
                              "Specify shaping parameters choice case as shaping percentage value.";
                            leaf shaping-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              description
                                "Shaping percentage.";
                            }
                          }  // case shaping-percent
                        }  // choice shaping-parameters
                      }  // case shaping-mode
    
                      case cir-mode {
                        description
                          "Specify config type choice case as cir mode. Some boards do not support this object.";
                        leaf cir-schedule-mode {
                          type queue-cir-schedule-mode;
                          description
                            "Scheduling strategy of cir.";
                        }
    
                        leaf pir-schedule-mode {
                          type queue-schedule-mode;
                          description
                            "Scheduling strategy of pir.";
                        }
    
                        leaf pir-weight {
                          when
                            "../pir-schedule-mode='wfq'";
                          type uint8 {
                            range "1..100";
                          }
                          description
                            "Weight of wfq scheduling strategy.";
                        }
    
                        leaf cbs {
                          type uint32 {
                            range "1..65535";
                          }
                          units "Byte";
                          description
                            "Committed burst size.";
                        }
    
                        leaf pir-pbs {
                          type uint32 {
                            range "1..65535";
                          }
                          units "Byte";
                          description
                            "Peak burst size.";
                        }
    
                        choice cir-parameters {
                          description
                            "Specify cir parameters.";
                          case cir {
                            description
                              "Specify cir parameters choice case as cir value.";
                            leaf cir-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "Mbit/s";
                              description
                                "Specify cir value.";
                            }
    
                            leaf pir-value {
                              type uint32 {
                                range
                                  "0..4294967294";
                              }
                              units "Mbit/s";
                              description
                                "Peak information rate.";
                            }
                          }  // case cir
    
                          case cir-percent {
                            description
                              "Specify cir parameters choice case as cir percentage value.";
                            leaf cir-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              description
                                "Cir percentage.";
                            }
    
                            leaf pir-percentage {
                              type uint8 {
                                range "0..100";
                              }
                              units "%";
                              description
                                "Pir percentage.";
                            }
                          }  // case cir-percent
                        }  // choice cir-parameters
                      }  // case cir-mode
                    }  // choice config-type
                  }  // list queue-state
                }  // container queue-states
    
                container share-shapes {
                  description
                    "Configure port queue share shaping.";
                  container share-shape {
                    must
                      "not(not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./ef='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./cs6='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs7='true'))";
                    must
                      "not(not(./be='true') and not(./af1='true') and not(./af2='true') and not(./af3='true') and not(./af4='true') and not(./ef='true') and not(./cs6='true'))";
                    presence
                      "Create share-shape.";
                    description
                      "Enable/disable port queue share shaping. The configuration involves at least two queues, and the scheduling mode of the queues must be the same.";
                    leaf be {
                      type be-type;
                      must
                        "../af1='false' or ../be='false' or ../../../queues/queue[service-class='be']/queue-schedule-mode=../../../queues/queue[service-class='af1']/queue-schedule-mode or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and ../../../queues/queue[service-class='af1']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='be']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af1']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and not(../../../queues/queue[service-class='af1']/queue-schedule-mode))";
                      must
                        "../af2='false' or ../be='false' or ../../../queues/queue[service-class='be']/queue-schedule-mode=../../../queues/queue[service-class='af2']/queue-schedule-mode or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and ../../../queues/queue[service-class='af2']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='be']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af2']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and not(../../../queues/queue[service-class='af2']/queue-schedule-mode))";
                      must
                        "../af3='false' or ../be='false' or ../../../queues/queue[service-class='be']/queue-schedule-mode=../../../queues/queue[service-class='af3']/queue-schedule-mode or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and ../../../queues/queue[service-class='af3']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='be']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af3']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and not(../../../queues/queue[service-class='af3']/queue-schedule-mode))";
                      must
                        "../af4='false' or ../be='false' or ../../../queues/queue[service-class='be']/queue-schedule-mode=../../../queues/queue[service-class='af4']/queue-schedule-mode or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and ../../../queues/queue[service-class='af4']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='be']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af4']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and not(../../../queues/queue[service-class='af4']/queue-schedule-mode))";
                      must
                        "../ef='false' or ../be='false' or ../../../queues/queue[service-class='be']/queue-schedule-mode=../../../queues/queue[service-class='ef']/queue-schedule-mode or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and ../../../queues/queue[service-class='ef']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='be']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='ef']/queue-schedule-mode))";
                      must
                        "../cs6='false' or ../be='false' or ../../../queues/queue[service-class='be']/queue-schedule-mode=../../../queues/queue[service-class='cs6']/queue-schedule-mode or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and ../../../queues/queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='be']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs6']/queue-schedule-mode))";
                      must
                        "../cs7='false' or ../be='false' or ../../../queues/queue[service-class='be']/queue-schedule-mode=../../../queues/queue[service-class='cs7']/queue-schedule-mode or (not(../../../queues/queue[service-class='be']/queue-schedule-mode) and ../../../queues/queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='be']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode))";
                      default "false";
                      description "BE.";
                    }
    
                    leaf af1 {
                      type af1-type;
                      must
                        "../af2='false' or ../af1='false' or ../../../queues/queue[service-class='af1']/queue-schedule-mode=../../../queues/queue[service-class='af2']/queue-schedule-mode or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and ../../../queues/queue[service-class='af2']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af1']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af2']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and not(../../../queues/queue[service-class='af2']/queue-schedule-mode))";
                      must
                        "../af3='false' or ../af1='false' or ../../../queues/queue[service-class='af1']/queue-schedule-mode=../../../queues/queue[service-class='af3']/queue-schedule-mode or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and ../../../queues/queue[service-class='af3']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af1']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af3']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and not(../../../queues/queue[service-class='af3']/queue-schedule-mode))";
                      must
                        "../af4='false' or ../af1='false' or ../../../queues/queue[service-class='af1']/queue-schedule-mode=../../../queues/queue[service-class='af4']/queue-schedule-mode or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and ../../../queues/queue[service-class='af4']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af1']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af4']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and not(../../../queues/queue[service-class='af4']/queue-schedule-mode))";
                      must
                        "../ef='false' or ../af1='false' or ../../../queues/queue[service-class='af1']/queue-schedule-mode=../../../queues/queue[service-class='ef']/queue-schedule-mode or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and ../../../queues/queue[service-class='ef']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af1']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='ef']/queue-schedule-mode))";
                      must
                        "../cs6='false' or ../af1='false' or ../../../queues/queue[service-class='af1']/queue-schedule-mode=../../../queues/queue[service-class='cs6']/queue-schedule-mode or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and ../../../queues/queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af1']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs6']/queue-schedule-mode))";
                      must
                        "../cs7='false' or ../af1='false' or ../../../queues/queue[service-class='af1']/queue-schedule-mode=../../../queues/queue[service-class='cs7']/queue-schedule-mode or (not(../../../queues/queue[service-class='af1']/queue-schedule-mode) and ../../../queues/queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af1']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode))";
                      default "false";
                      description "AF1.";
                    }
    
                    leaf af2 {
                      type af2-type;
                      must
                        "../af3='false' or ../af2='false' or ../../../queues/queue[service-class='af2']/queue-schedule-mode=../../../queues/queue[service-class='af3']/queue-schedule-mode or (not(../../../queues/queue[service-class='af2']/queue-schedule-mode) and ../../../queues/queue[service-class='af3']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af2']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af3']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='af2']/queue-schedule-mode) and not(../../../queues/queue[service-class='af3']/queue-schedule-mode))";
                      must
                        "../af4='false' or ../af2='false' or ../../../queues/queue[service-class='af2']/queue-schedule-mode=../../../queues/queue[service-class='af4']/queue-schedule-mode or (not(../../../queues/queue[service-class='af2']/queue-schedule-mode) and ../../../queues/queue[service-class='af4']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af2']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af4']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='af2']/queue-schedule-mode) and not(../../../queues/queue[service-class='af4']/queue-schedule-mode))";
                      must
                        "../ef='false' or ../af2='false' or ../../../queues/queue[service-class='af2']/queue-schedule-mode=../../../queues/queue[service-class='ef']/queue-schedule-mode or (not(../../../queues/queue[service-class='af2']/queue-schedule-mode) and ../../../queues/queue[service-class='ef']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af2']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='ef']/queue-schedule-mode))";
                      must
                        "../cs6='false' or ../af2='false' or ../../../queues/queue[service-class='af2']/queue-schedule-mode=../../../queues/queue[service-class='cs6']/queue-schedule-mode or (not(../../../queues/queue[service-class='af2']/queue-schedule-mode) and ../../../queues/queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af2']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs6']/queue-schedule-mode))";
                      must
                        "../cs7='false' or ../af2='false' or ../../../queues/queue[service-class='af2']/queue-schedule-mode=../../../queues/queue[service-class='cs7']/queue-schedule-mode or (not(../../../queues/queue[service-class='af2']/queue-schedule-mode) and ../../../queues/queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af2']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode))";
                      default "false";
                      description "AF2.";
                    }
    
                    leaf af3 {
                      type af3-type;
                      must
                        "../af4='false' or ../af3='false' or ../../../queues/queue[service-class='af3']/queue-schedule-mode=../../../queues/queue[service-class='af4']/queue-schedule-mode or (not(../../../queues/queue[service-class='af3']/queue-schedule-mode) and ../../../queues/queue[service-class='af4']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af3']/queue-schedule-mode='wfq' and not(../../../queues/queue[service-class='af4']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='af3']/queue-schedule-mode) and not(../../../queues/queue[service-class='af4']/queue-schedule-mode))";
                      must
                        "../ef='false' or ../af3='false' or ../../../queues/queue[service-class='af3']/queue-schedule-mode=../../../queues/queue[service-class='ef']/queue-schedule-mode or (not(../../../queues/queue[service-class='af3']/queue-schedule-mode) and ../../../queues/queue[service-class='ef']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af3']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='ef']/queue-schedule-mode))";
                      must
                        "../cs6='false' or ../af3='false' or ../../../queues/queue[service-class='af3']/queue-schedule-mode=../../../queues/queue[service-class='cs6']/queue-schedule-mode or (not(../../../queues/queue[service-class='af3']/queue-schedule-mode) and ../../../queues/queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af3']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs6']/queue-schedule-mode))";
                      must
                        "../cs7='false' or ../af3='false' or ../../../queues/queue[service-class='af3']/queue-schedule-mode=../../../queues/queue[service-class='cs7']/queue-schedule-mode or (not(../../../queues/queue[service-class='af3']/queue-schedule-mode) and ../../../queues/queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af3']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode))";
                      default "false";
                      description "AF3.";
                    }
    
                    leaf af4 {
                      type af4-type;
                      must
                        "../ef='false' or ../af4='false' or ../../../queues/queue[service-class='af4']/queue-schedule-mode=../../../queues/queue[service-class='ef']/queue-schedule-mode or (not(../../../queues/queue[service-class='af4']/queue-schedule-mode) and ../../../queues/queue[service-class='ef']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af4']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='ef']/queue-schedule-mode))";
                      must
                        "../cs6='false' or ../af4='false' or ../../../queues/queue[service-class='af4']/queue-schedule-mode=../../../queues/queue[service-class='cs6']/queue-schedule-mode or (not(../../../queues/queue[service-class='af4']/queue-schedule-mode) and ../../../queues/queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af4']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs6']/queue-schedule-mode))";
                      must
                        "../cs7='false' or ../af4='false' or ../../../queues/queue[service-class='af4']/queue-schedule-mode=../../../queues/queue[service-class='cs7']/queue-schedule-mode or (not(../../../queues/queue[service-class='af4']/queue-schedule-mode) and ../../../queues/queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../../queues/queue[service-class='af4']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode))";
                      default "false";
                      description "AF4.";
                    }
    
                    leaf ef {
                      type ef-type;
                      must
                        "../cs6='false' or ../ef='false' or ../../../queues/queue[service-class='ef']/queue-schedule-mode=../../../queues/queue[service-class='cs6']/queue-schedule-mode or (not(../../../queues/queue[service-class='ef']/queue-schedule-mode) and ../../../queues/queue[service-class='cs6']/queue-schedule-mode='pq') or (../../../queues/queue[service-class='ef']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs6']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='ef']/queue-schedule-mode) and not(../../../queues/queue[service-class='cs6']/queue-schedule-mode))";
                      must
                        "../cs7='false' or ../ef='false' or ../../../queues/queue[service-class='ef']/queue-schedule-mode=../../../queues/queue[service-class='cs7']/queue-schedule-mode or (not(../../../queues/queue[service-class='ef']/queue-schedule-mode) and ../../../queues/queue[service-class='cs7']/queue-schedule-mode='pq') or (../../../queues/queue[service-class='ef']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='ef']/queue-schedule-mode) and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode))";
                      default "false";
                      description "EF.";
                    }
    
                    leaf cs6 {
                      type cs6-type;
                      must
                        "../cs7='false' or ../cs6='false' or ../../../queues/queue[service-class='cs6']/queue-schedule-mode=../../../queues/queue[service-class='cs7']/queue-schedule-mode or (not(../../../queues/queue[service-class='cs6']/queue-schedule-mode) and ../../../queues/queue[service-class='cs7']/queue-schedule-mode='pq') or (../../../queues/queue[service-class='cs6']/queue-schedule-mode='pq' and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode)) or (not(../../../queues/queue[service-class='cs6']/queue-schedule-mode) and not(../../../queues/queue[service-class='cs7']/queue-schedule-mode))";
                      default "false";
                      description "CS6.";
                    }
    
                    leaf cs7 {
                      type cs7-type;
                      default "false";
                      description "CS7.";
                    }
    
                    leaf queue-schedule-mode {
                      type queue-schedule-mode;
                      must
                        "(../queue-schedule-mode='wfq' and ../weight) or (../queue-schedule-mode!='wfq' and not(../weight))";
                      description
                        "Scheduling strategy of port queue.";
                    }
    
                    leaf weight {
                      when
                        "../queue-schedule-mode='wfq'";
                      type uint8 {
                        range "1..100";
                      }
                      description
                        "Weight of wfq scheduling strategy.";
                    }
    
                    choice shaping-parameters {
                      mandatory true;
                      description
                        "Specify shaping parameters.";
                      case shaping {
                        description
                          "Specify shaping parameters choice case as shaping value.";
                        leaf shaping-value {
                          when
                            "../be='true' or ../af1='true' or ../af2='true' or ../af3='true' or ../af4='true' or ../ef='true' or ../cs6='true' or ../cs7='true'";
                          type uint32 {
                            range
                              "1..4294967294";
                          }
                          units "kbit/s";
                          description
                            "Shaping value.";
                        }
                      }  // case shaping
    
                      case shaping-percent {
                        description
                          "Specify shaping parameters choice case as shaping percentage value.";
                        leaf shaping-percentage {
                          when
                            "../be='true' or ../af1='true' or ../af2='true' or ../af3='true' or ../af4='true' or ../ef='true' or ../cs6='true' or ../cs7='true'";
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          description
                            "Shaping percentage.";
                        }
                      }  // case shaping-percent
                    }  // choice shaping-parameters
    
                    leaf pbs {
                      type uint32 {
                        range "1..4194304";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
                  }  // container share-shape
                }  // container share-shapes
              }  // list port-queue-template
            }  // container port-queue-templates
    
            container channel-profiles {
              description
                "List of configure channel Profile.";
              list channel-profile {
                key "name";
                max-elements 16;
                description
                  "Configure channel Profile.";
                leaf name {
                  type template-name;
                  description
                    "Name of qos channel profile.";
                }
    
                container channel-paras {
                  description
                    "List of configure channel parameters.";
                  list channel-para {
                    key "channel-id";
                    description
                      "Configure channel parameters.";
                    leaf channel-id {
                      type uint32 {
                        range "0..15";
                      }
                      description "Channel id.";
                    }
    
                    leaf bandwidth {
                      type uint32 {
                        range "1..100000";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Channel bandwidth.";
                    }
    
                    leaf quantity {
                      type uint32 {
                        range "1..16000";
                      }
                      must
                        "../quantity mod 8 = 0";
                      mandatory true;
                      description
                        "Quantity of channel bandwidth.";
                    }
                  }  // list channel-para
                }  // container channel-paras
              }  // list channel-profile
            }  // container channel-profiles
    
            container buffer-policys {
              description
                "List of configure buffer policy template.";
              list buffer-policy {
                key "name";
                description
                  "Configure buffer policy template.";
                leaf name {
                  type template-name;
                  description
                    "Buffer-policy name.";
                }
    
                container buffer-mode-slots {
                  description
                    "List of configure buffer mode on slot.";
                  list buffer-mode-slot {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the buffer policy template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "slot-id";
                    description
                      "Configure buffer mode on slot.";
                    leaf slot-id {
                      type slot-id;
                      description "Slot ID.";
                    }
    
                    leaf buffer-mode-ge {
                      ext:dynamic-default;
                      type buffer-mode-type;
                      description
                        "GE buffer mode.";
                    }
    
                    leaf buffer-mode-10ge {
                      ext:dynamic-default;
                      type buffer-mode-type;
                      description
                        "10GE buffer mode.";
                    }
                  }  // list buffer-mode-slot
                }  // container buffer-mode-slots
    
                container buffer-mode-interfaces {
                  description
                    "List of configure buffer mode on interface.";
                  list buffer-mode-interface {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the buffer policy template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "ifname";
                    description
                      "Configure buffer mode on interface.";
                    leaf ifname {
                      type pub-type:if-name;
                      description "IfName.";
                    }
    
                    leaf buffer-mode {
                      type buffer-mode-type;
                      mandatory true;
                      description "Buffer mode.";
                    }
                  }  // list buffer-mode-interface
                }  // container buffer-mode-interfaces
              }  // list buffer-policy
            }  // container buffer-policys
    
            container qos-queue-templates {
              description
                "List of configure qos queue template.";
              list qos-queue-template {
                key "name";
                max-elements 1024;
                description
                  "Configure qos queue template.";
                leaf name {
                  type template-name;
                  description
                    "QoS queue template name.";
                }
    
                container queue-parameterss {
                  must
                    "./queue-parameters[service-class='be']/cir-percent + ./queue-parameters[service-class='af1']/cir-percent + ./queue-parameters[service-class='af2']/cir-percent + ./queue-parameters[service-class='af3']/cir-percent + ./queue-parameters[service-class='af4']/cir-percent + ./queue-parameters[service-class='ef']/cir-percent + ./queue-parameters[service-class='cs6']/cir-percent + ./queue-parameters[service-class='cs7']/cir-percent <= 100";
                  description
                    "List of configure parameters of qos queue template.";
                  list queue-parameters {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the qos queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "service-class";
                    description
                      "Configure parameters of qos queue template. This node cannot be deleted.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Service class.";
                    }
    
                    leaf cir-percent {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      mandatory true;
                      description
                        "CIR percentage.";
                    }
    
                    leaf pir-percent {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      must
                        "(../pir-percent>=../cir-percent)";
                      mandatory true;
                      description
                        "PIR percentage.";
                    }
    
                    leaf priority {
                      type queue-schedule-mode;
                      mandatory true;
                      description "Priority.";
                    }
                  }  // list queue-parameters
                }  // container queue-parameterss
              }  // list qos-queue-template
            }  // container qos-queue-templates
    
            container sub-port-queues {
              description
                "List of configure sub port queue.";
              list sub-port-queue {
                key "name";
                max-elements 100;
                description
                  "Configure sub port queue.";
                leaf name {
                  type template-name;
                  description
                    "Sub port queue name.";
                }
    
                container shaping {
                  presence "create shaping";
                  description
                    "Enable/disable rate of shaping.";
                  leaf shaping-value {
                    type uint32 {
                      range "66..4294967294";
                    }
                    mandatory true;
                    description
                      "Rate of shaping.";
                  }
    
                  leaf pbs {
                    type uint32 {
                      range "64..2097152";
                    }
                    units "Byte";
                    default "524288";
                    description
                      "Peak burst size.";
                  }
                }  // container shaping
    
                container weight {
                  description
                    "Configure weight of WFQ scheduling strategy.";
                  leaf weight-value {
                    type uint8 {
                      range "1..63";
                    }
                    default "10";
                    description
                      "Weight of WFQ scheduling strategy.";
                  }
                }  // container weight
              }  // list sub-port-queue
            }  // container sub-port-queues
    
            container priority-templates {
              description
                "List of configure priority templates.";
              list priority-template {
                ext:generated-by "system" {
                  ext:filter "name='default'";
                  description "The instances whose name is 'default' are generated automatically.";
                }
                ext:operation-exclude "create|update" {
                  ext:filter "name='default'";
                  description "The instances whose name is 'default' cannot be created or updated.";
                }
                key "name";
                max-elements 9;
                description
                  "Configure priority templates.";
                leaf name {
                  type string {
                    length "1..48";
                  }
                  description
                    "Name of priority template.";
                }
    
                container queues {
                  description
                    "List of configure the mapping between the CoS, color, and CAR priority.";
                  list queue {
                    ext:generated-by "system" {
                      description "The all instances are generated automatically.";
                    }
                    ext:operation-exclude "create" {
                      description "The all instances cannot be created.";
                    }
                    key "service-class color";
                    description
                      "Configure the mapping between the CoS, color, and CAR priority.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Class of service.";
                    }
    
                    leaf color {
                      type qos-color;
                      description "Color.";
                    }
    
                    leaf priority {
                      type uint8 {
                        range "0..7";
                      }
                      mandatory true;
                      description "Priority.";
                    }
                  }  // list queue
                }  // container queues
              }  // list priority-template
            }  // container priority-templates
    
            container user-queue-templates {
              description
                "List of configure user queue template.";
              list user-queue-template {
                key "name";
                max-elements 4095;
                description
                  "Configure user queue template.";
                leaf name {
                  type string {
                    length "1..63";
                  }
                  description
                    "User queue template name.";
                }
    
                leaf mode {
                  ext:operation-exclude "update" {
                    description "After the user queue template is created, the node cannot be modified.";
                  }
                  type user-queue-template-type;
                  mandatory true;
                  description
                    "User queue template mode.";
                }
    
                container shaping {
                  must
                    "pbs>=cbs or not(pbs) or not(cbs)";
                  presence "create shaping";
                  description
                    "Configure shaping of user queue template.";
                  choice parameter {
                    mandatory true;
                    description
                      "Specify parameter.";
                    case value-mode {
                      description
                        "Specify shaping parameter choice case as value mode.";
                      leaf pir-value {
                        type uint32 {
                          range
                            "0 | 16..4294967294";
                        }
                        units "kbit/s";
                        must
                          "../pir-value>=../cir-value or not(../cir-value)";
                        mandatory true;
                        description
                          "Peak information rate.";
                      }
    
                      leaf cir-value {
                        type uint32 {
                          range
                            "0 | 16..4294967294";
                        }
                        units "kbit/s";
                        must
                          "../pir-value>=../cir-value";
                        description
                          "Committed information rate.";
                      }
                    }  // case value-mode
    
                    case percent-mode {
                      description
                        "Specify shaping parameter choice case as percent mode.";
                      leaf pir-percent {
                        type uint8 {
                          range "0..100";
                        }
                        units "%";
                        must
                          "../pir-percent>=../cir-percent or not(../cir-percent)";
                        mandatory true;
                        description
                          "Peak information rate percent.";
                      }
    
                      leaf cir-percent {
                        type uint8 {
                          range "0..100";
                        }
                        units "%";
                        must
                          "../pir-percent>=../cir-percent";
                        description
                          "Committed information rate percent.";
                      }
                    }  // case percent-mode
                  }  // choice parameter
    
                  leaf pbs {
                    type uint32 {
                      range "1..4194304";
                    }
                    units "Byte";
                    description
                      "Peak burst size.";
                  }
    
                  leaf cbs {
                    when
                      "../cir-value or ../cir-percent";
                    type uint32 {
                      range "1..4194304";
                    }
                    units "Byte";
                    description
                      "Committed burst size.";
                  }
                }  // container shaping
    
                container service-template {
                  description
                    "Configure service template name.";
                  leaf name {
                    type leafref {
                      path "../../../../service-templates/service-template/name";
                    }
                    description
                      "Service template.";
                  }
                }  // container service-template
    
                container priority-sheduler-modes {
                  when "../mode='4-priority'";
                  description
                    "List of configure schedule parameters of four priority mode user queue.";
                  list priority-sheduler-mode {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the user queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "priority";
                    description
                      "Configure schedule parameters of four priority mode user queue.";
                    leaf priority {
                      type uint8 {
                        range "0..3";
                      }
                      description "Priority.";
                    }
    
                    leaf schedule-mode {
                      type priority-schedule-mode;
                      mandatory true;
                      description
                        "Schedule mode.";
                    }
                  }  // list priority-sheduler-mode
                }  // container priority-sheduler-modes
    
                container parent-priority-weights {
                  when "../mode='4-priority'";
                  description
                    "List of configure weight parameters of four priority mode user queue.";
                  list parent-priority-weight {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the user queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    key "priority";
                    description
                      "Configure weight parameters of four priority mode user queue.";
                    leaf priority {
                      type uint8 {
                        range "0..3";
                      }
                      description "Priority.";
                    }
    
                    leaf weight {
                      type uint8 {
                        range "1..100";
                      }
                      mandatory true;
                      description "Weight.";
                    }
                  }  // list parent-priority-weight
                }  // container parent-priority-weights
    
                container parent-prioritys {
                  when "../mode='4-priority'";
                  description
                    "List of configure parent priority of four priority mode user queue.";
                  list parent-priority {
                    ext:generated-by "system" {
                      description "The instances are created and deleted following the user queue template.";
                    }
                    ext:operation-exclude "create" {
                      description "The instances cannot be created.";
                    }
                    must
                      "cir-parent-priority <= pir-parent-priority";
                    key "priority";
                    description
                      "Configure parent priority of four priority mode user queue.";
                    leaf priority {
                      type uint8 {
                        range "0..3";
                      }
                      description "Priority.";
                    }
    
                    leaf cir-parent-priority {
                      type uint8 {
                        range "0..3";
                      }
                      mandatory true;
                      description
                        "Cir parent priority.";
                    }
    
                    leaf pir-parent-priority {
                      type uint8 {
                        range "0..3";
                      }
                      mandatory true;
                      description
                        "Pir parent priority.";
                    }
                  }  // list parent-priority
                }  // container parent-prioritys
    
                container priority-shapings {
                  when "../mode='4-priority'";
                  description
                    "List of configure shaping parameters of four priority mode user queue.";
                  list priority-shaping {
                    key "priority";
                    description
                      "Configure shaping parameters of four priority mode user queue.";
                    leaf priority {
                      type uint8 {
                        range "0..2";
                      }
                      description "Priority.";
                    }
    
                    leaf pir {
                      type uint32;
                      units "kbit/s";
                      mandatory true;
                      description
                        "Peak information rate.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "1..max";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
                  }  // list priority-shaping
                }  // container priority-shapings
              }  // list user-queue-template
            }  // container user-queue-templates
          }  // container queue-scheduler-template
    
          container classifier-template {
            description
              "Configure classifier template.";
            container diffserv-domains {
              description
                "List of configure diffserv domain.";
              list diffserv-domain {
                ext:generated-by "system" {
                  description "The template is generated automatically.";
                  ext:filter "name = 'default'";
                }
                ext:operation-exclude "create" {
                  description "The template cannot be created.";
                  ext:filter "name = 'default'";
                }
                key "name";
                description
                  "Configure diffserv domain.";
                leaf name {
                  type string {
                    length "1..48";
                  }
                  description
                    "Name of a diffserv domain.";
                }
    
                container behavior-aggregations {
                  description
                    "List of configure mapping between the outbound and inbound priorities for inbound traffic.";
                  list behavior-aggregation {
                    ext:generated-by "system" {
                      description "The template is generated automatically.";
                    }
                    ext:operation-exclude "create" {
                      description "The template cannot be created.";
                    }
                    key "type value";
                    description
                      "Configure mapping between the outbound and inbound priorities for inbound traffic.";
                    leaf type {
                      ext:dynamic-default;
                      type qos-ba-type;
                      description
                        "Priority type.";
                    }
    
                    leaf value {
                      ext:dynamic-default;
                      type uint8 {
                        range "0..63";
                      }
                      must
                        "(../type='ip-dscp' and ../value>=0 and ../value<=63) or (../value>=0 and ../value<=7)";
                      description
                        "Priority value.";
                    }
    
                    leaf service-class {
                      ext:dynamic-default;
                      type qos-service-class;
                      mandatory true;
                      description
                        "Class of service.";
                    }
    
                    leaf color {
                      ext:dynamic-default;
                      type qos-color;
                      mandatory true;
                      description
                        "Color marked to the data flows after measurement.";
                    }
                  }  // list behavior-aggregation
                }  // container behavior-aggregations
    
                container per-hop-behaviors {
                  description
                    "List of configure mapping between the outbound and inbound priorities for outbound traffic.";
                  list per-hop-behavior {
                    ext:generated-by "system" {
                      description "The template is generated automatically.";
                    }
                    ext:operation-exclude "create" {
                      description "The template cannot be created.";
                    }
                    key "type service-class color";
                    description
                      "Configure mapping between the outbound and inbound priorities for outbound traffic.";
                    leaf type {
                      ext:dynamic-default;
                      type qos-phb-type;
                      description
                        "Priority type.";
                    }
    
                    leaf service-class {
                      ext:dynamic-default;
                      type qos-service-class;
                      description
                        "Class of service.";
                    }
    
                    leaf color {
                      ext:dynamic-default;
                      type qos-color;
                      description
                        "Color marked to the data flows after measurement.";
                    }
    
                    leaf value {
                      ext:dynamic-default;
                      type uint8 {
                        range "0..63";
                      }
                      must
                        "(../type='ip-dscp' and ../value>=0 and ../value<=63) or (../value>=0 and ../value<=7)";
                      mandatory true;
                      description
                        "Priority value. When Priority type is DSCP priority the Priority Value is 0~63, otherwise is 0~7.";
                    }
                  }  // list per-hop-behavior
                }  // container per-hop-behaviors
    
                container diffserv-domain-applications {
                  config false;
                  description
                    "List of operational state of diffserv domain applications on the interface.";
                  list diffserv-domain-application {
                    key "interface-name direction";
                    description
                      "Operational state of diffserv domain applications on the interface.";
                    leaf interface-name {
                      type string {
                        length "1..127";
                      }
                      description
                        "Interface name.";
                    }
    
                    leaf direction {
                      type trust-direction-type;
                      description "Direction.";
                    }
                  }  // list diffserv-domain-application
                }  // container diffserv-domain-applications
              }  // list diffserv-domain
            }  // container diffserv-domains
    
            container traffic-classifiers {
              description
                "List of configure traffic classifiers.";
              list traffic-classifier {
                key "name";
                description
                  "Configure traffic classifier.";
                leaf name {
                  type string {
                    length "1..127";
                  }
                  description
                    "Name of a traffic classifier.";
                }
    
                leaf operator {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type class-operator;
                  default "or";
                  description
                    "Logical operator of a rule. This node does not support modification.";
                }
    
                leaf description {
                  type string {
                    length "1..127";
                  }
                  description "Description.";
                }
    
                container rule-acls {
                  must
                    "../operator='or' or (../operator='and' and count(./rule-acl)<=1)";
                  status deprecated;
                  description
                    "List of configure rule matching IPv4 acl. This node is deprecated and rule-acl-prioritys is recommended.";
                  list rule-acl {
                    key "acl-name";
                    max-elements 16;
                    status deprecated;
                    description
                      "Configure rule matching IPv4 acl.";
                    leaf acl-name {
                      type leafref {
                        path "/acl:acl/acl:groups/acl:group/acl:identity";
                      }
                      must
                        "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type!='interface'";
                      status deprecated;
                      description
                        "Acl number or name.";
                    }
                  }  // list rule-acl
                }  // container rule-acls
    
                container rule-acl-ipv6s {
                  must
                    "../operator='or' or (../operator='and' and count(./rule-acl-ipv6)<=1)";
                  status deprecated;
                  description
                    "List of configure rule matching IPv6 acl. This node is deprecated and rule-acl-ipv6-prioritys is recommended.";
                  list rule-acl-ipv6 {
                    key "acl-name";
                    max-elements 16;
                    status deprecated;
                    description
                      "Configure rule matching IPv6 acl.";
                    leaf acl-name {
                      type leafref {
                        path "/acl:acl/acl:group6s/acl:group6/acl:identity";
                      }
                      must
                        "/acl:acl/acl:group6s/acl:group6[acl:identity=current()]/acl:type!='interface'";
                      status deprecated;
                      description
                        "Acl number or name.";
                    }
                  }  // list rule-acl-ipv6
                }  // container rule-acl-ipv6s
    
                container rule-acl-prioritys {
                  must
                    "../operator='or' or (../operator='and' and count(./rule-acl-priority)<=1)";
                  description
                    "List of configure rule matching IPv4 ACL.";
                  list rule-acl-priority {
                    key "acl-name";
                    unique "priority";
                    max-elements 16;
                    description
                      "Configure rule matching IPv4 ACL.";
                    leaf acl-name {
                      type leafref {
                        path "/acl:acl/acl:groups/acl:group/acl:identity";
                      }
                      must
                        "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type!='interface'";
                      description
                        "ACL number or name.";
                    }
    
                    leaf priority {
                      when
                        "../../../operator='or'";
                      type uint16 {
                        range "1..65535";
                      }
                      mandatory true;
                      description
                        "Specify the precedence of ACL.";
                    }
                  }  // list rule-acl-priority
                }  // container rule-acl-prioritys
    
                container rule-acl-ipv6-prioritys {
                  must
                    "../operator='or' or (../operator='and' and count(./rule-acl-ipv6-priority)<=1)";
                  description
                    "List of configure rule matching IPv6 ACL.";
                  list rule-acl-ipv6-priority {
                    key "acl-name";
                    unique "priority";
                    max-elements 16;
                    description
                      "Configure rule matching IPv6 ACL.";
                    leaf acl-name {
                      type leafref {
                        path "/acl:acl/acl:group6s/acl:group6/acl:identity";
                      }
                      must
                        "/acl:acl/acl:group6s/acl:group6[acl:identity=current()]/acl:type!='interface'";
                      description
                        "ACL number or name.";
                    }
    
                    leaf priority {
                      when
                        "../../../operator='or'";
                      type uint16 {
                        range "1..65535";
                      }
                      mandatory true;
                      description
                        "Specify the precedence of IPv6 ACL.";
                    }
                  }  // list rule-acl-ipv6-priority
                }  // container rule-acl-ipv6-prioritys
    
                container rule-anys {
                  description
                    "List of configure rule matching all packets.";
                  list rule-any {
                    key "protocol-family";
                    max-elements 2;
                    description
                      "Configure rule matching all packets.";
                    leaf protocol-family {
                      type ip-family;
                      description
                        "IP protocol version.";
                    }
                  }  // list rule-any
                }  // container rule-anys
    
                container rule-prioritys {
                  description
                    "List of configure rule matching precedences.";
                  list rule-priority {
                    key "type value";
                    max-elements 16;
                    description
                      "Configure rule matching precedence.";
                    leaf type {
                      type priority-type;
                      description
                        "Priority type.";
                    }
    
                    leaf value {
                      type uint8 {
                        range "0..63";
                      }
                      must
                        "(((../type='dscp' or ../type='ipv6-dscp') and ../value<=63) or ../value<=7)";
                      description
                        "Priority value.";
                    }
                  }  // list rule-priority
                }  // container rule-prioritys
    
                container rule-service-classs {
                  description
                    "List of configure rule matching service classs.";
                  list rule-service-class {
                    key "service-class";
                    max-elements 8;
                    description
                      "Configure rule matching service class.";
                    leaf service-class {
                      type qos-service-class;
                      description
                        "Service class.";
                    }
                  }  // list rule-service-class
                }  // container rule-service-classs
    
                container local-ids {
                  description
                    "List of configure rule matching local id.";
                  list local-id {
                    key "value";
                    max-elements 16;
                    description
                      "Configure rule matching local id.";
                    leaf value {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Local id value.";
                    }
                  }  // list local-id
                }  // container local-ids
    
                container local-id-ipv6s {
                  description
                    "List of configure rule matching IPv6 local id.";
                  list local-id-ipv6 {
                    key "value";
                    max-elements 16;
                    description
                      "Configure rule matching IPv6 local id.";
                    leaf value {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "IPv6 local id value.";
                    }
                  }  // list local-id-ipv6
                }  // container local-id-ipv6s
    
                container rule-eth-types {
                  must
                    "../operator='or' or (../operator='and' and count(./rule-eth-type)<=1)";
                  description
                    "List of configure rule type vlaue.";
                  list rule-eth-type {
                    key "value";
                    max-elements 16;
                    description
                      "Configure rule type vlaue.";
                    leaf value {
                      type pub-type:hex-binary {
                        length "3..6";
                      }
                      description "Type vlaue.";
                    }
                  }  // list rule-eth-type
                }  // container rule-eth-types
    
                container rule-address-ipv6s {
                  description
                    "List of configure rule matching IPv6 addresses.";
                  list rule-address-ipv6 {
                    key "address-type address-value prefix-length";
                    max-elements 16;
                    description
                      "Configure rule matching IPv6 addresses.";
                    leaf address-type {
                      type qos-address-type;
                      description
                        "Type of an IPv6 address.";
                    }
    
                    leaf address-value {
                      type inet:ipv6-address-no-zone;
                      description
                        "IPv6 address.";
                    }
    
                    leaf prefix-length {
                      type uint8 {
                        range "0..128";
                      }
                      description
                        "Length of the IPv6 address prefix.";
                    }
                  }  // list rule-address-ipv6
                }  // container rule-address-ipv6s
    
                container rule-mac-and-masks {
                  must
                    "../operator='or' or (../operator='and' and count(./rule-mac-and-mask)<=1)";
                  description
                    "List of configure rule matching mac and mask addresses.";
                  list rule-mac-and-mask {
                    key "mac-type mac-address mac-address-mask";
                    max-elements 16;
                    description
                      "Configure rule matching mac and mask addresses.";
                    leaf mac-type {
                      type qos-mac-type;
                      description
                        "Type of a MAC address.";
                    }
    
                    leaf mac-address {
                      type pub-type:mac-address;
                      description "Mac address.";
                    }
    
                    leaf mac-address-mask {
                      type pub-type:mac-address;
                      description
                        "Mac address mask.";
                    }
                  }  // list rule-mac-and-mask
                }  // container rule-mac-and-masks
    
                container rule-mac-addresss {
                  description
                    "List of configure rule matching mac addresses.";
                  list rule-mac-address {
                    key "type address";
                    max-elements 16;
                    description
                      "Configure rule matching mac addresses.";
                    leaf type {
                      type qos-mac-type;
                      description
                        "Type of a MAC address.";
                    }
    
                    leaf address {
                      type pub-type:mac-address;
                      description "Mac address.";
                    }
                  }  // list rule-mac-address
                }  // container rule-mac-addresss
    
                container rule-offsets {
                  description
                    "Configure rule offset values.";
                  container rule-offset {
                    must
                      "(./offset-value2 and ./match-value2 and ./match-mask2) or (not(./offset-value2) and not(./match-value2) and not(./match-mask2))";
                    must
                      "(./offset-value3 and ./match-value3 and ./match-mask3) or (not(./offset-value3) and not(./match-value3) and not(./match-mask3))";
                    must
                      "(./offset-value4 and ./match-value4 and ./match-mask4) or (not(./offset-value4) and not(./match-value4) and not(./match-mask4))";
                    presence
                      "create rule-offset";
                    description
                      "Enable/disable rule offset values.";
                    leaf offset-value1 {
                      type uint32 {
                        range "0..60";
                      }
                      mandatory true;
                      description
                        "Offset Value.";
                    }
    
                    leaf match-value1 {
                      type pub-type:hex-binary;
                      mandatory true;
                      description "Match Value.";
                    }
    
                    leaf match-mask1 {
                      type pub-type:hex-binary;
                      mandatory true;
                      description "Match Mask.";
                    }
    
                    leaf offset-value2 {
                      type uint32 {
                        range "0..60";
                      }
                      description
                        "Offset Value.";
                    }
    
                    leaf match-value2 {
                      type pub-type:hex-binary;
                      description "Match Value.";
                    }
    
                    leaf match-mask2 {
                      type pub-type:hex-binary;
                      description "Match Mask.";
                    }
    
                    leaf offset-value3 {
                      type uint32 {
                        range "0..60";
                      }
                      description
                        "Offset Value.";
                    }
    
                    leaf match-value3 {
                      type pub-type:hex-binary;
                      description "Match Value.";
                    }
    
                    leaf match-mask3 {
                      type pub-type:hex-binary;
                      description "Match Mask.";
                    }
    
                    leaf offset-value4 {
                      type uint32 {
                        range "0..60";
                      }
                      description
                        "Offset Value.";
                    }
    
                    leaf match-value4 {
                      type pub-type:hex-binary;
                      description "Match Value.";
                    }
    
                    leaf match-mask4 {
                      type pub-type:hex-binary;
                      description "Match Mask.";
                    }
                  }  // container rule-offset
                }  // container rule-offsets
    
                container rule-protocol-ipv6s {
                  description
                    "List of configure rule matching IPv6 extended headers.";
                  list rule-protocol-ipv6 {
                    key "family number";
                    max-elements 16;
                    description
                      "Configure rule matching IPv6 extended headers.";
                    leaf family {
                      type qos-ipv6-family;
                      description
                        "Protocol family.";
                    }
    
                    leaf number {
                      type uint8;
                      description
                        "Protocol number.";
                    }
                  }  // list rule-protocol-ipv6
                }  // container rule-protocol-ipv6s
    
                container rule-tcp-flags {
                  description
                    "List of configure rule matching TCP flags.";
                  list rule-tcp-flag {
                    must
                      "((./bit-match-type='not-config') or (./bit-match-type='established' and ./tcp-flag='20' and ./tcp-flag-mask='20') or (./bit-match-type='fin' and ./tcp-flag='1' and ./tcp-flag-mask='1') or (./bit-match-type='syn' and ./tcp-flag='2' and ./tcp-flag-mask='2') or (./bit-match-type='rst' and ./tcp-flag='4' and ./tcp-flag-mask='4') or (./bit-match-type='psh' and ./tcp-flag='8' and ./tcp-flag-mask='8') or (./bit-match-type='ack' and ./tcp-flag='16' and ./tcp-flag-mask='16') or (./bit-match-type='urg' and ./tcp-flag='32' and ./tcp-flag-mask='32') or (./bit-match-type='ece' and ./tcp-flag='64' and ./tcp-flag-mask='64') or (./bit-match-type='cwr' and ./tcp-flag='128' and ./tcp-flag-mask='128') or (./bit-match-type='ns' and ./tcp-flag='256' and ./tcp-flag-mask='256'))";
                    key "bit-match-type tcp-flag tcp-flag-mask";
                    max-elements 16;
                    description
                      "Configure rule matching TCP flags.";
                    leaf bit-match-type {
                      type qos-tcp-bit-match;
                      description
                        "TCP bit match type.";
                    }
    
                    leaf tcp-flag {
                      type uint16 {
                        range "0..511";
                      }
                      description
                        "TCP flag value.";
                    }
    
                    leaf tcp-flag-mask {
                      type uint16 {
                        range "0..511|65535";
                      }
                      description
                        "TCP flag mask value;please input 65535 when not config.";
                    }
                  }  // list rule-tcp-flag
                }  // container rule-tcp-flags
    
                container rule-tcp-flag-ipv6s {
                  description
                    "List of configure rule matching IPv6 TCP flags.";
                  list rule-tcp-flag-ipv6 {
                    must
                      "((./bit-match-type='not-config') or (./bit-match-type='established' and ./tcp-flag='20' and ./tcp-flag-mask='20') or (./bit-match-type='fin' and ./tcp-flag='1' and ./tcp-flag-mask='1') or (./bit-match-type='syn' and ./tcp-flag='2' and ./tcp-flag-mask='2') or (./bit-match-type='rst' and ./tcp-flag='4' and ./tcp-flag-mask='4') or (./bit-match-type='psh' and ./tcp-flag='8' and ./tcp-flag-mask='8') or (./bit-match-type='ack' and ./tcp-flag='16' and ./tcp-flag-mask='16') or (./bit-match-type='urg' and ./tcp-flag='32' and ./tcp-flag-mask='32'))";
                    key "bit-match-type tcp-flag tcp-flag-mask";
                    max-elements 16;
                    description
                      "Configure rule matching IPv6 TCP flags.";
                    leaf bit-match-type {
                      type qos-tcp-bit-match-ipv6;
                      description
                        "IPv6 TCP bit match type.";
                    }
    
                    leaf tcp-flag {
                      type uint16 {
                        range "0..63";
                      }
                      description
                        "IPv6 TCP flag value.";
                    }
    
                    leaf tcp-flag-mask {
                      type uint16 {
                        range "0..63|65535";
                      }
                      description
                        "IPv6 TCP flag mask value;please input 65535 when not config.";
                    }
                  }  // list rule-tcp-flag-ipv6
                }  // container rule-tcp-flag-ipv6s
    
                container rule-vlans {
                  description
                    "List of configure VLAN vlaues.";
                  list rule-vlan {
                    key "vlan-id ce-vlan-id";
                    max-elements 16;
                    description
                      "Configure VLAN vlaues.";
                    leaf vlan-id {
                      type uint16 {
                        range "1..4094";
                      }
                      description "VLAN id.";
                    }
    
                    leaf ce-vlan-id {
                      type uint16 {
                        range "0..4094";
                      }
                      description "Ce VLAN id.";
                    }
                  }  // list rule-vlan
                }  // container rule-vlans
    
                container src-dest-local-ids {
                  description
                    "List of configure rule matching source and destination local id.";
                  list src-dest-local-id {
                    key "source destination";
                    max-elements 16;
                    description
                      "Configure rule matching source and destination local id.";
                    leaf source {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Source local id.";
                    }
    
                    leaf destination {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Source local id.";
                    }
                  }  // list src-dest-local-id
                }  // container src-dest-local-ids
    
                container vxlan-local-ids {
                  description
                    "List of configure rule matching vxlan local ID.";
                  list vxlan-local-id {
                    must
                      "(../../operator='or') or (../../operator='and' and not(../../local-ids/local-id) and not(../../local-id-ipv6s/local-id-ipv6))";
                    key "value";
                    max-elements 7;
                    description
                      "Configure rule matching vxlan local ID.";
                    leaf value {
                      type uint32 {
                        range "1..7";
                      }
                      description
                        "Vxlan local ID.";
                    }
                  }  // list vxlan-local-id
                }  // container vxlan-local-ids
    
                container vxlan-local-id-ipv6s {
                  description
                    "List of configure rule matching IPv6 vxlan local ID.";
                  list vxlan-local-id-ipv6 {
                    must
                      "(../../operator='or') or (../../operator='and' and not(../../local-ids/local-id) and not(../../local-id-ipv6s/local-id-ipv6))";
                    key "value";
                    max-elements 7;
                    description
                      "Configure rule matching IPv6 vxlan local ID.";
                    leaf value {
                      type uint32 {
                        range "1..7";
                      }
                      description
                        "IPv6 vxlan local ID.";
                    }
                  }  // list vxlan-local-id-ipv6
                }  // container vxlan-local-id-ipv6s
              }  // list traffic-classifier
            }  // container traffic-classifiers
    
            container traffic-behaviors {
              description
                "List of configure traffic behaviors.";
              list traffic-behavior {
                key "name";
                description
                  "Configure traffic behavior.";
                leaf name {
                  type string {
                    length "1..127";
                  }
                  description
                    "Name of a traffic behavior.";
                }
    
                leaf description {
                  type string {
                    length "1..127";
                  }
                  description "Description.";
                }
    
                container filter-action {
                  description
                    "Configure filter action.";
                  leaf filter {
                    type filter-flag;
                    default "permit";
                    description "Filter type.";
                  }
                }  // container filter-action
    
                container service-class-actions {
                  description
                    "List of configure service class actions.";
                  list service-class-action {
                    key "action-type";
                    max-elements 3;
                    description
                      "Configure service class action.";
                    leaf action-type {
                      type service-class-action;
                      description
                        "Type of a service class action.";
                    }
    
                    leaf service-class {
                      type qos-service-class;
                      mandatory true;
                      description
                        "Class of service.";
                    }
    
                    leaf color {
                      type qos-color;
                      mandatory true;
                      description "Color.";
                    }
    
                    leaf remark-switch {
                      type remark-type;
                      must
                        "../action-type='service-class' or not(../remark-switch='disable')";
                      default "enable";
                      description
                        "Remark switch.";
                    }
    
                    leaf bfd-session-name {
                      when
                        "../action-type!='service-class'";
                      type leafref {
                        path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                      }
                      mandatory true;
                      description
                        "Bfd Session Name.";
                    }
                  }  // list service-class-action
                }  // container service-class-actions
    
                container remark-actions {
                  description
                    "List of configure remark actions.";
                  list remark-action {
                    key "action-type";
                    max-elements 8;
                    description
                      "Configure remark action.";
                    leaf action-type {
                      type action-remark;
                      description
                        "Type of a remark action. The 8021p includes inner-8021p and outer-8021p.";
                    }
    
                    leaf remark-value {
                      type uint32 {
                        range "0..255";
                      }
                      must
                        "((../action-type='ip-df' and ../remark-value<=1) or ((../action-type='8021p' or ../action-type='ip-precedence' or ../action-type='mpls-exp' or ../action-type='inner-8021p' or ../action-type='outer-8021p') and ../remark-value<=7) or (../action-type='tos' and ../remark-value<=15) or ((../action-type='ipv4-dscp' or ../action-type='ipv6-dscp') and ../remark-value<=63) or (../action-type='ttl' and ../remark-value>0 and ../remark-value<=255) or (../action-type='remark-local-id' and ../remark-value>0 and ../remark-value<=7))";
                      mandatory true;
                      description
                        "Remark priority value.";
                    }
    
                    leaf after-trust {
                      when
                        "../action-type='8021p'";
                      type switch-type;
                      description
                        "Remark take effect after trust.";
                    }
                  }  // list remark-action
                }  // container remark-actions
    
                container acl-log-action {
                  description
                    "Configure log first packet action.";
                  leaf action-type {
                    type acl-log-action-type;
                    description
                      "Type of the log first-packet action.";
                  }
                }  // container acl-log-action
    
                container car-actions {
                  description
                    "List of configure CAR actions.";
                  list car-action {
                    key "action-type";
                    description
                      "Configure CAR action.";
                    leaf action-type {
                      type action-car;
                      description
                        "Type of a car action.";
                    }
    
                    leaf cir {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      must
                        "not(../pir) or ../pir>=../cir";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf pir {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      must "../pir>=../cir";
                      description
                        "Peak information rate.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Committed burst size.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
    
                    leaf adjust {
                      type int32 {
                        range "-32..-1 | 1..31";
                      }
                      description
                        "Adjust value.";
                    }
    
                    leaf green-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the green packets.";
                    }
    
                    choice green-action-parameters {
                      description
                        "Specify green action parameters.";
                      case green-service-class {
                        description
                          "Specify green action parameters choice case as service clase.";
                        leaf green-service-class {
                          when
                            "../green-action='pass'";
                          type qos-service-class;
                          description
                            "Service class marked to the green packets.";
                        }
    
                        leaf green-color {
                          when
                            "../green-service-class";
                          type qos-color;
                          mandatory true;
                          description
                            "Color marked to the green packets.";
                        }
                      }  // case green-service-class
    
                      case green-remark-dscp {
                        description
                          "Specify green action parameters choice case as remark dscp.";
                        leaf green-remark-dscp {
                          when
                            "../green-action='pass'";
                          type uint8 {
                            range "0..63";
                          }
                          description
                            "DSCP priority marked to the green packets.";
                        }
                      }  // case green-remark-dscp
                    }  // choice green-action-parameters
    
                    leaf yellow-action {
                      when
                        "../pbs and ../pbs!=0";
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the yellow packets.";
                    }
    
                    choice yellow-action-parameters {
                      description
                        "Specify red action parameters.";
                      case yellow-service-class {
                        description
                          "Specify yellow action parameters choice case as service clase.";
                        leaf yellow-service-class {
                          when
                            "../yellow-action='pass'";
                          type qos-service-class;
                          description
                            "Service class marked to the yellow packets.";
                        }
    
                        leaf yellow-color {
                          when
                            "../yellow-service-class";
                          type qos-color;
                          mandatory true;
                          description
                            "Color marked to the yellow packets.";
                        }
                      }  // case yellow-service-class
    
                      case yellow-remark-dscp {
                        description
                          "Specify yellow action parameters choice case as remark dscp.";
                        leaf yellow-remark-dscp {
                          when
                            "../yellow-action='pass'";
                          type uint8 {
                            range "0..63";
                          }
                          description
                            "DSCP priority marked to the yellow packets.";
                        }
                      }  // case yellow-remark-dscp
                    }  // choice yellow-action-parameters
    
                    leaf red-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the red packets.";
                    }
    
                    choice red-action-parameters {
                      description
                        "Specify red action parameters.";
                      case red-service-class {
                        description
                          "Specify red action parameters choice case as service clase.";
                        leaf red-service-class {
                          when
                            "../red-action='pass'";
                          type qos-service-class;
                          description
                            "Service class marked to the red packets.";
                        }
    
                        leaf red-color {
                          when
                            "../red-service-class";
                          type qos-color;
                          mandatory true;
                          description
                            "Color marked to the red packets.";
                        }
                      }  // case red-service-class
    
                      case red-remark-dscp {
                        description
                          "Specify red action parameters choice case as remark dscp.";
                        leaf red-remark-dscp {
                          when
                            "../red-action='pass'";
                          type uint8 {
                            range "0..63";
                          }
                          description
                            "DSCP priority marked to the red packets.";
                        }
                      }  // case red-remark-dscp
                    }  // choice red-action-parameters
    
                    leaf color-aware {
                      type switch-type;
                      description "Color aware.";
                    }
    
                    leaf limit-type {
                      when "not(../adjust)";
                      type car-limit-type;
                      description
                        "Car limit type.";
                    }
                  }  // list car-action
                }  // container car-actions
    
                container flow-car-actions {
                  description
                    "Configure microflow CAR actions.";
                  container flow-car-action {
                    presence
                      "create flow-car-action";
                    description
                      "Enable/disable microflow CAR actions.";
                    leaf cir {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf pir {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      must "(../pir>=../cir)";
                      description
                        "Peak information rate.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Committed burst size.";
                    }
    
                    leaf pbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
    
                    leaf ip-type {
                      type qos-flow-type;
                      mandatory true;
                      description
                        "Type of an address.";
                    }
                  }  // container flow-car-action
                }  // container flow-car-actions
    
                container increase-priority-action {
                  description
                    "Configure actions of increase priority.";
                  leaf priority {
                    type increase-priority;
                    description "Action type.";
                  }
                }  // container increase-priority-action
    
                container policy-actions {
                  description
                    "Configure traffic policy action.";
                  container policy-action {
                    presence
                      "create policy-actions";
                    description
                      "Enable/disable traffic policy action.";
                    leaf policy-name {
                      type leafref {
                        path "../../../../../qos:traffic-policys/qos:traffic-policy/qos:name";
                      }
                      mandatory true;
                      description "Policy name.";
                    }
    
                    leaf hierarchical-car {
                      type enable-type;
                      description
                        "Hierarchical car.";
                    }
    
                    leaf layer {
                      type qos-policy-layer;
                      description "Ip-layer.";
                    }
                  }  // container policy-action
                }  // container policy-actions
    
                container suppression-actions {
                  description
                    "List of L2 suppression.";
                  list suppression-action {
                    must
                      "(./green-service-class and ./green-color) or (not(./green-service-class) and not(./green-color))";
                    must
                      "(./red-service-class and ./red-color) or (not(./green-service-class) and not(./green-color))";
                    key "suppress-type";
                    max-elements 3;
                    description
                      "Configure L2 suppression.";
                    leaf suppress-type {
                      type suppress-type;
                      description
                        "Suppression type.";
                    }
    
                    leaf cir {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Committed burst size.";
                    }
    
                    leaf green-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the green packets.";
                    }
    
                    leaf green-service-class {
                      when
                        "not(../green-action='discard') or ../green-action='pass'";
                      type qos-service-class;
                      must "../green-color";
                      description
                        "Service class marked to the green packets.";
                    }
    
                    leaf green-color {
                      when
                        "../green-service-class";
                      type qos-color;
                      description
                        "Color marked to the green packets.";
                    }
    
                    leaf red-action {
                      type color-action-type;
                      mandatory true;
                      description
                        "Action performed to the red packets.";
                    }
    
                    leaf red-service-class {
                      when
                        "not(../red-action='discard') or ../red-action='pass'";
                      type qos-service-class;
                      must "../red-color";
                      description
                        "Service class marked to the red packets.";
                    }
    
                    leaf red-color {
                      when
                        "../red-service-class";
                      type qos-color;
                      description
                        "Color marked to the red packets.";
                    }
                  }  // list suppression-action
                }  // container suppression-actions
    
                container load-action {
                  description
                    "Configure load balancing action.";
                  leaf balance-type {
                    type load-balance-type;
                    description
                      "Load balancing type.";
                  }
                }  // container load-action
    
                container match-term-action {
                  description
                    "Configure match termination action.";
                  leaf match-term {
                    type priority-aware-type;
                    description
                      "Match termination type.";
                  }
                }  // container match-term-action
    
                container netstream-sampler-actions {
                  description
                    "List of netstream sampling action.";
                  list netstream-sampler-action {
                    key "flow-type";
                    max-elements 2;
                    description
                      "Configure netstream sampling action.";
                    leaf flow-type {
                      type ip-type;
                      description "Flow type.";
                    }
    
                    leaf sample-type {
                      type sample-type;
                      mandatory true;
                      description
                        "Sampling type.";
                    }
    
                    leaf sample-value {
                      type uint16 {
                        range "1..65535";
                      }
                      must
                        "(../sample-type='fix-time' and ../sample-value>=5 and ../sample-value<=30000) or not(../sample-type='fix-time')";
                      mandatory true;
                      description
                        "Sampling parameter. When sampling type is netstream fix packets sampler feature or netstream random packets sampler feature the sampling parameter is 1~65535, when sampling type is netstream fix time sampler feature the sampling parameter is 5~30000.";
                    }
                  }  // list netstream-sampler-action
                }  // container netstream-sampler-actions
    
                container urpf-action {
                  presence "create urpf-action";
                  description
                    "Enable/disable urpf action.";
                  leaf check-type {
                    type check-type;
                    mandatory true;
                    description
                      "Type of the urpf check.";
                  }
    
                  leaf allow-default {
                    type priority-aware-type;
                    description
                      "To check the default route.";
                  }
    
                  leaf ignore-default {
                    type ignore-default-type;
                    description
                      "Indicates a mode in which the default route is excluded.";
                  }
                }  // container urpf-action
    
                container except-deny-action {
                  description
                    "Configure IP netstream sampler except deny-action.";
                  leaf deny-action {
                    type priority-aware-type;
                    description
                      "DenyAction type.";
                  }
                }  // container except-deny-action
    
                container user-queue-action {
                  presence
                    "create user-queue-action";
                  description
                    "Enable/disable user queue action.";
                  leaf cir {
                    type uint32 {
                      range "0 | 16..4294967294";
                    }
                    units "kbit/s";
                    mandatory true;
                    description
                      "Committed information rate.";
                  }
    
                  leaf pir {
                    type uint32 {
                      range "0 | 16..4294967294";
                    }
                    units "kbit/s";
                    must "../pir>=../cir";
                    mandatory true;
                    description
                      "Peak information rate.";
                  }
    
                  leaf flow-queue-name {
                    type leafref {
                      path "../../../../../queue-scheduler-template/flow-queues/flow-queue/name";
                    }
                    must
                      "../../../../../qos:queue-scheduler-template/qos:flow-queues/qos:flow-queue[qos:name=current()]/qos:mode='normal'";
                    description "Flow queue.";
                  }
    
                  leaf flow-mapping-name {
                    type leafref {
                      path "../../../../../queue-scheduler-template/flow-mappings/flow-mapping/name";
                    }
                    description "Flow mapping.";
                  }
    
                  leaf user-group-queue-name {
                    type leafref {
                      path "../../../../../queue-scheduler-template/user-group-queues/user-group-queue/name";
                    }
                    must
                      "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue[qos:name=current()]/qos:mode='normal'";
                    description
                      "User group queue.";
                  }
    
                  leaf service-template-name {
                    type leafref {
                      path "../../../../../queue-scheduler-template/service-templates/service-template/name";
                    }
                    description
                      "Service template.";
                  }
                }  // container user-queue-action
    
                container system-log-action {
                  presence
                    "create system-log-action";
                  description
                    "Enable/disable system log.";
                  leaf threshold {
                    type uint32 {
                      range "1..4294967295";
                    }
                    mandatory true;
                    description "Log threshold.";
                  }
    
                  leaf statistics-type {
                    type statistics-type;
                    mandatory true;
                    description
                      "Statistics type.";
                  }
                }  // container system-log-action
              }  // list traffic-behavior
            }  // container traffic-behaviors
    
            container traffic-policys {
              description
                "List of traffic policies.";
              list traffic-policy {
                key "name";
                description
                  "Configure the traffic policy.";
                leaf name {
                  type string {
                    length "1..127";
                  }
                  description "Policy name.";
                }
    
                leaf description {
                  type string {
                    length "1..127";
                  }
                  description "Description.";
                }
    
                leaf step {
                  type uint16 {
                    range "1..20";
                  }
                  default "1";
                  description "Step.";
                }
    
                leaf share-mode {
                  type switch-flag;
                  default "enable";
                  description
                    "Sharing mode. After the policy is applied, the attribute of this node cannot be changed.";
                }
    
                leaf stat-flag {
                  type switch-flag;
                  default "disable";
                  description
                    "Flag for enabling statistics.";
                }
    
                leaf link-exclude {
                  type switch-flag;
                  default "disable";
                  description
                    "QoS link-adjustment link-layer-exclude.";
                }
    
                container policy-nodes {
                  description
                    "List of the mappings between classifiers and behaviors.";
                  list policy-node {
                    key "classifier-name";
                    description
                      "Configure the mapping between classifier and behavior.";
                    leaf classifier-name {
                      type leafref {
                        path "../../../../../traffic-classifiers/traffic-classifier/name";
                      }
                      description
                        "Name of a traffic classifier.";
                    }
    
                    leaf behavior-name {
                      type leafref {
                        path "../../../../../traffic-behaviors/traffic-behavior/name";
                      }
                      mandatory true;
                      description
                        "Name of a traffic behavior.";
                    }
    
                    leaf priority {
                      type uint16 {
                        range "1..5119";
                      }
                      description
                        "Priority of a classifier behavior.";
                    }
                  }  // list policy-node
                }  // container policy-nodes
    
                container group-mode-policy-nodes {
                  when "../share-mode='disable'";
                  description
                    "List of the mappings between classifiers and behaviors for group mode.";
                  list group-mode-policy-node {
                    must
                      "not(../../policy-nodes/policy-node)";
                    key "classifier-name direction group-type group-name";
                    unique "priority";
                    description
                      "Configure classifier and behavior for group mode.";
                    leaf classifier-name {
                      type leafref {
                        path "../../../../../traffic-classifiers/traffic-classifier/name";
                      }
                      description
                        "Name of a traffic classifier.";
                    }
    
                    leaf direction {
                      type stream-direction-type;
                      description
                        "Stream direction.";
                    }
    
                    leaf group-type {
                      type group-type;
                      description "Group type.";
                    }
    
                    leaf group-name {
                      type string {
                        length "1..33";
                      }
                      description "Group name.";
                    }
    
                    leaf behavior-name {
                      type leafref {
                        path "../../../../../traffic-behaviors/traffic-behavior/name";
                      }
                      mandatory true;
                      description
                        "Name of a traffic behavior.";
                    }
    
                    leaf priority {
                      type uint16 {
                        range "1..5119";
                      }
                      mandatory true;
                      description
                        "Priority of a classifier behavior. This node does not support modification or deletion.";
                    }
                  }  // list group-mode-policy-node
                }  // container group-mode-policy-nodes
    
                container ipv6-local-id-switch {
                  description
                    "Configure IPv6 local id enable.";
                  leaf enable {
                    type switch-type;
                    description
                      "Enable local id. After the classifer is configured, the state of this node cannot be changed.";
                  }
                }  // container ipv6-local-id-switch
    
                container vxlan-local-id-switch {
                  must
                    "enable='true' and not(../ipv6-local-id-switch/enable) or enable='false'";
                  description
                    "Configure vxlan local ID enable.";
                  leaf enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable vxlan local ID.";
                  }
                }  // container vxlan-local-id-switch
              }  // list traffic-policy
            }  // container traffic-policys
          }  // container classifier-template
    
          container global-config {
            description
              "Configure QoS global configuration.";
            container global-policys {
              description
                "List of traffic policy applications.";
              list global-policy {
                key "direction policy-name up-id";
                description
                  "Configure the application of a traffic policy.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf policy-name {
                  type leafref {
                    path "../../../../classifier-template/traffic-policys/traffic-policy/name";
                  }
                  description "Policy name.";
                }
    
                leaf up-id {
                  type uint32 {
                    range
                      "0 | 1024..2023 | 2048..3047 | 3072..4071 | 4096..5095";
                  }
                  description
                    "ID of the UP connected to a vBRAS-CP. If the device is not a vBRAS-CP or no UP is specified, the value of this object is set to 0.";
                }
    
                leaf ucl-type {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type qos-traffic-type;
                  mandatory true;
                  description
                    "Policy apply based on ucl or global-acl.";
                }
    
                container global-policy-statisticss {
                  config false;
                  description
                    "List of traffic policy statistics.";
                  list global-policy-statistics {
                    key "slot-id";
                    description
                      "Traffic policy statistics.";
                    leaf slot-id {
                      type slot-id;
                      description
                        "Slot id. The chassis ID must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                    }
    
                    leaf apply-time {
                      type yang:date-and-time;
                      description
                        "Time of applying a policy.";
                    }
    
                    leaf enable-time {
                      type yang:date-and-time;
                      description
                        "Time of enabling/disabling statistics.";
                    }
    
                    leaf clear-time {
                      type yang:date-and-time;
                      description
                        "Time of clearing statistics.";
                    }
    
                    leaf clear-flag {
                      type boolean;
                      description
                        "Enable/disable clearing statistics.";
                    }
    
                    uses policy-statistics-type;
    
                    container classifier-statisticss {
                      description
                        "List of traffic classifier statistics.";
                      list classifier-statistics {
                        key "classifier-name";
                        description
                          "Traffic classifier statistics.";
                        leaf classifier-name {
                          type string {
                            length "1..127";
                          }
                          description
                            "Name of a traffic classifier.";
                        }
    
                        leaf stream-direction {
                          type template-name;
                          description
                            "Stream direction.";
                        }
    
                        leaf group-type {
                          type template-name;
                          description
                            "Bras group type.";
                        }
    
                        leaf group-name {
                          type template-name;
                          description
                            "Bras group name.";
                        }
    
                        leaf match-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of matched packets.";
                        }
    
                        leaf match-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of matched bytes.";
                        }
    
                        leaf match-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of matched packets.";
                        }
    
                        leaf match-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of matched bytes.";
                        }
    
                        leaf match-pass-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of matched and passed packets.";
                        }
    
                        leaf match-pass-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of matched and passed bytes.";
                        }
    
                        leaf match-drop-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of matched but discarded packets.";
                        }
    
                        leaf match-drop-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of matched but discarded bytes.";
                        }
    
                        leaf match-pass-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of the packets matching the traffic classifier and passed.";
                        }
    
                        leaf match-pass-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the bytes matching the traffic classifier and passed.";
                        }
    
                        leaf match-drop-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of the packets matching the traffic classifier but discarded.";
                        }
    
                        leaf match-drop-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the bytes matching the traffic classifier but discarded.";
                        }
    
                        leaf filter-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of filtered packets.";
                        }
    
                        leaf filter-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of filtered bytes.";
                        }
    
                        leaf filter-paket-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of filtered packets.";
                        }
    
                        leaf filter-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of filtered bytes.";
                        }
    
                        leaf urpf-drop-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of the discarded packets by URPF check.";
                        }
    
                        leaf urpf-drop-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of the discarded bytes by URPF check.";
                        }
    
                        leaf urpf-drop-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of the discarded packets by URPF check.";
                        }
    
                        leaf urpf-drop-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the discarded bytes by URPF check.";
                        }
    
                        leaf car-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of the processed packets by CAR.";
                        }
    
                        leaf car-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of the processed bytes by CAR.";
                        }
    
                        leaf car-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of the passed packets by CAR.";
                        }
    
                        leaf car-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the passed bytes by CAR.";
                        }
    
                        leaf car-pass-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of the passed packets by CAR.";
                        }
    
                        leaf car-pass-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of the passed bytes by CAR.";
                        }
    
                        leaf car-drop-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of the discarded packets by CAR.";
                        }
    
                        leaf car-drop-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of the discarded bytes by CAR.";
                        }
    
                        leaf car-pass-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of the passed packets CAR.";
                        }
    
                        leaf car-pass-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the passed bytes by CAR.";
                        }
    
                        leaf car-drop-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of the discarded packets by CAR.";
                        }
    
                        leaf car-drop-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the discarded bytes by CAR.";
                        }
    
                        leaf car-green-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of green packets by CAR.";
                        }
    
                        leaf car-green-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of the bytes of green packets by CAR.";
                        }
    
                        leaf car-yellow-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of yellow packets by CAR.";
                        }
    
                        leaf car-yellow-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of the bytes of yellow packets by CAR.";
                        }
    
                        leaf car-red-packets {
                          type uint64;
                          units "packet";
                          description
                            "Number of red packets by CAR.";
                        }
    
                        leaf car-red-bytes {
                          type uint64;
                          units "Byte";
                          description
                            "Number of the bytes of red packets by CAR.";
                        }
    
                        leaf car-green-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of green packets by CAR.";
                        }
    
                        leaf car-green-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the bytes of green packets by CAR.";
                        }
    
                        leaf car-yellow-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of yellow packets by CAR.";
                        }
    
                        leaf car-yellow-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the bytes of yellow packets by CAR.";
                        }
    
                        leaf car-red-packet-rate {
                          type uint64;
                          units "pps";
                          description
                            "Rate of red packets by CAR.";
                        }
    
                        leaf car-red-byte-rate {
                          type uint64;
                          units "Byte/s";
                          description
                            "Rate of the bytes of red packets by CAR.";
                        }
                      }  // list classifier-statistics
                    }  // container classifier-statisticss
                  }  // list global-policy-statistics
                }  // container global-policy-statisticss
              }  // list global-policy
            }  // container global-policys
    
            container traffic-policy-matchs {
              description
                "List of traffic policy match.";
              list traffic-policy-match {
                must
                  "(((type='ip-layer-push' or type='ip-layer-pop' or type='rule-packet') and not(../traffic-policy-match[type='mpls-layer-push']) and not(../traffic-policy-match[type='mpls-layer-pop'])) or ((type='mpls-layer-push' or type='mpls-layer-pop') and not(../traffic-policy-match[type='ip-layer-push']) and not(../traffic-policy-match[type='ip-layer-pop']) and not(../traffic-policy-match[type='rule-packet'])) or (type='mpls-layer-l2-inbound' or type='protocol-mc-reserved'))";
                key "type";
                max-elements 5;
                description
                  "Configure traffic policy match.";
                leaf type {
                  type policy-match-type;
                  description
                    "Traffic policy match type.";
                }
              }  // list traffic-policy-match
            }  // container traffic-policy-matchs
    
            container remark-vxlan-local-id {
              description
                "Configure remark qos vxlan-local-id enable.";
              leaf enable {
                type boolean;
                default "false";
                description
                  "Enable/disable remark qos vxlan-local-id.";
              }
            }  // container remark-vxlan-local-id
    
            container acl-log {
              description
                "Configure ACL log parameter. This node has default configuration.";
              leaf entry-num {
                type uint16 {
                  range "1..8191";
                }
                default "256";
                description "Maximum of logs.";
              }
    
              leaf agging-time {
                type uint8 {
                  range "1..60";
                }
                units "min";
                default "5";
                description
                  "Statistical interval.";
              }
            }  // container acl-log
    
            container global-set-queue-stat {
              description
                "Configure queue-stat interval.";
              leaf interval {
                type interval-value;
                default "5s";
                description
                  "Specify the value of interval (Unit: s).";
              }
            }  // container global-set-queue-stat
    
            container buffer-policy-applys {
              description
                "List of buffer-policy application.";
              list buffer-policy-apply {
                key "name";
                max-elements 1;
                description
                  "Configure buffer-policy application.";
                leaf name {
                  type leafref {
                    path "../../../../queue-scheduler-template/buffer-policys/buffer-policy/name";
                  }
                  description
                    "Buffer-policy name.";
                }
              }  // list buffer-policy-apply
            }  // container buffer-policy-applys
    
            container queue-wreds {
              description
                "List of queues applying wred.";
              list queue-wred {
                must
                  "(./speed-type='both-speed' and not (../queue-wred[speed-type='low-speed']) and not(../queue-wred[speed-type='high-speed']) or (./speed-type!='both-speed' and not(../queue-wred[speed-type='both-speed'])))";
                key "service-class speed-type";
                max-elements 16;
                description
                  "Configure queue applying wred.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf speed-type {
                  type speed-type;
                  description
                    "Speed type. The available options are high-speed, low-speed and both-speed.";
                }
    
                leaf wred-name {
                  type leafref {
                    path "../../../../wred-template/wreds/wred/name";
                  }
                  mandatory true;
                  description "Wred name.";
                }
              }  // list queue-wred
            }  // container queue-wreds
    
            container low-latency-enables {
              description
                "List of low latency enable.";
              list low-latency-enable {
                key "enable-type";
                description
                  "Configure low latency enable.";
                leaf enable-type {
                  type low-latency-enable-type;
                  description "Business type.";
                }
    
                leaf enable-value {
                  type low-latency-enable-value;
                  mandatory true;
                  description "Enable type.";
                }
              }  // list low-latency-enable
            }  // container low-latency-enables
    
            container scheduling-modes {
              description
                "List of scheduling mode. This node has default configuration.";
              list scheduling-mode {
                ext:generated-by "system" {
                  description "The configuration is generated automatically..";
                }
                ext:operation-exclude "create" {
                  description "The configuration cannot be created.";
                }
                key "slot-id";
                description
                  "Configure scheduling mode.";
                leaf slot-id {
                  type slot-id;
                  description
                    "Slot id. The chassis ID must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                }
    
                leaf mode-type {
                  type scheduling-mode-type;
                  mandatory true;
                  description "Mode type.";
                }
              }  // list scheduling-mode
            }  // container scheduling-modes
    
            container convergence-schedule {
              description
                "Configure convergence schedule mode.";
              leaf mode {
                type convergence-schedule-mode;
                description
                  "Convergence schedule. The mode can only change once in one minute.";
              }
            }  // container convergence-schedule
    
            container port-convergence-schedule {
              description
                "Configure port schedule convergence mode.";
              leaf mode {
                type port-convergence-schedule-mode;
                description
                  "Port Schedule Convergence.";
              }
            }  // container port-convergence-schedule
    
            container traffic-policy-untag {
              description
                "Configure policy rule match VLAN.";
              leaf untag-type {
                type traffic-policy-untag-type;
                description "Match type.";
              }
            }  // container traffic-policy-untag
    
            container host-packets {
              description "List of host packet.";
              list host-packet {
                key "dscp";
                description
                  "Configure host packet.";
                leaf dscp {
                  type uint32 {
                    range "0..63";
                  }
                  description "Priority value.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  mandatory true;
                  description
                    "Class of service.";
                }
    
                leaf color {
                  type qos-color;
                  mandatory true;
                  description
                    "Color marked to the data flows after measurement.";
                }
              }  // list host-packet
            }  // container host-packets
    
            container exp-phb-disable {
              description
                "Configure to disable the private network tag priority in a DS domain from being marked for the downstream traffic on the PW interface in the VLL networking.";
              leaf forward-type {
                type forward-type;
                description "Forward type.";
              }
            }  // container exp-phb-disable
    
            container packs {
              description
                "List of packaging function.";
              list pack {
                key "slot-id";
                description
                  "Configure packaging function.";
                leaf slot-id {
                  type slot-id;
                  description "Slot id.";
                }
    
                leaf switch-flag {
                  type switch-flag;
                  mandatory true;
                  description "Switch flag.";
                }
              }  // list pack
            }  // container packs
    
            container packet-block-threshold-all {
              description
                "Configure the packet block threshold size for all queues.";
              leaf size {
                type uint8 {
                  range "0..5";
                }
                units "kB";
                description
                  "The packet block threshold size.";
              }
            }  // container packet-block-threshold-all
    
            container burst-sizes {
              description
                "List of the burst size of a chip.";
              list burst-size {
                key "service-class";
                max-elements 8;
                description
                  "Configure the burst size of a chip.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf value {
                  type uint8 {
                    range "0..64";
                  }
                  mandatory true;
                  description "Burst size.";
                }
              }  // list burst-size
            }  // container burst-sizes
    
            container tm-schedule-traffic-statistics-enables {
              description
                "List of configuration which enables to collect packet statistics based on accuracy compensated lengths.";
              list tm-schedule-traffic-statistics-enable {
                key "slot-id card-id";
                description
                  "Configure collecting packet statistics based on accuracy compensated lengths.";
                leaf slot-id {
                  type slot-id;
                  description "Slot id.";
                }
    
                leaf card-id {
                  type string {
                    length "1..32";
                  }
                  description "Card id.";
                }
              }  // list tm-schedule-traffic-statistics-enable
            }  // container tm-schedule-traffic-statistics-enables
    
            container redback-packet-adjustment {
              presence
                "create redback-packet-adjustment";
              description
                "Enable/disable redback packet adjustment on the device.";
              leaf user-type {
                type user-type;
                mandatory true;
                description "User type.";
              }
            }  // container redback-packet-adjustment
    
            container redback-packet-adjustment-slots {
              description
                "List of redback packet adjustment on the slot.";
              list redback-packet-adjustment-slot {
                key "slot-id";
                description
                  "Configure redback packet adjustment on the slot.";
                leaf slot-id {
                  type slot-id;
                  description "Slot id.";
                }
    
                leaf user-type {
                  type user-type;
                  mandatory true;
                  description "User type.";
                }
              }  // list redback-packet-adjustment-slot
            }  // container redback-packet-adjustment-slots
    
            container link-layer-excludes {
              description
                "List of configuration which enables CAR and statistics for Layer 3 packets on the device.";
              list link-layer-exclude {
                key "access-type";
                description
                  "Configure enabling CAR and statistics for Layer 3 packets on the device.";
                leaf access-type {
                  type access-type;
                  description "Access type.";
                }
              }  // list link-layer-exclude
            }  // container link-layer-excludes
    
            container link-layer-exclude-slots {
              description
                "List of configuration which enables CAR and statistics for Layer 3 packets on the slot.";
              list link-layer-exclude-slot {
                key "slot-id access-type";
                description
                  "Configure enabling CAR and statistics for Layer 3 packets on the slot.";
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                leaf access-type {
                  type access-type;
                  description "Access type.";
                }
              }  // list link-layer-exclude-slot
            }  // container link-layer-exclude-slots
    
            container l2tp-layer-exclude {
              presence
                "create l2tp-layer-exclude";
              description
                "Enable/disable CAR and statistics for Layer 3 packets on the device only for L2TP users.";
              leaf l2tp-user {
                type l2tp-user;
                mandatory true;
                description "L2TP user.";
              }
            }  // container l2tp-layer-exclude
    
            container l2tp-layer-exclude-slots {
              description
                "List of configuration which enables CAR and statistics for Layer 3 packets on the slot only for L2TP users.";
              list l2tp-layer-exclude-slot {
                key "slot-id";
                description
                  "Configure enabling CAR and statistics for Layer 3 packets on the slot only for L2TP users.";
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
              }  // list l2tp-layer-exclude-slot
            }  // container l2tp-layer-exclude-slots
    
            container user-queue-resource-8cos-enhances {
              description
                "List of 8 CoS enhance size configuration.";
              list user-queue-resource-8cos-enhance {
                key "direction";
                max-elements 2;
                description
                  "Configure 8 CoS enhance size.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf cos-value {
                  type uint32 {
                    range "4..1000";
                  }
                  must "../cos-value mod 4 = 0";
                  mandatory true;
                  description "CoS value.";
                }
              }  // list user-queue-resource-8cos-enhance
            }  // container user-queue-resource-8cos-enhances
    
            container user-queue-pir-exhaust-alarm {
              description
                "Configure user-queue PIR exhaust alarm.";
              leaf enable {
                type boolean;
                default "false";
                description
                  "Enable/disable user-queue PIR exhaust alarm.";
              }
            }  // container user-queue-pir-exhaust-alarm
          }  // container global-config
    
          container global-query {
            config false;
            description "QoS global state.";
            container default-queue-statisticss {
              description
                "List of default queue statistics collected by telemetry.";
              list default-queue-statistics {
                key "interface-name service-class";
                description
                  "Statistics of default queue collected by telemetry.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description "Service class.";
                }
    
                leaf dropped-packets {
                  type uint64;
                  units "packet";
                  description "Dropped packets.";
                }
    
                leaf dropped-bytes {
                  type uint64;
                  units "Byte";
                  description "Dropped bytes.";
                }
    
                leaf passed-pps {
                  type uint64;
                  units "pps";
                  description "Passed pps.";
                }
    
                leaf passed-bps {
                  type uint64;
                  units "bit/s";
                  description "Passed bps.";
                }
    
                leaf total-packets {
                  type uint64;
                  units "packet";
                  description "Total packets.";
                }
    
                leaf total-bytes {
                  type uint64;
                  units "Byte";
                  description "Total bytes.";
                }
    
                leaf total-buffer {
                  type uint32;
                  units "kB";
                  description "Total buffer.";
                }
    
                leaf current-buffer {
                  type uint32;
                  units "kB";
                  description "Current buffer.";
                }
    
                leaf buffer-percent {
                  type uint32;
                  units "%";
                  description "Buffer percent.";
                }
    
                leaf max-buffer-percent {
                  type uint32;
                  units "%";
                  description
                    "Max buffer percent.";
                }
    
                leaf buffer-time {
                  type uint64;
                  units "s";
                  description "Buffer time.";
                }
    
                leaf clean-time {
                  type uint64;
                  units "s";
                  description "Clean time.";
                }
              }  // list default-queue-statistics
            }  // container default-queue-statisticss
    
            container all-queue-statisticss {
              description
                "List of all queue statistics collected by telemetry.";
              list all-queue-statistics {
                key "interface-name service-class";
                description
                  "Statistics of all queue collected by telemetry.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description "Service class.";
                }
    
                leaf dropped-packets {
                  type uint64;
                  units "packet";
                  description "Dropped packets.";
                }
    
                leaf dropped-bytes {
                  type uint64;
                  units "Byte";
                  description "Dropped bytes.";
                }
    
                leaf passed-pps {
                  type uint64;
                  units "pps";
                  description "Passed pps.";
                }
    
                leaf passed-bps {
                  type uint64;
                  units "bit/s";
                  description "Passed bps.";
                }
    
                leaf total-packets {
                  type uint64;
                  units "packet";
                  description "Total packets.";
                }
    
                leaf total-bytes {
                  type uint64;
                  units "Byte";
                  description "Total bytes.";
                }
              }  // list all-queue-statistics
            }  // container all-queue-statisticss
    
            container channel-queue-statisticss {
              description
                "List of channelized sub-interface queue statistics collected by telemetry.";
              list channel-queue-statistics {
                key "interface-name service-class";
                description
                  "Statistics of channelized sub-interface queue collected by telemetry.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description "Service class.";
                }
    
                leaf dropped-packets {
                  type uint64;
                  units "packet";
                  description "Dropped packets.";
                }
    
                leaf dropped-bytes {
                  type uint64;
                  units "Byte";
                  description "Dropped bytes.";
                }
    
                leaf passed-pps {
                  type uint64;
                  units "pps";
                  description "Passed pps.";
                }
    
                leaf passed-bps {
                  type uint64;
                  units "bit/s";
                  description "Passed bps.";
                }
    
                leaf total-packets {
                  type uint64;
                  units "packet";
                  description "Total packets.";
                }
    
                leaf total-bytes {
                  type uint64;
                  units "Byte";
                  description "Total bytes.";
                }
    
                leaf total-buffer {
                  type uint32;
                  units "kB";
                  description "Total buffer.";
                }
    
                leaf current-buffer {
                  type uint32;
                  units "kB";
                  description "Current buffer.";
                }
    
                leaf buffer-percent {
                  type uint32;
                  units "%";
                  description "Buffer percent.";
                }
    
                leaf max-buffer-percent {
                  type uint32;
                  units "%";
                  description
                    "Max buffer percent.";
                }
    
                leaf buffer-time {
                  type uint64;
                  units "s";
                  description "Buffer time.";
                }
    
                leaf clean-time {
                  type uint64;
                  units "s";
                  description "Clean time.";
                }
              }  // list channel-queue-statistics
            }  // container channel-queue-statisticss
    
            container user-informations {
              description
                "List of QoS user information.";
              list user-information {
                key "id direction";
                description "QoS user state.";
                leaf id {
                  type uint32 {
                    range "0..4294967294";
                  }
                  description "User id.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                container user-queue-statisticss {
                  description
                    "List of user queue statistics.";
                  list user-queue-statistics {
                    key "service-class";
                    description
                      "User queue statistics.";
                    leaf service-class {
                      type hqos-service-class;
                      description
                        "Service class.";
                    }
    
                    leaf pass-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Pass packet rate.";
                    }
    
                    leaf pass-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Pass byte rate.";
                    }
    
                    leaf pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Pass packets.";
                    }
    
                    leaf pass-bytes {
                      type uint64;
                      units "Byte";
                      description "Pass bytes.";
                    }
    
                    leaf discard-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Discard packet rate.";
                    }
    
                    leaf discard-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Discard byte rate.";
                    }
    
                    leaf discard-packets {
                      type uint64;
                      units "packet";
                      description
                        "Discard packets.";
                    }
    
                    leaf discard-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Discard bytes.";
                    }
    
                    leaf pass-peak-packet-time {
                      type yang:date-and-time;
                      description
                        "Pass peak packet time.";
                    }
    
                    leaf pass-peak-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Pass peak packet rate.";
                    }
    
                    leaf pass-peak-byte-time {
                      type yang:date-and-time;
                      description
                        "Pass peak byte time.";
                    }
    
                    leaf pass-peak-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Pass peak byte rate.";
                    }
    
                    leaf drop-peak-packet-time {
                      type yang:date-and-time;
                      description
                        "Wred drop peak packet time.";
                    }
    
                    leaf drop-peak-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Wred drop peak packtet rate.";
                    }
    
                    leaf drop-peak-byte-time {
                      type yang:date-and-time;
                      description
                        "Wred drop peak byte time.";
                    }
    
                    leaf drop-peak-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Wred drop peak byte rate.";
                    }
    
                    leaf tail-peak-packet-time {
                      type yang:date-and-time;
                      description
                        "Tail drop peak packet time.";
                    }
    
                    leaf tail-peak-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Tail drop peak packet rate.";
                    }
    
                    leaf tail-peak-byte-time {
                      type yang:date-and-time;
                      description
                        "Tail drop peak byte time.";
                    }
    
                    leaf tail-peak-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Tail drop peak byte rate.";
                    }
                  }  // list user-queue-statistics
                }  // container user-queue-statisticss
    
                container car-statisticss {
                  description
                    "List of CAR statistics.";
                  list car-statistics {
                    key "resource-type";
                    description
                      "CAR statistics.";
                    leaf resource-type {
                      type qos-res-type;
                      description
                        "Resource type.";
                    }
    
                    leaf pass-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Pass packet rate.";
                    }
    
                    leaf pass-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Pass byte rate.";
                    }
    
                    leaf pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Pass packets.";
                    }
    
                    leaf pass-bytes {
                      type uint64;
                      units "Byte";
                      description "Pass bytes.";
                    }
    
                    leaf discard-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Discard packet rate.";
                    }
    
                    leaf discard-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Discard byte rate.";
                    }
    
                    leaf discard-packets {
                      type uint64;
                      units "packet";
                      description
                        "Discard packets.";
                    }
    
                    leaf discard-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Discard bytes.";
                    }
    
                    leaf pass-peak-packet-time {
                      type yang:date-and-time;
                      description
                        "Pass peak packet time of L2 or L3V4.";
                    }
    
                    leaf pass-peak-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Pass peak packet rate of L2 or L3V4.";
                    }
    
                    leaf pass-peak-byte-time {
                      type yang:date-and-time;
                      description
                        "Pass peak byte time of L2 or L3V4.";
                    }
    
                    leaf pass-peak-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Pass peak byte rate of L2 or L3V4.";
                    }
    
                    leaf drop-peak-packet-time {
                      type yang:date-and-time;
                      description
                        "Drop peak packet time of L2 or L3V4.";
                    }
    
                    leaf drop-peak-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Drop peak packet rate of L2 or L3V4.";
                    }
    
                    leaf drop-peak-byte-time {
                      type yang:date-and-time;
                      description
                        "Drop peak byte time of L2 or L3V4.";
                    }
    
                    leaf drop-peak-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Drop peak byte rate of L2 or L3V4.";
                    }
    
                    leaf v6-pass-peak-packet-time {
                      type yang:date-and-time;
                      description
                        "Pass peak packet time of L3V6.";
                    }
    
                    leaf v6-pass-peak-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Pass peak packet rate of L3V6.";
                    }
    
                    leaf v6-pass-peak-byte-time {
                      type yang:date-and-time;
                      description
                        "Pass peak byte time of L3V6.";
                    }
    
                    leaf v6-pass-peak-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Pass peak byte rate of L3V6.";
                    }
    
                    leaf v6-tail-peak-packet-time {
                      type yang:date-and-time;
                      description
                        "Tail drop peak packet time of L3V6.";
                    }
    
                    leaf v6-tail-peak-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Tail drop peak packet rate of L3V6.";
                    }
    
                    leaf v6-tail-peak-byte-time {
                      type yang:date-and-time;
                      description
                        "Tail drop peak byte time of L3V6.";
                    }
    
                    leaf v6-tail-peak-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Tail drop peak byte rate of L3V6.";
                    }
                  }  // list car-statistics
                }  // container car-statisticss
    
                container flow-queue-infos {
                  description
                    "List of flow queue information.";
                  list flow-queue-info {
                    key "service-class";
                    description
                      "Flow queue state.";
                    leaf service-class {
                      type hqos-service-class;
                      description
                        "Service class.";
                    }
    
                    leaf schedule-type {
                      type queue-schedule-mode;
                      description
                        "Schedule type.";
                    }
    
                    leaf weight {
                      type uint8;
                      description "Weight.";
                    }
    
                    leaf shaping {
                      type uint32;
                      units "kbit/s";
                      description "Shaping.";
                    }
    
                    leaf priority {
                      type uint8;
                      description "Priority.";
                    }
                  }  // list flow-queue-info
                }  // container flow-queue-infos
    
                container cir-info {
                  description
                    "Committed information rate and Peak information rate state.";
                  leaf cir {
                    type uint32;
                    units "kbit/s";
                    description
                      "Committed information rate.";
                  }
    
                  leaf pir {
                    type uint32;
                    units "kbit/s";
                    description
                      "Peak information rate.";
                  }
                }  // container cir-info
              }  // list user-information
            }  // container user-informations
    
            container interface-traffic-policy-statisticss {
              description
                "List of traffic policy statistics of interface.";
              list interface-traffic-policy-statistics {
                key "interface-name pe-vlan-id vlan-id direction slot-id";
                description
                  "Traffic policy statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf pe-vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "Pe VLAN id.";
                }
    
                leaf vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "VLAN id.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf slot-id {
                  type slot-id;
                  description
                    "Slot id. The chassis id must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                }
    
                leaf traffic-policy-name {
                  type string {
                    length "1..127";
                  }
                  description "Policy name.";
                }
    
                leaf multi-policy-mode {
                  type boolean;
                  description
                    "Enabled/disabled multiple policys.";
                }
    
                leaf apply-time {
                  type yang:date-and-time;
                  description
                    "Time of applying a policy.";
                }
    
                leaf switch-status {
                  type statistics-switch-status;
                  description
                    "Status of enabling/disabling statistics.";
                }
    
                leaf switch-time {
                  type yang:date-and-time;
                  description
                    "Time of enabling/disabling statistics.";
                }
    
                leaf clear-time {
                  type yang:date-and-time;
                  description
                    "Time of clearing statistics.";
                }
    
                leaf clear-flag {
                  type boolean;
                  description
                    "Enable/disable clearing statistics.";
                }
    
                uses policy-statistics-type;
    
                container rule-based-staticss {
                  description
                    "List of traffic rule classifier statistics.";
                  list rule-based-statics {
                    key "classifier-name traffic-policy-name service-type ifmatch-id rule-id";
                    description
                      "Traffic classifier statistics.";
                    leaf classifier-name {
                      type leafref {
                        path "/qos/classifier-template/traffic-classifiers/traffic-classifier/name";
                      }
                      description
                        "Name of a traffic classifier.";
                    }
    
                    leaf traffic-policy-name {
                      type leafref {
                        path "/qos/classifier-template/traffic-policys/traffic-policy/name";
                      }
                      description
                        "Name of a traffic policy.";
                    }
    
                    leaf service-type {
                      type qos-rule-service-type;
                      description
                        "Service type.";
                    }
    
                    leaf ifmatch-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Ifmatch-id of a traffic classifier.";
                    }
    
                    leaf rule-id {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description "Rule-id.";
                    }
    
                    leaf acl-name {
                      type string {
                        length "1..63";
                      }
                      description
                        "Acl number or name.";
                    }
    
                    leaf protocol-family {
                      type protocol-family;
                      description
                        "IP protocol version.";
                    }
    
                    leaf match-pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of matched and passed packets.";
                    }
    
                    leaf match-pass-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of matched and passed bytes.";
                    }
    
                    leaf match-drop-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of matched but discarded packets.";
                    }
    
                    leaf match-drop-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of matched but discarded bytes.";
                    }
                  }  // list rule-based-statics
                }  // container rule-based-staticss
    
                container classifier-based-staticss {
                  description
                    "List of action car statistics.";
                  list classifier-based-statics {
                    key "classifier-name traffic-policy-name";
                    description
                      "Action car statistics.";
                    leaf classifier-name {
                      type leafref {
                        path "/qos/classifier-template/traffic-classifiers/traffic-classifier/name";
                      }
                      description
                        "Name of a traffic classifier.";
                    }
    
                    leaf traffic-policy-name {
                      type leafref {
                        path "/qos/classifier-template/traffic-policys/traffic-policy/name";
                      }
                      description
                        "Name of a traffic policy.";
                    }
    
                    leaf service-type {
                      type qos-rule-service-type;
                      description
                        "Service type.";
                    }
    
                    leaf share-mode {
                      type switch-flag;
                      default "enable";
                      description
                        "Sharing mode. After the policy is applied, the attribute of this node cannot be changed.";
                    }
    
                    leaf match-pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of matched and passed packets.";
                    }
    
                    leaf match-pass-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of matched and passed bytes.";
                    }
    
                    leaf match-drop-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of matched but discarded packets.";
                    }
    
                    leaf match-drop-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of matched but discarded bytes.";
                    }
                  }  // list classifier-based-statics
                }  // container classifier-based-staticss
    
                container classifier-statisticss {
                  description
                    "List of traffic classifier statistics.";
                  list classifier-statistics {
                    key "classifier-name";
                    description
                      "Traffic classifier statistics.";
                    leaf classifier-name {
                      type string {
                        length "1..127";
                      }
                      description
                        "Name of a traffic classifier.";
                    }
    
                    uses classifier-statistics-type;
    
                    leaf unknownunisup-pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of the passed packets by Unknown Unicast Suppression.";
                    }
    
                    leaf unknownunisup-pass-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of the passed bytes by Unknown Unicast Suppression.";
                    }
    
                    leaf unknownunisup-pass-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the passed packets Unknown Unicast Suppression.";
                    }
    
                    leaf unknownunisup-pass-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the passed bytes by Unknown Unicast Suppression.";
                    }
    
                    leaf unknownunisup-drop-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of the discarded packets by Unknown Unicast Suppression.";
                    }
    
                    leaf unknownunisup-drop-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of the discarded bytes by Unknown Unicast Suppression.";
                    }
    
                    leaf unknownunisup-drop-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the discarded packets by Unknown Unicast Suppression.";
                    }
    
                    leaf unknownunisup-drop-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the discarded bytes by Unknown Unicast Suppression.";
                    }
    
                    leaf multicastsup-pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of the passed packets by Multicast Suppression.";
                    }
    
                    leaf multicastsup-pass-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of the passed bytes by Multicast Suppression.";
                    }
    
                    leaf multicastsup-pass-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the passed packets Multicast Suppression.";
                    }
    
                    leaf multicastsup-pass-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the passed bytes by Multicast Suppression.";
                    }
    
                    leaf multicastsup-drop-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of the discarded packets by Multicast Suppression.";
                    }
    
                    leaf multicastsup-drop-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of the discarded bytes by Multicast Suppression.";
                    }
    
                    leaf multicastsup-drop-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the discarded packets by Multicast Suppression.";
                    }
    
                    leaf multicastsup-drop-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the discarded bytes by Multicast Suppression.";
                    }
    
                    leaf broadcastsup-pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of the passed packets by Broadcast Suppression.";
                    }
    
                    leaf broadcastsup-pass-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of the passed bytes by Broadcast Suppression.";
                    }
    
                    leaf broadcastsup-pass-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the passed packets Broadcast Suppression.";
                    }
    
                    leaf broadcastsup-pass-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the passed bytes by Broadcast Suppression.";
                    }
    
                    leaf broadcastsup-drop-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of the discarded packets by Broadcast Suppression.";
                    }
    
                    leaf broadcastsup-drop-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of the discarded bytes by Broadcast Suppression.";
                    }
    
                    leaf broadcastsup-drop-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the discarded packets by Broadcast Suppression.";
                    }
    
                    leaf broadcastsup-drop-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the discarded bytes by Broadcast Suppression.";
                    }
                  }  // list classifier-statistics
                }  // container classifier-statisticss
    
                container multi-policy-statisticss {
                  description
                    "List of multiple traffic policy statistics for interface.";
                  list multi-policy-statistics {
                    key "traffic-policy-name";
                    description
                      "Multiple traffic policy statistics for interface.";
                    leaf traffic-policy-name {
                      type leafref {
                        path "/qos:qos/qos:classifier-template/qos:traffic-policys/qos:traffic-policy/qos:name";
                      }
                      description "Policy name.";
                    }
    
                    leaf apply-time {
                      type yang:date-and-time;
                      description
                        "Time of applying a policy.";
                    }
    
                    leaf switch-status {
                      type statistics-switch-status;
                      description
                        "Status of enabling/disabling statistics.";
                    }
    
                    leaf switch-time {
                      type yang:date-and-time;
                      description
                        "Time of enabling/disabling statistics.";
                    }
    
                    leaf clear-time {
                      type yang:date-and-time;
                      description
                        "Time of clearing statistics.";
                    }
    
                    leaf clear-flag {
                      type boolean;
                      description
                        "Enable/disable clearing statistics.";
                    }
    
                    uses multi-policy-statistics-type;
    
                    container classifier-statisticss {
                      description
                        "List of traffic classifier statistics.";
                      list classifier-statistics {
                        key "classifier-name";
                        description
                          "Traffic classifier statistics.";
                        leaf classifier-name {
                          type string {
                            length "1..127";
                          }
                          description
                            "Name of a traffic classifier.";
                        }
    
                        uses multi-policy-classifier-statistics-type;
                      }  // list classifier-statistics
                    }  // container classifier-statisticss
                  }  // list multi-policy-statistics
                }  // container multi-policy-statisticss
              }  // list interface-traffic-policy-statistics
            }  // container interface-traffic-policy-statisticss
    
            container mpls-te-statisticss {
              description
                "List of MPLS TE statistics.";
              list mpls-te-statistics {
                key "interface-name direction service-class";
                description
                  "MPLS te statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf service-class {
                  type qos-service-class-total;
                  description "Service class.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description "Pass packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description "Pass bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Pass packet rate.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description "Pass byte rate.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description "Drop packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description "Drop bytes.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Drop packet rate.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description "Drop byte rate.";
                }
    
                leaf total-buffer {
                  type uint32;
                  units "kB";
                  description "Total buffer.";
                }
    
                leaf current-buffer {
                  type uint32;
                  units "kB";
                  description "Current buffer.";
                }
    
                leaf clear-time {
                  type yang:date-and-time;
                  description
                    "Time of clearing statistics.";
                }
              }  // list mpls-te-statistics
            }  // container mpls-te-statisticss
    
            container car-resources {
              description
                "List of CAR resource state.";
              list car-resource {
                key "slot-id car-type";
                description
                  "CAR resource state.";
                leaf slot-id {
                  type slot-id;
                  description "Slot id.";
                }
    
                leaf car-type {
                  type string {
                    length "1..96";
                  }
                  description "Car type.";
                }
    
                leaf inbound-resource {
                  type uint32;
                  description
                    "Inbound car resource.";
                }
    
                leaf outbound-resource {
                  type uint32;
                  description
                    "Outbound car resource.";
                }
              }  // list car-resource
            }  // container car-resources
    
            container traffic-buffer-usages {
              description
                "List of traffic buffer usage.";
              list traffic-buffer-usage {
                key "slot-id direction chip-name";
                description
                  "Traffic buffer usage state.";
                leaf slot-id {
                  type string {
                    length "1..15";
                  }
                  description "Slot id.";
                }
    
                leaf direction {
                  type all-direction-type;
                  description "Direction.";
                }
    
                leaf chip-name {
                  type string {
                    length "1..32";
                  }
                  description "Chip name.";
                }
    
                leaf chip-type {
                  type string {
                    length "1..32";
                  }
                  description "Chip type.";
                }
    
                leaf total-size {
                  type uint32;
                  units "kB";
                  description "Total size.";
                }
    
                leaf used-size {
                  type uint32;
                  units "kB";
                  description "Used size.";
                }
              }  // list traffic-buffer-usage
            }  // container traffic-buffer-usages
    
            container traffic-policy-application-resources {
              description
                "List of traffic policy resource state.";
              list traffic-policy-application-resource {
                key "slot-id";
                description
                  "Traffic policy resource state.";
                leaf slot-id {
                  type string {
                    length "1..15";
                  }
                  description "Slot id.";
                }
    
                leaf used {
                  type uint32;
                  description "Used resource.";
                }
    
                leaf free {
                  type uint32;
                  description "Free resource.";
                }
              }  // list traffic-policy-application-resource
            }  // container traffic-policy-application-resources
    
            container user-group-queue-resources {
              description
                "List of user group queue resource state.";
              list user-group-queue-resource {
                key "slot-id direction tm-type pool";
                description
                  "User group queue resource state.";
                leaf slot-id {
                  type string {
                    length "1..15";
                  }
                  description "Slot id.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf tm-type {
                  type string {
                    length "1..32";
                  }
                  description
                    "Resource TM type.";
                }
    
                leaf pool {
                  type string {
                    length "1..32";
                  }
                  description "Resource pool.";
                }
    
                leaf used-number {
                  type uint32;
                  description
                    "Used user group queue id resource.";
                }
    
                leaf free-number {
                  type uint32;
                  description
                    "Free user group queue id resource.";
                }
              }  // list user-group-queue-resource
            }  // container user-group-queue-resources
    
            container queue-statisticss {
              description
                "List of queue statistics.";
              list queue-statistics {
                key "interface-name service-class";
                description "Queue statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description "Pass packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description "Pass bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Pass packet rate.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description "Pass byte rate.";
                }
    
                leaf discard-packets {
                  type uint64;
                  units "packet";
                  description "Discard packets.";
                }
    
                leaf discard-bytes {
                  type uint64;
                  units "Byte";
                  description "Discard bytes.";
                }
    
                leaf discard-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Discard packet rate.";
                }
    
                leaf discard-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Discard byte rate.";
                }
              }  // list queue-statistics
            }  // container queue-statisticss
    
            container port-queue-statisticss {
              config false;
              description
                "List of statistics on traffic shaping on interfaces.";
              list port-queue-statistics {
                key "interface-name service-class";
                description
                  "Statistics of traffic shaping on interfaces.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
    
                leaf drop-tail-packets {
                  type uint64;
                  units "packet";
                  description
                    "Drop tail packets.";
                }
    
                leaf drop-tail-bytes {
                  type uint64;
                  units "Byte";
                  description "Drop tail bytes.";
                }
    
                leaf drop-wred-packets {
                  type uint64;
                  units "packet";
                  description
                    "Drop wred packets.";
                }
    
                leaf drop-wred-bytes {
                  type uint64;
                  units "Byte";
                  description "Drop wred bytes.";
                }
    
                leaf statistics-interval {
                  type uint32;
                  units "s";
                  description
                    "Statistics-interval.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest 30 seconds. Some products are during the latest statistics-interval.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest 30 seconds. Some products are during the latest statistics-interval.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest 30 seconds. Some products are during the latest statistics-interval.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest 30 seconds. Some products are during the latest statistics-interval.";
                }
    
                leaf drop-tail-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Drop tail packet rate.";
                }
    
                leaf drop-tail-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Drop tail byte rate.";
                }
    
                leaf drop-wred-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Drop WRED PktRate.";
                }
    
                leaf drop-wred-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Drop wred byte rate.";
                }
    
                leaf peak-time {
                  type yang:date-and-time;
                  description "Peak time.";
                }
    
                leaf peak-rate {
                  type uint64;
                  units "bit/s";
                  description
                    "Rate of the peak bytes during the latest 30 seconds.";
                }
    
                leaf current-queue-usage {
                  type uint32;
                  units "%";
                  description
                    "Current usage percentage of queue.";
                }
    
                leaf total-buffer-size {
                  type uint32;
                  units "kB";
                  description
                    "Size of total buffer.";
                }
    
                leaf used-buffer-size {
                  type uint32;
                  units "kB";
                  description
                    "Size of used buffer.";
                }
    
                leaf traffic-flow {
                  type uint64;
                  units "bit/s";
                  description
                    "Traffic flow towards this port.";
                }
    
                leaf physical-bandwidth {
                  type uint64;
                  units "bit/s";
                  description
                    "Physical bandwidth of port QoS.";
                }
              }  // list port-queue-statistics
            }  // container port-queue-statisticss
    
            container port-queue-default-statisticss {
              config false;
              description
                "List of default queue statistics on traffic shaping on interfaces.";
              list port-queue-default-statistics {
                key "interface-name service-class";
                description
                  "Statistics of default queue on traffic shaping on interfaces.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
    
                leaf statistics-interval {
                  type uint32;
                  units "s";
                  description
                    "Statistics-interval.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest statistics-interval.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest statistics-interval.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest statistics-interval.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest statistics-interval.";
                }
    
                leaf configured-queue-depth {
                  type uint32;
                  units "kB";
                  description
                    "Configured queue depth.";
                }
    
                leaf used-buffer-size {
                  type uint32;
                  units "kB";
                  description
                    "Size of used buffer.";
                }
    
                leaf reset-time {
                  type yang:date-and-time;
                  description
                    "Statistics last reset time.";
                }
    
                leaf traffic-flow {
                  type uint64;
                  units "bit/s";
                  description
                    "Traffic flow towards this port.";
                }
    
                leaf physical-bandwidth {
                  type uint64;
                  units "bit/s";
                  description
                    "Physical bandwidth of port QoS.";
                }
              }  // list port-queue-default-statistics
            }  // container port-queue-default-statisticss
    
            container port-queue-onboard-statisticss {
              config false;
              description
                "List of port-queue statistics on board with ETM.";
              list port-queue-onboard-statistics {
                key "interface-name service-class";
                description
                  "Statistics of port-queue on board with ETM.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
              }  // list port-queue-onboard-statistics
            }  // container port-queue-onboard-statisticss
    
            container default-flow-queue-statisticss {
              description
                "List of channelized sub-interface default flow-queue statistics.";
              list default-flow-queue-statistics {
                key "interface-name service-class";
                description
                  "Channelized sub-interface default flow-queue statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class-8cos;
                  description "Service class.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description "Pass packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description "Pass bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Pass packet rate.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description "Pass byte rate.";
                }
    
                leaf discard-packets {
                  type uint64;
                  units "packet";
                  description "Discard packets.";
                }
    
                leaf discard-bytes {
                  type uint64;
                  units "Byte";
                  description "Discard bytes.";
                }
    
                leaf discard-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Discard packet rate.";
                }
    
                leaf discard-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Discard byte rate.";
                }
    
                leaf total-buffer-size {
                  type uint32;
                  units "kB";
                  description
                    "Size of total buffer.";
                }
    
                leaf used-buffer-size {
                  type uint32;
                  units "kB";
                  description
                    "Size of used buffer.";
                }
              }  // list default-flow-queue-statistics
            }  // container default-flow-queue-statisticss
    
            container interface-profile-statistics {
              description
                "Statistics of profile interfaces.";
              container user-queues {
                description
                  "List of user queue statistics on interfaces.";
                list user-queue {
                  key "interface-name pe-vlan-id vlan-id direction service-class";
                  description
                    "Statistics of user queue on interfaces.";
                  leaf interface-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf pe-vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "Pe VLAN id.";
                  }
    
                  leaf vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "VLAN id.";
                  }
    
                  leaf direction {
                    type qos-direction-type;
                    description
                      "Direction of profile.";
                  }
    
                  leaf service-class {
                    type qos-service-class-8cos;
                    description
                      "Class of service.";
                  }
    
                  leaf pass-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of passed packets.";
                  }
    
                  leaf pass-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of passed bytes.";
                  }
    
                  leaf pass-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets passed during the latest 30 seconds.";
                  }
    
                  leaf pass-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes passed during the latest 30 seconds.";
                  }
    
                  leaf drop-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of dropped packets.";
                  }
    
                  leaf drop-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of dropped bytes.";
                  }
    
                  leaf drop-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets dropped during the latest 30 seconds.";
                  }
    
                  leaf drop-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes dropped during the latest 30 seconds.";
                  }
    
                  leaf random-drop-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of random dropped packets.";
                  }
    
                  leaf random-drop-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of random dropped bytes.";
                  }
    
                  leaf random-drop-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets random dropped during the latest 30 seconds.";
                  }
    
                  leaf random-drop-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes random dropped during the latest 30 seconds.";
                  }
    
                  leaf time-stamp {
                    type yang:date-and-time;
                    description
                      "Time of last packet received or sent.";
                  }
    
                  leaf buffer-total {
                    type uint32;
                    units "kB";
                    description
                      "Size of buffer.";
                  }
    
                  leaf buffer-used {
                    type uint32;
                    units "kB";
                    description
                      "Size of used buffer.";
                  }
    
                  leaf clear-time {
                    type yang:date-and-time;
                    description
                      "Time of clearing statistics.";
                  }
                }  // list user-queue
              }  // container user-queues
    
              container cars {
                description
                  "List of profile CAR satistics on interfaces.";
                list car {
                  key "car-type interface-name pe-vlan-id vlan-id direction";
                  description
                    "Statistics of profile CAR on interfaces.";
                  leaf car-type {
                    type statistics-car-type;
                    description "Car type.";
                  }
    
                  leaf interface-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf pe-vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "Pe VLAN id.";
                  }
    
                  leaf vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "VLAN id.";
                  }
    
                  leaf direction {
                    type qos-direction-type;
                    description
                      "Direction of profile.";
                  }
    
                  leaf pass-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of passed packets.";
                  }
    
                  leaf pass-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of passed bytes.";
                  }
    
                  leaf pass-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets passed during the latest 30 seconds.";
                  }
    
                  leaf pass-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes passed during the latest 30 seconds.";
                  }
    
                  leaf drop-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of dropped packets.";
                  }
    
                  leaf drop-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of dropped bytes.";
                  }
    
                  leaf drop-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets dropped during the latest 30 seconds.";
                  }
    
                  leaf drop-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes dropped during the latest 30 seconds.";
                  }
                }  // list car
              }  // container cars
    
              container share-shapings {
                description
                  "List of share-shaping statistics on interfaces.";
                list share-shaping {
                  key "interface-name pe-vlan-id vlan-id direction shaping-id";
                  description
                    "Statistics of share-shaping on interfaces.";
                  leaf interface-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf pe-vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "Pe VLAN id.";
                  }
    
                  leaf vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "VLAN id.";
                  }
    
                  leaf direction {
                    type qos-direction-type;
                    description
                      "Direction of profile.";
                  }
    
                  leaf shaping-id {
                    type uint64;
                    description "Shaping id.";
                  }
    
                  leaf pass-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of passed packets.";
                  }
    
                  leaf pass-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of passed bytes.";
                  }
    
                  leaf pass-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets passed during the latest 30 seconds.";
                  }
    
                  leaf pass-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes passed during the latest 30 seconds.";
                  }
    
                  leaf drop-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of dropped packets.";
                  }
    
                  leaf drop-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of dropped bytes.";
                  }
    
                  leaf drop-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets dropped during the latest 30 seconds.";
                  }
    
                  leaf drop-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes dropped during the latest 30 seconds.";
                  }
                }  // list share-shaping
              }  // container share-shapings
    
              container priority-cars {
                description
                  "List of priority CAR statistics on interfaces.";
                list priority-car {
                  key "interface-name pe-vlan-id vlan-id direction priority-num";
                  description
                    "Statistics of priority car on interfaces.";
                  leaf interface-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf pe-vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "Pe VLAN id.";
                  }
    
                  leaf vlan-id {
                    type uint32 {
                      range "0..4094";
                    }
                    description "VLAN id.";
                  }
    
                  leaf direction {
                    type qos-direction-type;
                    description
                      "Direction of profile.";
                  }
    
                  leaf priority-num {
                    type qos-priority-num-type;
                    description
                      "Direction of profile.";
                  }
    
                  leaf pass-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of passed packets.";
                  }
    
                  leaf pass-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of passed bytes.";
                  }
    
                  leaf pass-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets passed during the latest 30 seconds.";
                  }
    
                  leaf pass-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes passed during the latest 30 seconds.";
                  }
    
                  leaf drop-packets {
                    type uint64;
                    units "packet";
                    description
                      "Number of dropped packets.";
                  }
    
                  leaf drop-bytes {
                    type uint64;
                    units "Byte";
                    description
                      "Number of dropped bytes.";
                  }
    
                  leaf drop-packet-rate {
                    type uint64;
                    units "pps";
                    description
                      "Rate of the packets dropped during the latest 30 seconds.";
                  }
    
                  leaf drop-byte-rate {
                    type uint64;
                    units "Byte/s";
                    description
                      "Rate of the bytes dropped during the latest 30 seconds.";
                  }
                }  // list priority-car
              }  // container priority-cars
            }  // container interface-profile-statistics
    
            container hard-pipe-abilitys {
              description
                "List of interface support for hard pipe.";
              list hard-pipe-ability {
                key "interface-name";
                description
                  "Operational state of interface support for hard pipe.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf ability {
                  type ability-type;
                  description "Ability type.";
                }
              }  // list hard-pipe-ability
            }  // container hard-pipe-abilitys
    
            container l2vpn-hard-pipe-statisticss {
              description
                "List of hard pipe traffic statisticss on the AC side.";
              list l2vpn-hard-pipe-statistics {
                key "interface-name";
                description
                  "Statistics of hard pipe on the AC side.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf direction {
                  type qos-direction-inbound;
                  description "Direction.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description "Pass packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description "Pass bytes.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description "Drop packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description "Drop bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest 30 seconds.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest 30 seconds.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest 30 seconds.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest 30 seconds.";
                }
              }  // list l2vpn-hard-pipe-statistics
            }  // container l2vpn-hard-pipe-statisticss
    
            container traffic-policy-template-application {
              description
                "Traffic policy template application state.";
              leaf total-classifier {
                type uint32;
                description
                  "Total traffic classifier.";
              }
    
              leaf created-classifier {
                type uint32;
                description
                  "Created traffic classifier.";
              }
    
              leaf free-classifier {
                type uint32;
                description
                  "Free traffic classifier.";
              }
    
              leaf total-behavior {
                type uint32;
                description
                  "Total traffic behavior.";
              }
    
              leaf created-behavior {
                type uint32;
                description
                  "Created traffic behavior.";
              }
    
              leaf free-behavior {
                type uint32;
                description
                  "Free traffic behavior.";
              }
    
              leaf total-policy {
                type uint32;
                description
                  "Total traffic policy.";
              }
    
              leaf created-policy {
                type uint32;
                description
                  "Created traffic policy.";
              }
    
              leaf free-policy {
                type uint32;
                description
                  "Free traffic policy.";
              }
            }  // container traffic-policy-template-application
    
            container flow-car-statisticss {
              description
                "List of flow CAR statisticss.";
              list flow-car-statistics {
                key "ip-type slot-id direction";
                description
                  "Flow CAR statistics.";
                leaf ip-type {
                  type stream-direction-type;
                  description
                    "Type of an IP address.";
                }
    
                leaf slot-id {
                  type slot-id;
                  description
                    "Slot id. The chassis ID must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf ip {
                  type inet:ipv4-address-no-zone;
                  description "Ip.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped.";
                }
              }  // list flow-car-statistics
            }  // container flow-car-statisticss
    
            container interface-action-user-queue-statisticss {
              description
                "List of user queue statistics on behavior.";
              list interface-action-user-queue-statistics {
                key "interface-name pe-vlan-id vlan-id direction classifier-name service-class";
                description
                  "Statistics of user queue on behavior.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf pe-vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "Pe VLAN id.";
                }
    
                leaf vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "VLAN id.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf classifier-name {
                  type leafref {
                    path "/qos/classifier-template/traffic-classifiers/traffic-classifier/name";
                  }
                  description
                    "Name of a traffic classifier.";
                }
    
                leaf service-class {
                  type hqos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest 30 seconds.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest 30 seconds.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest 30 seconds.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest 30 seconds.";
                }
    
                leaf buffer-total {
                  type uint32;
                  units "kB";
                  description "Size of buffer.";
                }
    
                leaf buffer-used {
                  type uint32;
                  units "kB";
                  description
                    "Size of used buffer.";
                }
              }  // list interface-action-user-queue-statistics
            }  // container interface-action-user-queue-statisticss
    
            container interface-user-group-queue-statistics {
              description
                "List of user group queue statistics on interfaces.";
              list interface-user-group-queue-statistic {
                key "interface-name pe-vlan-id vlan-id direction service-class";
                description
                  "Statistics of user group queue on interfaces.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf pe-vlan-id {
                  type uint32 {
                    range "0..4094";
                  }
                  description "Pe VLAN id.";
                }
    
                leaf vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "VLAN id.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description
                    "Direction of user-group-queue.";
                }
    
                leaf service-class {
                  type qos-service-class-filter;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest 30 seconds.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest 30 seconds.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest 30 seconds.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest 30 seconds.";
                }
              }  // list interface-user-group-queue-statistic
            }  // container interface-user-group-queue-statistics
    
            container interface-sub-port-queue-statistics {
              description
                "List of sub port queue statistics on interfaces.";
              list interface-sub-port-queue-statistic {
                key "interface-name service-class";
                description
                  "Statistics of sub port queue on interfaces.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf service-class {
                  type qos-service-class-total;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest 30 seconds.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest 30 seconds.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest 30 seconds.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest 30 seconds.";
                }
              }  // list interface-sub-port-queue-statistic
            }  // container interface-sub-port-queue-statistics
    
            container interface-hard-pipe-statisticss {
              description
                "List of interface hard pipe statistics.";
              list interface-hard-pipe-statistics {
                key "interface-name";
                description
                  "Interface hard pipe statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description "Pass packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description "Pass bytes.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description "Drop packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description "Drop bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest 30 seconds.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest 30 seconds.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest 30 seconds.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest 30 seconds.";
                }
              }  // list interface-hard-pipe-statistics
            }  // container interface-hard-pipe-statisticss
    
            container qos-resource-rules {
              description
                "List of resource rule.";
              list qos-resource-rule {
                key "rule-type slot-id resource-pool";
                description
                  "Display resource rule state.";
                leaf rule-type {
                  type rule-type;
                  description "Rule type.";
                }
    
                leaf slot-id {
                  type string {
                    length "1..15";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  description
                    "Slot ID. The chassis ID must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                }
    
                leaf resource-pool {
                  type string {
                    length "1..32";
                  }
                  description "Resource pool.";
                }
    
                leaf used-resource {
                  type uint32;
                  description "Used resource.";
                }
    
                leaf free-resource {
                  type uint32;
                  description "Free resource.";
                }
    
                leaf reserved-resource {
                  type uint32;
                  description
                    "Reserved resource.";
                }
    
                leaf total-resource {
                  type uint32;
                  description "Total resource.";
                }
    
                leaf utilization-rate {
                  type uint32 {
                    range "0..100";
                  }
                  description
                    "Resource utilization rate.";
                }
              }  // list qos-resource-rule
            }  // container qos-resource-rules
    
            container sub-port-queue-resources {
              description
                "List of sub port queue resource state.";
              list sub-port-queue-resource {
                key "slot-id direction tm-type";
                description
                  "Display sub port queue resource state.";
                leaf slot-id {
                  type string {
                    length "1..15";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  description
                    "Slot ID. The chassis ID must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                }
    
                leaf direction {
                  type out-direction-type;
                  description "Direction.";
                }
    
                leaf tm-type {
                  type string {
                    length "1..32";
                  }
                  description
                    "Resource TM type.";
                }
    
                leaf used-resource {
                  type uint32;
                  description "Used resource.";
                }
    
                leaf free-resource {
                  type uint32;
                  description "Free resource.";
                }
              }  // list sub-port-queue-resource
            }  // container sub-port-queue-resources
    
            container dp-resources {
              description
                "List of dp resource state.";
              list dp-resource {
                key "slot-id direction tm";
                description
                  "Display dp resource state.";
                leaf slot-id {
                  type string {
                    length "1..15";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  description
                    "Slot ID. The chassis ID must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                }
    
                leaf direction {
                  type out-direction-type;
                  description "Direction.";
                }
    
                leaf tm {
                  type string {
                    length "1..32";
                  }
                  description "TM.";
                }
    
                leaf used-resource {
                  type uint32;
                  description "Used resource.";
                }
    
                leaf free-resource {
                  type uint32;
                  description "Free resource.";
                }
              }  // list dp-resource
            }  // container dp-resources
    
            container interface-car-statisticss {
              description
                "List of interface CAR statistics.";
              list interface-car-statistics {
                key "interface-name direction vlan-id slot-id vid";
                description "Car statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "VLAN ID.";
                }
    
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                leaf vid {
                  type uint16 {
                    range "0..4094";
                  }
                  description "Vid.";
                }
    
                uses car-statistics-type;
              }  // list interface-car-statistics
            }  // container interface-car-statisticss
    
            container interface-car-l2-port-statisticss {
              description
                "List of interface CAR L2Port statistics.";
              list interface-car-l2-port-statistics {
                key "interface-name direction vlan-id slot-id";
                description
                  "CAR L2Port statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "VLAN ID.";
                }
    
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                uses car-statistics-type;
              }  // list interface-car-l2-port-statistics
            }  // container interface-car-l2-port-statisticss
    
            container interface-car-8021p-dscp-statisticss {
              description
                "List of interface CAR 8021p DSCP statistics.";
              list interface-car-8021p-dscp-statistics {
                key "interface-name direction pe-vlan-id priority-value slot-id";
                description
                  "CAR 8021p DSCP statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf pe-vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "PE VLAN ID.";
                }
    
                leaf priority-value {
                  type uint16 {
                    range "0..63";
                  }
                  description "Priority Value.";
                }
    
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                uses car-statistics-type;
              }  // list interface-car-8021p-dscp-statistics
            }  // container interface-car-8021p-dscp-statisticss
    
            container interface-extend-statisticss {
              description
                "List of interface extend statistics.";
              list interface-extend-statistics {
                key "interface-name";
                description "Extend statistics.";
                leaf interface-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf interface-car-inbound-drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of interface car inbound drop packets.";
                }
    
                leaf interface-car-outbound-drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of interface car outbound drop packets.";
                }
    
                leaf port-queue-outbound-drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of port queue outbound drop packets.";
                }
    
                leaf vlan-car-inbound-drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of arp VLAN car inbound drop packets.";
                }
    
                leaf vlan-car-outbound-drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of arp VLAN car outbound drop packets.";
                }
    
                leaf receive-packet-equal-64bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Receive packets equal to 64 bytes.";
                }
    
                leaf receive-packet-between-65to127bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Receive packets 65~127 bytes.";
                }
    
                leaf receive-packet-between-128to255bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Receive packets 128~255 bytes.";
                }
    
                leaf receive-packet-between-256to511bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Receive packets 256~511 bytes.";
                }
    
                leaf receive-packet-between-512to1023bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Receive packets 512~1023 bytes.";
                }
    
                leaf receive-packet-between-1024to1518bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Receive packets 1024~1518 bytes.";
                }
    
                leaf receive-packet-larger-1518bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Receive packets more than 1518 bytes.";
                }
    
                leaf send-packet-equal-64bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Send packets equal to 64 bytes.";
                }
    
                leaf send-packet-between-65to127bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Send packets 65~127 bytes.";
                }
    
                leaf send-packet-between-128to255bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Send packets 128~255 bytes.";
                }
    
                leaf send-packet-between-256to511bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Send packets 256~511 bytes.";
                }
    
                leaf send-packet-between-512to1023bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Send packets 512~1023 bytes.";
                }
    
                leaf send-packet-between-1024to1518bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Send packets 1024~1518 bytes.";
                }
    
                leaf send-packet-larger-1518bytes {
                  type string {
                    length "1..32";
                  }
                  units "packet";
                  description
                    "Send packets more than 1518 bytes.";
                }
              }  // list interface-extend-statistics
            }  // container interface-extend-statisticss
    
            container sub-port-queue-abnormal-allocations {
              description
                "List of the total allocation of sub port queue request resource failures.";
              list sub-port-queue-abnormal-allocation {
                key "slot-id direction";
                description
                  "The total allocation list of sub port queue request resource failure state.";
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                leaf direction {
                  type out-direction-type;
                  description "Direction.";
                }
    
                leaf total-abnormal-number {
                  type uint32;
                  description
                    "Total abnormal number.";
                }
    
                container abnormal-configurations {
                  description
                    "List of sub port queue request resource failure.";
                  list abnormal-configuration {
                    key "interface-name";
                    description
                      "Sub port queue request resource failure state.";
                    leaf interface-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Interface name.";
                    }
    
                    leaf configuration {
                      type string {
                        length "1..128";
                      }
                      description
                        "Configuration information.";
                    }
                  }  // list abnormal-configuration
                }  // container abnormal-configurations
              }  // list sub-port-queue-abnormal-allocation
            }  // container sub-port-queue-abnormal-allocations
    
            container user-group-queue-abnormal-allocations {
              description
                "List of the total allocation of user group queue request resource failures.";
              list user-group-queue-abnormal-allocation {
                key "slot-id direction";
                description
                  "The total allocation list of user group queue request resource failure state.";
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf total-abnormal-number {
                  type uint32;
                  description
                    "Total abnormal number.";
                }
    
                container abnormal-configurations {
                  description
                    "List of user group queue request resource failure.";
                  list abnormal-configuration {
                    key "interface-name";
                    description
                      "User group queue request resource failure state.";
                    leaf interface-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Interface name.";
                    }
    
                    leaf configuration {
                      type string {
                        length "1..128";
                      }
                      description
                        "Configuration information.";
                    }
                  }  // list abnormal-configuration
                }  // container abnormal-configurations
              }  // list user-group-queue-abnormal-allocation
            }  // container user-group-queue-abnormal-allocations
    
            container user-queue-abnormal-allocations {
              description
                "List of the total allocation of user queue request resource failures.";
              list user-queue-abnormal-allocation {
                key "slot-id direction";
                description
                  "The total allocation list of user queue request resource failure state.";
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf total-abnormal-number {
                  type uint32;
                  description
                    "Total abnormal number.";
                }
    
                container abnormal-configurations {
                  description
                    "List of qos profile request resource failure.";
                  list abnormal-configuration {
                    key "interface-name";
                    description
                      "QoS profile request resource failure state.";
                    leaf interface-name {
                      type string {
                        length "1..64";
                      }
                      description
                        "Interface name.";
                    }
    
                    leaf configuration {
                      type string {
                        length "1..128";
                      }
                      description
                        "Configuration information.";
                    }
                  }  // list abnormal-configuration
                }  // container abnormal-configurations
              }  // list user-queue-abnormal-allocation
            }  // container user-queue-abnormal-allocations
    
            container user-queue-resources {
              description
                "List of user queue resource.";
              list user-queue-resource {
                key "slot-id direction tm-type resource-pool";
                description
                  "Display user queue resource state.";
                leaf slot-id {
                  type string {
                    length "1..15";
                  }
                  description "Slot ID.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf tm-type {
                  type string {
                    length "1..32";
                  }
                  description
                    "Resource TM type.";
                }
    
                leaf resource-pool {
                  type string {
                    length "1..32";
                  }
                  description "Resource pool.";
                }
    
                leaf used-id-resource {
                  type string {
                    length "1..16";
                  }
                  description
                    "Used ID resource.";
                }
    
                leaf free-id-resource {
                  type string {
                    length "1..16";
                  }
                  description
                    "Free ID resource.";
                }
    
                leaf used-cir-resource {
                  type string {
                    length "1..16";
                  }
                  description
                    "Used cir resource.";
                }
    
                leaf used-pir-resource {
                  type string {
                    length "1..16";
                  }
                  description
                    "Used pir resource.";
                }
    
                leaf free-cir-resource {
                  type string {
                    length "1..16";
                  }
                  description
                    "Free cir resource.";
                }
    
                leaf free-pir-resource {
                  type string {
                    length "1..16";
                  }
                  description
                    "Free pir resource.";
                }
              }  // list user-queue-resource
            }  // container user-queue-resources
    
            container fabric-queue-unicast-statisticss {
              description
                "List of fabric queue unicast statistics.";
              list fabric-queue-unicast-statistics {
                key "source-slot-id destination-slot-id";
                description
                  "Fabric queue unicast statistics.";
                leaf source-slot-id {
                  type string {
                    length "1..32";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  description "Source slot ID.";
                }
    
                leaf destination-slot-id {
                  type string {
                    length "1..32";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  description
                    "Destination slot ID.";
                }
    
                leaf cos-value-type {
                  type cos-value-type;
                  description
                    "Service class type.";
                }
    
                leaf source-tm-number {
                  type uint32;
                  description
                    "Source TM number.";
                }
    
                leaf destination-tm-number {
                  type uint32;
                  description
                    "Destination TM number.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf discard-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf discard-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
              }  // list fabric-queue-unicast-statistics
            }  // container fabric-queue-unicast-statisticss
    
            container fabric-queue-multicast-statisticss {
              description
                "List of fabric queue multicast statistics.";
              list fabric-queue-multicast-statistics {
                key "source-slot-id";
                description
                  "Fabric queue multicast statistics.";
                leaf source-slot-id {
                  type string {
                    length "1..32";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  description "Source slot ID.";
                }
    
                leaf cos-value-type {
                  type cos-value-type;
                  description
                    "Service class type.";
                }
    
                leaf source-tm-number {
                  type uint32;
                  description
                    "Source TM number.";
                }
    
                leaf destination-tm-number {
                  type uint32;
                  description
                    "Destination TM number.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf discard-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf discard-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
              }  // list fabric-queue-multicast-statistics
            }  // container fabric-queue-multicast-statisticss
    
            container slot-port-queue-statisticss {
              description
                "List of statistics on traffic shaping on interfaces based slot.";
              list slot-port-queue-statistics {
                key "slot-id service-class";
                description
                  "Port queue statistics.";
                leaf slot-id {
                  type string {
                    length "1..15";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  description
                    "Slot ID. The chassis ID must also be specified when have multi chassis, such as 3, clc1/3 or ccc1/3.";
                }
    
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf pass-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of passed packets.";
                }
    
                leaf pass-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of passed bytes.";
                }
    
                leaf pass-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets passed during the latest 30 seconds.";
                }
    
                leaf pass-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes passed during the latest 30 seconds.";
                }
    
                leaf drop-packets {
                  type uint64;
                  units "packet";
                  description
                    "Number of dropped packets.";
                }
    
                leaf drop-tail-packets {
                  type uint64;
                  units "packet";
                  description
                    "Drop tail packets.";
                }
    
                leaf drop-wred-packets {
                  type uint64;
                  units "packet";
                  description
                    "Drop wred packets.";
                }
    
                leaf drop-bytes {
                  type uint64;
                  units "Byte";
                  description
                    "Number of dropped bytes.";
                }
    
                leaf drop-tail-bytes {
                  type uint64;
                  units "Byte";
                  description "Drop tail bytes.";
                }
    
                leaf drop-wred-bytes {
                  type uint64;
                  units "Byte";
                  description "Drop wred bytes.";
                }
    
                leaf drop-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Rate of the packets dropped during the latest 30 seconds.";
                }
    
                leaf drop-tail-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Drop tail packet rate.";
                }
    
                leaf drop-wred-packet-rate {
                  type uint64;
                  units "pps";
                  description
                    "Drop wred packet rate.";
                }
    
                leaf drop-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Rate of the bytes dropped during the latest 30 seconds.";
                }
    
                leaf drop-tail-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Drop tail byte rate.";
                }
    
                leaf drop-wred-byte-rate {
                  type uint64;
                  units "Byte/s";
                  description
                    "Drop wred byte rate.";
                }
              }  // list slot-port-queue-statistics
            }  // container slot-port-queue-statisticss
    
            container slot-channel-profile-statisticss {
              description
                "List of channel parameters of a board.";
              list slot-channel-profile-statistics {
                key "slot-id tm-id channel-id";
                description
                  "Operational state of the channel profile.";
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                leaf tm-id {
                  type uint8 {
                    range "0..1";
                  }
                  description "TM ID.";
                }
    
                leaf channel-id {
                  type uint8 {
                    range "0..15";
                  }
                  description "Channel ID.";
                }
    
                leaf channel-profile-name {
                  type leafref {
                    path "../../../../queue-scheduler-template/channel-profiles/channel-profile/name";
                  }
                  description
                    "Channel profile name.";
                }
    
                leaf slot-configured-bandwidth {
                  type uint32;
                  units "kbit/s";
                  description
                    "Configured bandwidth of board.";
                }
    
                leaf slot-real-bandwidth {
                  type uint32;
                  units "kbit/s";
                  description
                    "Real bandwidth of board.";
                }
    
                leaf slot-quantity {
                  type uint32;
                  description
                    "Quantity of board.";
                }
    
                leaf slot-max-quantity {
                  type uint32;
                  description
                    "Max quantity of board.";
                }
    
                leaf bandwidth-pool-0 {
                  type uint32;
                  units "kbit/s";
                  description
                    "Bandwidth of pool 0.";
                }
    
                leaf bandwidth-pool-1 {
                  type uint32;
                  units "kbit/s";
                  description
                    "Bandwidth of pool 1.";
                }
    
                leaf used-quantity-pool-0 {
                  type uint32;
                  description
                    "Used quantity pool 0.";
                }
    
                leaf free-quantity-pool-0 {
                  type uint32;
                  description
                    "Free quantity pool 0.";
                }
    
                leaf used-quantity-pool-1 {
                  type uint32;
                  description
                    "Used quantity pool 1.";
                }
    
                leaf free-quantity-pool-1 {
                  type uint32;
                  description
                    "Free quantity pool 1.";
                }
    
                leaf used-pir-pool-0 {
                  type uint32;
                  units "kbit/s";
                  description "Used pir pool 0.";
                }
    
                leaf free-pir-pool-0 {
                  type uint32;
                  units "kbit/s";
                  description "Free pir pool 0.";
                }
    
                leaf used-banknote-pool-0 {
                  type uint32;
                  description
                    "Used banknote pool 0.";
                }
    
                leaf free-banknote-pool-0 {
                  type uint32;
                  description
                    "Free banknote pool 0.";
                }
    
                leaf used-pir-pool-1 {
                  type uint32;
                  units "kbit/s";
                  description "Used pir pool 1.";
                }
    
                leaf free-pir-pool-1 {
                  type uint32;
                  units "kbit/s";
                  description "Free pir pool 1.";
                }
    
                leaf used-banknote-pool-1 {
                  type uint32;
                  description
                    "Used banknote pool 1.";
                }
    
                leaf free-banknote-pool-1 {
                  type uint32;
                  description
                    "Free banknote pool 1.";
                }
    
                leaf auto-adjustment {
                  type switch-flag;
                  description
                    "Auto adjustment configuration.";
                }
    
                leaf auto-adjustment-state {
                  type auto-adjustment-state;
                  description
                    "Auto adjustment state.";
                }
              }  // list slot-channel-profile-statistics
            }  // container slot-channel-profile-statisticss
          }  // container global-query
        }  // container qos
    
        rpc reset-interface-traffic-policy-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-traffic-policy-statisticss";
          description
            "To clear traffic policy statistics.";
          input {
            leaf interface-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf pe-vlan-id {
              type uint32 {
                range "0..4094";
              }
              mandatory true;
              description "Pe VLAN id.";
            }
    
            leaf vlan-id {
              type uint32 {
                range "0..4094";
              }
              mandatory true;
              description "VLAN id.";
            }
          }
        }  // rpc reset-interface-traffic-policy-statistics
    
        rpc reset-multi-policy-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-traffic-policy-statisticss/qos:interface-traffic-policy-statistics/qos:multi-policy-statisticss";
          description
            "To clear multiple traffic policy statistics.";
          input {
            leaf interface-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf traffic-policy-name {
              type leafref {
                path "/qos:qos/qos:classifier-template/qos:traffic-policys/qos:traffic-policy/qos:name";
              }
              mandatory true;
              description "Policy name.";
            }
          }
        }  // rpc reset-multi-policy-statistics
    
        rpc reset-mpls-te-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:mpls-te-statisticss";
          description
            "To clear MPLS te statistics.";
          input {
            leaf interface-name {
              type string {
                length "1..64";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
          }
        }  // rpc reset-mpls-te-statistics
    
        rpc reset-global-policy-statistics {
          ext:node-ref "/qos:qos/qos:global-config/qos:global-policys/qos:global-policy/qos:global-policy-statisticss";
          description
            "Clear global policy statistics.";
          input {
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf slot-id {
              type slot-id;
              description "Slot id.";
            }
    
            leaf policy-name {
              type template-name;
              mandatory true;
              description "Policy name.";
            }
          }
        }  // rpc reset-global-policy-statistics
    
        rpc reset-user-group-queue-statistics {
          ext:node-ref "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue/qos:user-group-queue-statisticss";
          description
            "Clear user group statistics.";
          input {
            leaf user-group-queue-name {
              type leafref {
                path "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue/qos:name";
              }
              mandatory true;
              description
                "User group queue name.";
            }
    
            leaf direction {
              type qos-gq-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf slot-id {
              type slot-id;
              description "Slot id.";
            }
          }
        }  // rpc reset-user-group-queue-statistics
    
        rpc reset-interface-profile-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-profile-statistics";
          description
            "To clear profile statistics of interface.";
          input {
            leaf interface-name {
              type string {
                length "1..88";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf pe-vlan-id {
              type uint32 {
                range "0..4094";
              }
              mandatory true;
              description "Pe VLAN id.";
            }
    
            leaf vlan-id {
              type uint32 {
                range "0..4094";
              }
              mandatory true;
              description "VLAN id.";
            }
          }
        }  // rpc reset-interface-profile-statistics
    
        rpc reset-interface-default-flow-queue-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:default-flow-queue-statisticss";
          description
            "To clear default flow queue statistics of interface.";
          input {
            leaf interface-name {
              type string {
                length "1..64";
              }
              mandatory true;
              description "Interface name.";
            }
          }
        }  // rpc reset-interface-default-flow-queue-statistics
    
        rpc reset-interface-hard-pipe-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-hard-pipe-statisticss";
          description
            "To clear hard pipe statistics of interface.";
          input {
            leaf interface-name {
              type string {
                length "1..64";
              }
              mandatory true;
              description "Interface name.";
            }
          }
        }  // rpc reset-interface-hard-pipe-statistics
    
        rpc reset-interface-lv-hard-pipe-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:l2vpn-hard-pipe-statisticss";
          description
            "To clear MPLS l2vpn hard pipe statistics of interface.";
          input {
            leaf interface-name {
              type string {
                length "1..64";
              }
              mandatory true;
              description "Interface name.";
            }
          }
        }  // rpc reset-interface-lv-hard-pipe-statistics
    
        rpc reset-interface-car-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-car-statisticss";
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-car-l2-port-statisticss";
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-car-8021p-dscp-statisticss";
          description
            "To clear car statistics of interface.";
          input {
            leaf interface-name {
              type string {
                length "1..64";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf vlan-id {
              type uint16 {
                range "0..4094";
              }
              description "VLAN id.";
            }
    
            leaf vid {
              type uint16 {
                range "0..4094";
              }
              description "Vid.";
            }
    
            leaf ce-vid {
              type uint16 {
                range "0..4094";
              }
              description "Ce vid.";
            }
          }
        }  // rpc reset-interface-car-statistics
    
        rpc reset-interface-user-group-queue-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-user-group-queue-statistics";
          description
            "Clear user group statistics.";
          input {
            leaf interface-name {
              type string {
                length "1..64";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf pe-vlan-id {
              type uint32 {
                range "1..4094";
              }
              description "Pe VLAN id.";
            }
    
            leaf ce-vlan-id {
              type uint32 {
                range "1..4094";
              }
              description "Ce VLAN id.";
            }
    
            leaf vlan-id {
              type uint32 {
                range "1..4094";
              }
              description "VLAN id.";
            }
          }
        }  // rpc reset-interface-user-group-queue-statistics
    
        rpc reset-interface-user-queue-statistics {
          ext:node-ref "/ifm:ifm/ifm:interfaces/ifm:interface/qos:qos/qos:user-queue-applys/qos:user-queue-apply/qos:user-queue-applys-stats";
          description
            "Clear user queue statistics.";
          input {
            leaf interface-name {
              type string {
                length "1..64";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
          }
        }  // rpc reset-interface-user-queue-statistics
    
        rpc reset-interface-action-user-queue-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-action-user-queue-statisticss";
          description
            "Clear action user queue statistics.";
          input {
            leaf interface-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              mandatory true;
              description "Interface name.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
    
            leaf classifier-name {
              type leafref {
                path "/qos:qos/qos:classifier-template/qos:traffic-classifiers/qos:traffic-classifier/qos:name";
              }
              mandatory true;
              description
                "Name of a traffic classifier.";
            }
    
            leaf pe-vlan-id {
              type uint16 {
                range "1..4094";
              }
              description "Pe VLAN id.";
            }
    
            leaf vlan-id {
              type uint16 {
                range "1..4094";
              }
              description "VLAN id.";
            }
          }
        }  // rpc reset-interface-action-user-queue-statistics
    
        rpc reset-interface-port-queue-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:port-queue-statisticss";
          ext:node-ref "/qos:qos/qos:global-query/qos:port-queue-default-statisticss";
          ext:node-ref "/qos:qos/qos:global-query/qos:port-queue-onboard-statisticss";
          description
            "To clear interface port queue statistics.";
          input {
            leaf interface-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              description "Interface name.";
            }
    
            leaf service-class {
              type qos-service-class;
              description "Class of service.";
            }
    
            leaf on-board {
              type empty;
              description "On board.";
            }
    
            leaf default {
              type empty;
              description "Default.";
            }
          }
        }  // rpc reset-interface-port-queue-statistics
    
        rpc reset-slot-port-queue-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:slot-port-queue-statisticss";
          description
            "To clear slot port queue statistics.";
          input {
            leaf slot-id {
              type slot-id;
              mandatory true;
              description "Slot ID.";
            }
    
            leaf service-class {
              type qos-service-class;
              description "Class of service.";
            }
          }
        }  // rpc reset-slot-port-queue-statistics
    
        rpc reset-user-informations {
          ext:node-ref "/qos:qos/qos:global-query/qos:user-informations";
          description
            "To clear QoS user information.";
          input {
            leaf id {
              type uint32 {
                range "0..4294967294";
              }
              mandatory true;
              description "User ID.";
            }
    
            leaf direction {
              type qos-direction-type;
              mandatory true;
              description "Direction.";
            }
          }
        }  // rpc reset-user-informations
    
        rpc reset-queue-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:queue-statisticss";
          description
            "To clear interface qos queue statistics.";
          input {
            leaf interface-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              description "Interface name.";
            }
    
            leaf service-class {
              type qos-service-class;
              description "Class of service.";
            }
          }
        }  // rpc reset-queue-statistics
    
        rpc reset-interface-sub-port-queue-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:interface-sub-port-queue-statistics";
          description
            "To clear interface sub port queue statistics.";
          input {
            leaf interface-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              mandatory true;
              description "Interface name.";
            }
          }
        }  // rpc reset-interface-sub-port-queue-statistics
    
        rpc reset-fabric-queue-unicast-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:fabric-queue-unicast-statisticss";
          description
            "To clear statistics for unicast fabric queue.";
          input {
            leaf source-slot-id {
              type string {
                length "1..32";
                pattern '(c[cl]c\d+/)?\d+';
              }
              mandatory true;
              description "Source slot ID.";
            }
    
            leaf destination-slot-id {
              type string {
                length "1..32";
                pattern '(c[cl]c\d+/)?\d+';
              }
              description "Destination slot ID.";
            }
          }
        }  // rpc reset-fabric-queue-unicast-statistics
    
        rpc reset-fabric-queue-multicast-statistics {
          ext:node-ref "/qos:qos/qos:global-query/qos:fabric-queue-multicast-statisticss";
          description
            "To clear statistics for multicast fabric queue.";
          input {
            leaf slot-id {
              type slot-id;
              mandatory true;
              description "Slot ID.";
            }
          }
        }  // rpc reset-fabric-queue-multicast-statistics
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface {
          description
            "Adds qos configuration to ifm interface model.";
          container qos {
            description "Configure QoS apply.";
            container trusts {
              description
                "List of configure trust ip-dscp or 8021p.";
              list trust {
                key "type direction vlan-mode begin-vlan end-vlan";
                description
                  "Configure trust ip-dscp or 8021p.";
                leaf type {
                  type trust-type;
                  description
                    "Trust ip-dscp or 8021p.";
                }
    
                leaf direction {
                  type trust-direction-type;
                  description "Direction.";
                }
    
                leaf vlan-mode {
                  type boolean;
                  description
                    "Enable/disable VLAN mode.";
                }
    
                leaf begin-vlan {
                  type uint32 {
                    range "0..4094";
                  }
                  description "Begin VLAN id.";
                }
    
                leaf end-vlan {
                  type uint32 {
                    range "0..4094";
                  }
                  description "End VLAN id.";
                }
    
                leaf diffserv-domain-name {
                  when "../type='ip-dscp'";
                  type leafref {
                    path "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name";
                  }
                  mandatory true;
                  description
                    "Name of a diffserv domain.";
                }
    
                leaf vpn-mode {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable VPN mode.";
                }
              }  // list trust
            }  // container trusts
    
            container traffic-policy-applys {
              description
                "List of configure traffic policy application.";
              list traffic-policy-apply {
                must
                  "../../../ifm:l2-mode-enable='false' and (./identifier='no' or not(./identifier)) or ../../../ifm:l2-mode-enable='true'";
                must
                  "./vlan-mode='false' or (./vlan-mode='true' and not(../../../ifm:l2-mode-enable='true'))";
                key "policy-name direction layer vlan-mode pe-vlan-id";
                description
                  "Configure traffic policy application.";
                leaf policy-name {
                  type leafref {
                    path
                      "/qos:qos/qos:classifier-template/qos:traffic-policys/qos:traffic-policy/qos:name";
                  }
                  must
                    "not(../identifier!='no' and ../identifier!='none' and ../../../../ifm:l2-mode-enable='true' and /qos:qos/qos:classifier-template/qos:traffic-policys/qos:traffic-policy[qos:name=current()]/qos:share-mode='enable')";
                  description "Policy name.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf layer {
                  type policy-apply-layer-type;
                  description
                    "Classification based on layer 2 or layer 3 information.";
                }
    
                leaf vlan-mode {
                  type boolean;
                  description
                    "Enable/disable VLAN mode.";
                }
    
                leaf pe-vlan-id {
                  type uint32 {
                    range "0..4094";
                  }
                  must
                    "(../vlan-mode='false' and ../pe-vlan-id=0) or ../vlan-mode='true'";
                  description "Pe VLAN id.";
                }
    
                leaf vlan-id {
                  when "../vlan-mode='true'";
                  type pub-type:vlan-range {
                    pattern
                      '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])+(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?(,((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?))*)';
                  }
                  mandatory true;
                  description "VLAN id.";
                }
    
                leaf identifier {
                  type identifier-type;
                  default "no";
                  description
                    "Identifier. The range supported by this node varies according to the interface type. This node does not support modification or deletion.";
                }
              }  // list traffic-policy-apply
            }  // container traffic-policy-applys
    
            container traffic-policy-multi-applys {
              must
                "count(traffic-policy-multi-apply[direction='inbound'])<=16";
              must
                "count(traffic-policy-multi-apply[direction='outbound'])<=16";
              description
                "List of configure traffic multi policy application.";
              list traffic-policy-multi-apply {
                must
                  "not(../../traffic-policy-applys/traffic-policy-apply[direction=current()/direction])";
                key "policy-name direction";
                unique "direction match-precedence";
                max-elements 32;
                description
                  "Configure traffic policy multi application.";
                leaf policy-name {
                  type leafref {
                    path
                      "/qos:qos/qos:classifier-template/qos:traffic-policys/qos:traffic-policy/qos:name";
                  }
                  description "Policy name.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf match-precedence {
                  type uint16 {
                    range "1..1024";
                  }
                  mandatory true;
                  description
                    "Specify the precedence of traffic policy.";
                }
              }  // list traffic-policy-multi-apply
            }  // container traffic-policy-multi-applys
    
            container profile-applys {
              description
                "List of configure QoS profile application.";
              list profile-apply {
                must
                  "./ce-begin-vlan-id <= ./ce-end-vlan-id";
                must
                  "(./type='interface' and ./pe-vlan-id=0 and ./ce-begin-vlan-id=0 and ./ce-end-vlan-id=0) or (./type='vlan' and ./pe-vlan-id=0 and ./ce-begin-vlan-id!=0) or (./type='pe' and ./pe-vlan-id!=0 and ./ce-begin-vlan-id!=0)";
                key "profile-name direction type pe-vlan-id ce-begin-vlan-id ce-end-vlan-id identify-type";
                description
                  "Configure QoS profile application.";
                leaf profile-name {
                  type leafref {
                    path
                      "/qos:qos/qos:queue-scheduler-template/qos:profiles/qos:profile/qos:name";
                  }
                  description
                    "Qos profile name.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf type {
                  type profile-apply-type;
                  description
                    "Profile apply type.";
                }
    
                leaf pe-vlan-id {
                  type uint32 {
                    range "0..4094";
                  }
                  description "Pe VLAN id.";
                }
    
                leaf ce-begin-vlan-id {
                  type uint32 {
                    range "0..4094";
                  }
                  description
                    "Ce begin VLAN id.";
                }
    
                leaf ce-end-vlan-id {
                  type uint32 {
                    range "0..4094";
                  }
                  description "Ce end VLAN id.";
                }
    
                leaf identify-type {
                  type identify-type;
                  description
                    "Identify type. The range supported by this node varies according to the interface type.";
                }
    
                leaf linkage-bandwidth {
                  ext:operation-exclude "update" {
                    description "The 'linkage-bandwidth' cannot be updated.";
                  }
                  type linkage-bandwidth-type;
                  default "disable";
                  description
                    "Linkage bandwidth.";
                }
    
                leaf group-name {
                  ext:operation-exclude "create|update|delete" {
                    description "After the configuration is created, the node cannot be modified and delete. When the list instance has created without group-name, and the group-name can not be created.";
                  }
                  when
                    "../linkage-bandwidth='disable'";
                  type template-name;
                  description
                    "The name of user queue group.";
                }
              }  // list profile-apply
            }  // container profile-applys
    
            container user-queue-applys {
              description
                "List of configure user queue application.";
              list user-queue-apply {
                key "direction";
                description
                  "Configure user queue application.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf cir {
                  type uint32 {
                    range "0 | 16..4294967294";
                  }
                  units "kbit/s";
                  mandatory true;
                  description
                    "Committed information rate.";
                }
    
                leaf pir {
                  type uint32 {
                    range "0 | 16..4294967294";
                  }
                  units "kbit/s";
                  must "../pir>=../cir";
                  mandatory true;
                  description
                    "Peak information rate.";
                }
    
                leaf flow-queue-name {
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:flow-queues/qos:flow-queue/qos:name";
                  }
                  must
                    "/qos:qos/qos:queue-scheduler-template/qos:flow-queues/qos:flow-queue[qos:name=current()]/qos:mode='normal'";
                  description "Flow queue.";
                }
    
                leaf flow-mapping-name {
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:flow-mappings/qos:flow-mapping/qos:name";
                  }
                  description "Flow Mapping.";
                }
    
                leaf user-group-queue-name {
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue/qos:name";
                  }
                  must
                    "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue[qos:name=current()]/qos:mode='normal'";
                  description "Group Queue.";
                }
    
                leaf service-template-name {
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:service-templates/qos:service-template/qos:name";
                  }
                  description
                    "Service Template.";
                }
    
                leaf adjust-on-card {
                  type adjust-on-card-type;
                  must
                    "(../service-template-name and ../adjust-on-card='enable') or ../adjust-on-card='disable'";
                  default "disable";
                  description
                    "Adjust on card flag.";
                }
    
                container user-queue-applys-stats {
                  config false;
                  description
                    "List of statistics of interface user queue.";
                  list user-queue-applys-stat {
                    key "service-class";
                    description
                      "Statistics of interface user queue.";
                    leaf service-class {
                      type hqos-service-class;
                      description
                        "Class of service.";
                    }
    
                    leaf pass-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of passed packets.";
                    }
    
                    leaf pass-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of passed bytes.";
                    }
    
                    leaf pass-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the packets passed during the latest 30 seconds.";
                    }
    
                    leaf pass-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the bytes passed during the latest 30 seconds.";
                    }
    
                    leaf drop-packets {
                      type uint64;
                      units "packet";
                      description
                        "Number of dropped packets.";
                    }
    
                    leaf drop-bytes {
                      type uint64;
                      units "Byte";
                      description
                        "Number of dropped bytes.";
                    }
    
                    leaf drop-packet-rate {
                      type uint64;
                      units "pps";
                      description
                        "Rate of the packets dropped during the latest 30 seconds.";
                    }
    
                    leaf drop-byte-rate {
                      type uint64;
                      units "Byte/s";
                      description
                        "Rate of the bytes dropped during the latest 30 seconds.";
                    }
                  }  // list user-queue-applys-stat
                }  // container user-queue-applys-stats
              }  // list user-queue-apply
            }  // container user-queue-applys
    
            container port-queues {
              description
                "List of configure port queue.";
              list port-queue {
                ext:generated-by "system" {
                  when "../../../ifm:class='main-interface' and (../../../ifm:type='Ethernet' or ../../../ifm:type='GigabitEthernet' or ../../../ifm:type='Eth-Trunk' or
    ../../../ifm:type='Ip-Trunk' or ../../../ifm:type='Pos' or ../../../ifm:type='100GE' or ../../../ifm:type='200GE' or ../../../ifm:type='40GE' or ../../../ifm:type='10GE' or
    ../../../ifm:type='4x10GE' or ../../../ifm:type='10x10GE' or ../../../ifm:type='3x40GE' or ../../../ifm:type='4x25GE' or ../../../ifm:type='25GE' or
    ../../../ifm:type='XGigabitEthernet' or ../../../ifm:type='FlexE' or ../../../ifm:type='FlexE-200GE' or ../../../ifm:type='50|100GE' or ../../../ifm:type='50GE' or
    ../../../ifm:type='FlexE-50G' or ../../../ifm:type='FlexE-100G' or ../../../ifm:type='FlexE-50|100G' or ../../../ifm:type='400GE' or ../../../ifm:type='FlexE-400G' or ../../../ifm:type='FlexE-10G')";
                  description "The instances are created and deleted following the interface.";
                }
                ext:operation-exclude "create" {
                  when "../../../ifm:class='main-interface' and (../../../ifm:type='Ethernet' or ../../../ifm:type='GigabitEthernet' or ../../../ifm:type='Eth-Trunk' or
    ../../../ifm:type='Ip-Trunk' or ../../../ifm:type='Pos' or ../../../ifm:type='100GE' or ../../../ifm:type='200GE' or ../../../ifm:type='40GE' or ../../../ifm:type='10GE' or
    ../../../ifm:type='4x10GE' or ../../../ifm:type='10x10GE' or ../../../ifm:type='3x40GE' or ../../../ifm:type='4x25GE' or ../../../ifm:type='25GE' or
    ../../../ifm:type='XGigabitEthernet' or ../../../ifm:type='FlexE' or ../../../ifm:type='FlexE-200GE' or ../../../ifm:type='50|100GE' or ../../../ifm:type='50GE' or
    ../../../ifm:type='FlexE-50G' or ../../../ifm:type='FlexE-100G' or ../../../ifm:type='FlexE-50|100G' or ../../../ifm:type='400GE' or ../../../ifm:type='FlexE-400G' or ../../../ifm:type='FlexE-10G')";
                  description "The instances cannot be created.";
                }
                key "service-class";
                max-elements 8;
                description
                  "Configure port queue.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf port-wred-name {
                  type leafref {
                    path "/qos:qos/qos:wred-template/qos:port-wreds/qos:port-wred/qos:name";
                  }
                  description "Port wred name.";
                }
    
                choice config-type {
                  mandatory true;
                  description
                    "Specify config type.";
                  case shaping-mode {
                    description
                      "Specify config type choice case as shaping mode.";
                    leaf queue-schedule-mode {
                      type queue-schedule-mode;
                      mandatory true;
                      description
                        "Schedule Mode.";
                    }
    
                    leaf weight {
                      when
                        "../queue-schedule-mode='wfq'";
                      type uint8 {
                        range "1..100";
                      }
                      mandatory true;
                      description
                        "Weight of wfq scheduling strategy.";
                    }
    
                    leaf pbs {
                      when
                        "../shaping-value or ../shaping-percentage";
                      type uint32 {
                        range "1..65535";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
    
                    leaf low-latency {
                      when
                        "../queue-schedule-mode='pq'";
                      type queue-low-latency;
                      description
                        "Low latency. Some boards do not support this object.";
                    }
    
                    choice shaping-parameters {
                      description
                        "Specify shaping parameters.";
                      case shaping {
                        description
                          "Specify shaping parameters choice case as shaping value.";
                        leaf shaping-value {
                          type uint32 {
                            range
                              "0..4294967294";
                          }
                          units "Mbit/s";
                          description
                            "Shaping value.";
                        }
                      }  // case shaping
    
                      case shaping-percent {
                        description
                          "Specify shaping parameters choice case as shaping percentage value.";
                        leaf shaping-percentage {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          description
                            "Shaping percentage.";
                        }
                      }  // case shaping-percent
                    }  // choice shaping-parameters
                  }  // case shaping-mode
    
                  case cir-mode {
                    description
                      "Specify config type choice case as cir mode. Some boards do not support this object.";
                    leaf cir-schedule-mode {
                      type queue-cir-schedule-mode;
                      mandatory true;
                      description
                        "Scheduling strategy of cir.";
                    }
    
                    leaf pir-schedule-mode {
                      type queue-schedule-mode;
                      mandatory true;
                      description
                        "Scheduling strategy of pir.";
                    }
    
                    leaf pir-weight {
                      when
                        "../pir-schedule-mode='wfq'";
                      type uint8 {
                        range "1..100";
                      }
                      mandatory true;
                      description
                        "Weight of wfq scheduling strategy.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "1..65535";
                      }
                      units "Byte";
                      must
                        "../pir-pbs>=../cbs or not(../pir-pbs)";
                      description
                        "Committed burst size.";
                    }
    
                    leaf pir-pbs {
                      type uint32 {
                        range "1..65535";
                      }
                      units "Byte";
                      must
                        "../pir-pbs>=../cbs or not(../cbs)";
                      description
                        "Peak burst size.";
                    }
    
                    choice cir-parameters {
                      mandatory true;
                      description
                        "Specify cir parameters.";
                      case cir {
                        description
                          "Specify cir parameters choice case as cir value.";
                        leaf cir-value {
                          type uint32 {
                            range
                              "0..4294967294";
                          }
                          units "Mbit/s";
                          must
                            "../pir-value>=../cir-value";
                          mandatory true;
                          description
                            "Specify cir value.";
                        }
    
                        leaf pir-value {
                          type uint32 {
                            range
                              "0..4294967294";
                          }
                          units "Mbit/s";
                          must
                            "../pir-value>=../cir-value";
                          mandatory true;
                          description
                            "Peak information rate.";
                        }
                      }  // case cir
    
                      case cir-percent {
                        description
                          "Specify cir parameters choice case as cir percentage value.";
                        leaf cir-percentage {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          must
                            "../pir-percentage>=../cir-percentage";
                          mandatory true;
                          description
                            "Cir percentage.";
                        }
    
                        leaf pir-percentage {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          must
                            "../pir-percentage>=../cir-percentage";
                          mandatory true;
                          description
                            "Pir percentage.";
                        }
                      }  // case cir-percent
                    }  // choice cir-parameters
                  }  // case cir-mode
                }  // choice config-type
              }  // list port-queue
            }  // container port-queues
    
            container port-queue-states {
              config false;
              description
                "List of statistics of port queue.";
              list port-queue-state {
                key "service-class";
                description
                  "Statistics of port queue.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf port-wred-name {
                  type leafref {
                    path "/qos:qos/qos:wred-template/qos:port-wreds/qos:port-wred/qos:name";
                  }
                  description "Port wred name.";
                }
    
                choice config-type {
                  description
                    "Specify config type.";
                  case shaping-mode {
                    description
                      "Specify config type choice case as shaping mode.";
                    leaf queue-schedule-mode {
                      type queue-schedule-mode;
                      description
                        "Schedule Mode.";
                    }
    
                    leaf weight {
                      when
                        "../queue-schedule-mode='wfq'";
                      type uint8 {
                        range "1..100";
                      }
                      description
                        "Weight of wfq scheduling strategy.";
                    }
    
                    leaf pbs {
                      when
                        "../shaping-value or ../shaping-percentage";
                      type uint32 {
                        range "1..65535";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
    
                    leaf low-latency {
                      when
                        "../queue-schedule-mode='pq'";
                      type queue-low-latency;
                      description
                        "Low latency. Some boards do not support this object.";
                    }
    
                    choice shaping-parameters {
                      description
                        "Specify shaping parameters.";
                      case shaping {
                        description
                          "Specify shaping parameters choice case as shaping value.";
                        leaf shaping-value {
                          type uint32 {
                            range
                              "0..4294967294";
                          }
                          units "Mbit/s";
                          description
                            "Shaping value.";
                        }
                      }  // case shaping
    
                      case shaping-percent {
                        description
                          "Specify shaping parameters choice case as shaping percentage value.";
                        leaf shaping-percentage {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          description
                            "Shaping percentage.";
                        }
                      }  // case shaping-percent
                    }  // choice shaping-parameters
                  }  // case shaping-mode
    
                  case cir-mode {
                    description
                      "Specify config type choice case as cir mode. Some boards do not support this object.";
                    leaf cir-schedule-mode {
                      type queue-cir-schedule-mode;
                      description
                        "Scheduling strategy of cir.";
                    }
    
                    leaf pir-schedule-mode {
                      type queue-schedule-mode;
                      description
                        "Scheduling strategy of pir.";
                    }
    
                    leaf pir-weight {
                      when
                        "../pir-schedule-mode='wfq'";
                      type uint8 {
                        range "1..100";
                      }
                      description
                        "Weight of wfq scheduling strategy.";
                    }
    
                    leaf cbs {
                      type uint32 {
                        range "1..65535";
                      }
                      units "Byte";
                      description
                        "Committed burst size.";
                    }
    
                    leaf pir-pbs {
                      type uint32 {
                        range "1..65535";
                      }
                      units "Byte";
                      description
                        "Peak burst size.";
                    }
    
                    choice cir-parameters {
                      description
                        "Specify cir parameters.";
                      case cir {
                        description
                          "Specify cir parameters choice case as cir value.";
                        leaf cir-value {
                          type uint32 {
                            range
                              "0..4294967294";
                          }
                          units "Mbit/s";
                          description
                            "Specify cir value.";
                        }
    
                        leaf pir-value {
                          type uint32 {
                            range
                              "0..4294967294";
                          }
                          units "Mbit/s";
                          description
                            "Peak information rate.";
                        }
                      }  // case cir
    
                      case cir-percent {
                        description
                          "Specify cir parameters choice case as cir percentage value.";
                        leaf cir-percentage {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          description
                            "Cir percentage.";
                        }
    
                        leaf pir-percentage {
                          type uint8 {
                            range "0..100";
                          }
                          units "%";
                          description
                            "Pir percentage.";
                        }
                      }  // case cir-percent
                    }  // choice cir-parameters
                  }  // case cir-mode
                }  // choice config-type
              }  // list port-queue-state
            }  // container port-queue-states
    
            container port-queue-template-applys {
              description
                "List of configure port queue template applications.";
              list port-queue-template-apply {
                key "port-queue-template-name";
                max-elements 1;
                description
                  "Configure port queue template applications.";
                leaf port-queue-template-name {
                  type leafref {
                    path
                      "/qos:qos/qos:queue-scheduler-template/qos:port-queue-templates/qos:port-queue-template/qos:name";
                  }
                  description
                    "Port queue template name.";
                }
              }  // list port-queue-template-apply
            }  // container port-queue-template-applys
    
            container port-queue-alarms {
              description
                "List of configure port queue alarm. This node has two default configurations, corresponding to service classes of CS6 and CS7, respectively. The default configurations cannot be created or deleted. The current configuration cannot be changed to the default configuration. If no user configuration exists, you can check the default configurations through the port-queue-alarm-states node.";
              list port-queue-alarm {
                key "service-class";
                max-elements 8;
                description
                  "Configure port queue alarm.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf buffer-percentage {
                  type uint32 {
                    range "0..100";
                  }
                  mandatory true;
                  description
                    "Buffer percentage.";
                }
              }  // list port-queue-alarm
            }  // container port-queue-alarms
    
            container port-queue-alarm-states {
              config false;
              description
                "List of operational state of port queue alarm.";
              list port-queue-alarm-state {
                key "service-class";
                max-elements 8;
                description
                  "Operational state of port queue alarm. This node has two default configurations, corresponding to service classes of CS6 and CS7, respectively.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf buffer-percentage {
                  type uint32 {
                    range "0..100";
                  }
                  description
                    "Buffer percentage.";
                }
              }  // list port-queue-alarm-state
            }  // container port-queue-alarm-states
    
            container port-queue-discard-alarms {
              description
                "List of configure port queue discard alarm.";
              list port-queue-discard-alarm {
                key "service-class";
                max-elements 8;
                description
                  "Configure port queue discard alarm.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf type {
                  type discard-type;
                  mandatory true;
                  description "Discard type.";
                }
    
                leaf discard-number {
                  when
                    "../type='discard-packet' or ../type='discard-byte'";
                  type uint32 {
                    range "1..4294967295";
                  }
                  mandatory true;
                  description
                    "Discard number. The units is 'packet' when the type is discard-packet. Then units is 'Byte' when the type is discard-byte.";
                }
    
                leaf discard-packet-coefficient {
                  when
                    "../type='discard-packet-ratio'";
                  type uint8 {
                    range "1..9";
                  }
                  mandatory true;
                  description
                    "Ratio coefficient of the discard packets.";
                }
    
                leaf discard-packet-exponent {
                  when
                    "../type='discard-packet-ratio'";
                  type uint8 {
                    range "1..5";
                  }
                  mandatory true;
                  description
                    "Ratio exponent of the discard packets.";
                }
    
                leaf interval-time {
                  type uint16 {
                    range "15..3600";
                  }
                  units "s";
                  default "30";
                  description
                    "Monitoring time of the port queue discard alarm.";
                }
              }  // list port-queue-discard-alarm
            }  // container port-queue-discard-alarms
    
            container set-queue-stats {
              description
                "List of configure queue statisticss interval.";
              list set-queue-stat {
                key "interval";
                max-elements 1;
                description
                  "Configure queue statisticss interval.";
                leaf interval {
                  type interval-value;
                  description
                    "Specify the value of interval (Unit: s).";
                }
              }  // list set-queue-stat
            }  // container set-queue-stats
    
            container link-adjustment {
              description
                "Configure link adjustment. Some interfaces do not support this object.";
              leaf adjust-value {
                type int32 {
                  range "-64..-1 | 1..64";
                }
                description "Adjust value.";
              }
    
              leaf shaping-mode {
                type link-adjustment-type;
                description
                  "Shaping mode. If users access the network through PPPoA, the remote link type must be set to cell; if users access the network through PPPoE, the remote link type does not need to be set to cell.";
              }
            }  // container link-adjustment
    
            container qos-queues {
              description
                "List of configure QoS Queue.";
              list qos-queue {
                ext:generated-by "system" {
                  description "The instances are created and deleted following the interface.";
                }
                ext:operation-exclude "create" {
                  description "The instances cannot be created.";
                }
                key "service-class";
                max-elements 8;
                description
                  "Configure QoS Queue.";
                leaf service-class {
                  type qos-service-class;
                  description
                    "Class of service.";
                }
    
                choice cir-parameters {
                  mandatory true;
                  description
                    "Specify cir-parameters.";
                  case cir {
                    description
                      "Specify cir parameters choice case as cir value.";
                    leaf cir {
                      type uint32 {
                        range "0..4294967294";
                      }
                      units "Mbit/s";
                      description
                        "Committed information rate.";
                    }
                  }  // case cir
    
                  case cir-percent {
                    description
                      "Specify cir parameters choice case as cir percentage value.";
                    leaf cir-percent {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      description
                        "CIR percentage.";
                    }
                  }  // case cir-percent
                }  // choice cir-parameters
    
                choice pir-parameters {
                  mandatory true;
                  description
                    "Specify pir-parameters.";
                  case pir {
                    description
                      "Specify pir parameters choice case as pir value.";
                    leaf pir {
                      type uint32 {
                        range "1..4294967294";
                      }
                      units "Mbit/s";
                      must "../pir>=../cir";
                      description
                        "Peak information rate.";
                    }
                  }  // case pir
    
                  case pir-percent {
                    description
                      "Specify pir parameters choice case as pir percent value.";
                    leaf pir-percent {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      must
                        "../pir-percent>=../cir-percent";
                      description
                        "PIR percentage.";
                    }
                  }  // case pir-percent
                }  // choice pir-parameters
    
                leaf priority {
                  type queue-schedule-mode;
                  mandatory true;
                  description "Priority.";
                }
              }  // list qos-queue
            }  // container qos-queues
    
            container queue-template-applys {
              description
                "List of configure queue template applications.";
              list queue-template-apply {
                key "queue-template-name";
                max-elements 1;
                description
                  "Configure queue template applications.";
                leaf queue-template-name {
                  type leafref {
                    path
                      "/qos:qos/qos:queue-scheduler-template/qos:qos-queue-templates/qos:qos-queue-template/qos:name";
                  }
                  description
                    "Queue template name.";
                }
              }  // list queue-template-apply
            }  // container queue-template-applys
    
            container soft-pipe-alarms {
              description
                "Configure softpipe bandwidth usage alarm. The soft-pipe alarm will not come into effect without hard-pipe configuration on the interface. Some interface do not support this object.";
              container soft-pipe-alarm {
                must
                  "./bandwidth-usage-threshold>=./resume-threshold";
                presence
                  "create soft-pipe-alarm";
                description
                  "Enable/disable softpipe bandwidth usage alarm.";
                leaf bandwidth-usage-threshold {
                  type uint8 {
                    range "1..100";
                  }
                  mandatory true;
                  description
                    "The alarm threshold of soft-pipe bandwidth usage.";
                }
    
                leaf resume-threshold {
                  type uint8 {
                    range "1..100";
                  }
                  mandatory true;
                  description
                    "The resume threshold of soft-pipe bandwidth usage.";
                }
              }  // container soft-pipe-alarm
            }  // container soft-pipe-alarms
    
            container flow-queue-template-applys {
              description
                "List of configure flow queue template applications. This node can only be configured on the channelized sub-interface.";
              list flow-queue-template-apply {
                key "flow-queue-template-name";
                max-elements 1;
                description
                  "Configure flow queue template applications.";
                leaf flow-queue-template-name {
                  type leafref {
                    path
                      "/qos:qos/qos:queue-scheduler-template/qos:flow-queues/qos:flow-queue/qos:name";
                  }
                  must
                    "/qos:qos/qos:queue-scheduler-template/qos:flow-queues/qos:flow-queue[qos:name=current()]/qos:mode='normal' or /qos:qos/qos:queue-scheduler-template/qos:flow-queues/qos:flow-queue[qos:name=current()]/qos:mode='8cos-enhance'";
                  description
                    "Flow queue template name.";
                }
              }  // list flow-queue-template-apply
            }  // container flow-queue-template-applys
    
            container mode-channel-bandwidth-maximize {
              when "../../ifm:type='Eth-Trunk'";
              description
                "Configure mode channel bandwidth maximize.";
              leaf enable-maximize {
                type enable-type;
                description
                  "Bandwidth maximize.";
              }
            }  // container mode-channel-bandwidth-maximize
    
            container service-template-applys {
              description
                "List of configure service template applications.";
              list service-template-apply {
                key "service-template-name";
                max-elements 1;
                description
                  "Configure service template applications.";
                leaf service-template-name {
                  type leafref {
                    path
                      "/qos:qos/qos:queue-scheduler-template/qos:service-templates/qos:service-template/qos:name";
                  }
                  description
                    "Service template name.";
                }
              }  // list service-template-apply
            }  // container service-template-applys
    
            container default-service-classs {
              description
                "List of configure default service class.";
              list default-service-class {
                key "service-class";
                max-elements 1;
                description
                  "Configure default service class.";
                leaf service-class {
                  type qos-service-class;
                  description "Service class.";
                }
              }  // list default-service-class
            }  // container default-service-classs
    
            container default-user-group-queues {
              description
                "List of configure default user group queue.";
              list default-user-group-queue {
                key "direction";
                description
                  "Configure default user group queue.";
                leaf direction {
                  type out-direction-type;
                  description "Direction.";
                }
    
                leaf shaping {
                  type uint32 {
                    range "66..4294967294";
                  }
                  units "kbit/s";
                  mandatory true;
                  description "Rate of shaping.";
                }
    
                leaf pbs {
                  type uint32 {
                    range "64..2097152";
                  }
                  units "Byte";
                  description "Peak burst size.";
                }
              }  // list default-user-group-queue
            }  // container default-user-group-queues
    
            container default-sub-port-queues {
              description
                "List of configure default sub port queue.";
              list default-sub-port-queue {
                key "direction";
                description
                  "Configure default sub port queue.";
                leaf direction {
                  type out-direction-type;
                  description "Direction.";
                }
    
                leaf shaping {
                  type uint32 {
                    range "66..4294967294";
                  }
                  units "kbit/s";
                  mandatory true;
                  description "Rate of shaping.";
                }
    
                leaf pbs {
                  type uint32 {
                    range "64..2097152";
                  }
                  units "Byte";
                  description "Peak burst size.";
                }
              }  // list default-sub-port-queue
            }  // container default-sub-port-queues
    
            container port-shapings {
              description
                "Configure port shaping.";
              container port-shaping {
                presence "Create port-shaping.";
                description
                  "Enable/disable port shaping.";
                leaf pbs {
                  type uint32 {
                    range "1..2147483646";
                  }
                  units "Byte";
                  description "Peak burst size.";
                }
    
                leaf network-header-length {
                  type int32 {
                    range "-63..63";
                  }
                  description
                    "Length value of network header.";
                }
    
                leaf weight-mode {
                  when
                    "../../../../ifm:type='Eth-Trunk'";
                  type port-shaping-weight-mode-type;
                  description
                    "Scale scheduler parameters on aggregate interface weight.";
                }
    
                choice shaping-parameters {
                  mandatory true;
                  description
                    "Specify shaping parameters.";
                  case shaping-type {
                    description
                      "Specify shaping parameters choice case as shaping type.";
                    leaf shaping-type {
                      type shaping-value-type;
                      description
                        "Shaping value type.";
                    }
                  }  // case shaping-type
    
                  case shaping-value {
                    description
                      "Specify shaping parameters choice case as shaping value.";
                    leaf shaping-value {
                      type uint32 {
                        range "1..4294967294";
                      }
                      units "Mbit/s";
                      description
                        "Shaping value.";
                    }
                  }  // case shaping-value
    
                  case shaping-percent {
                    description
                      "Specify shaping parameters choice case as shaping percentage value.";
                    leaf shaping-percentage {
                      type uint8 {
                        range "1..100";
                      }
                      units "%";
                      description
                        "Shaping percentage.";
                    }
                  }  // case shaping-percent
                }  // choice shaping-parameters
              }  // container port-shaping
            }  // container port-shapings
    
            container per-hop-behavior-disables {
              description
                "List of configure disable outbound priority mappings. If VLAN mode is set to false, map-type cannot be set to none and inner-8021p, outer-8021p, dscp, or MPLS-EXP for the same interface at the same time. If VLAN mode is set to true, map-type cannot be set to none and inner-8021p, outer-8021p, dscp, or MPLS-EXP for the same interface and VLAN at the same time.";
              list per-hop-behavior-disable {
                must
                  "./vlan-mode='false' or (./vlan-mode='true' and ../../../ethernet:ethernet/ethernet:main-interface/ethernet:l2-attribute)";
                key "map-type vlan-mode";
                description
                  "Configure disable outbound priority mappings.";
                leaf map-type {
                  type map-type;
                  description "Select map type.";
                }
    
                leaf vlan-mode {
                  type boolean;
                  description
                    "Enable/disable VLAN mode.";
                }
    
                leaf vlan-id {
                  when "../vlan-mode='true'";
                  type pub-type:vlan-range {
                    pattern
                      '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])+(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?(,((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?))*)';
                  }
                  mandatory true;
                  description "VLAN id.";
                }
              }  // list per-hop-behavior-disable
            }  // container per-hop-behavior-disables
    
            container per-hop-behavior-enables {
              description
                "Configure outbound priority mappings.";
              container per-hop-behavior-enable {
                presence
                  "create per-hop-behavior-enable";
                description
                  "Enable/disable outbound priority mappings.";
                leaf diffserv-domain-name {
                  type leafref {
                    path "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name";
                  }
                  mandatory true;
                  description
                    "Name of a diffserv domain.";
                }
              }  // container per-hop-behavior-enable
            }  // container per-hop-behavior-enables
    
            container per-hop-behavior-enable-vlans {
              description
                "List of configure outbound priority mappings with VLAN. The diffserv-domain-name cannot be set to different values for the same interface and VLAN at the same time.";
              list per-hop-behavior-enable-vlan {
                key "diffserv-domain-name";
                description
                  "Configure outbound priority mappings with VLAN.";
                leaf diffserv-domain-name {
                  type leafref {
                    path
                      "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name";
                  }
                  description
                    "Name of a diffserv domain.";
                }
    
                leaf vlan-id {
                  type pub-type:vlan-range {
                    pattern
                      '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])+(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?(,((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?))*)';
                  }
                  mandatory true;
                  description "VLAN id.";
                }
              }  // list per-hop-behavior-enable-vlan
            }  // container per-hop-behavior-enable-vlans
    
            container per-hop-behavior {
              description
                "Configure outbound priority mappings.";
              leaf enable {
                type switch-type;
                description
                  "Enable outbound priority mappings.";
              }
            }  // container per-hop-behavior
    
            container cars {
              description
                "List of configure interface applying car.";
              list car {
                must
                  "(./cir-value and ./cbs) or not(./cir-value)";
                key "direction vlan-mode begin-vlan end-vlan";
                description
                  "Configure interface applying car.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf vlan-mode {
                  type boolean;
                  description
                    "Enable/disable VLAN mode.";
                }
    
                leaf begin-vlan {
                  type uint16 {
                    range "0..4094";
                  }
                  description "Begin VLAN id.";
                }
    
                leaf end-vlan {
                  type uint16 {
                    range "0..4094";
                  }
                  description "End VLAN id.";
                }
    
                choice cir-parameters {
                  mandatory true;
                  description
                    "Specify cir parameters.";
                  case cir {
                    description
                      "Specify cir parameters choice case as cir value.";
                    leaf cir-value {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      must
                        "not(../pir-value) or ../pir-value>=../cir-value";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf pir-value {
                      type uint32 {
                        range "1..4294967295";
                      }
                      units "kbit/s";
                      must
                        "../pir-value>=../cir-value";
                      description
                        "Peak information rate.";
                    }
                  }  // case cir
    
                  case cir-percentage {
                    description
                      "Specify cir parameters choice case as cir percentage value.";
                    leaf cir-percent {
                      when
                        "../vlan-mode='false'";
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      must
                        "not(../pir-percent) or ../pir-percent>=../cir-percent";
                      mandatory true;
                      description
                        "Committed information rate percent.";
                    }
    
                    leaf pir-percent {
                      when
                        "../vlan-mode='false'";
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      must
                        "../pir-percent>=../cir-percent";
                      description
                        "Peak information rate percent.";
                    }
                  }  // case cir-percentage
                }  // choice cir-parameters
    
                leaf cbs {
                  type uint32 {
                    range "0..4294967295";
                  }
                  units "Byte";
                  description
                    "Committed burst size.";
                }
    
                leaf pbs {
                  when "../cbs";
                  type uint32 {
                    range "0..4294967295";
                  }
                  units "Byte";
                  description "Peak burst size.";
                }
    
                leaf adjust-value {
                  type int32 {
                    range "-32..-1 | 1..31";
                  }
                  description "Adjust value.";
                }
    
                leaf green-action {
                  type color-action-type;
                  mandatory true;
                  description
                    "Action performed to the green packets.";
                }
    
                leaf green-service-class {
                  when "../green-action='pass'";
                  type qos-service-class;
                  description
                    "Service class marked to the green packets.";
                }
    
                leaf green-color {
                  when "../green-service-class";
                  type qos-color;
                  mandatory true;
                  description
                    "Color marked to the green packets.";
                }
    
                leaf yellow-action {
                  ext:dynamic-default;
                  type color-action-type;
                  description
                    "Action performed to the yellow packets.";
                }
    
                leaf yellow-service-class {
                  when "../yellow-action='pass'";
                  type qos-service-class;
                  description
                    "Service class marked to the yellow packets.";
                }
    
                leaf yellow-color {
                  when "../yellow-service-class";
                  type qos-color;
                  mandatory true;
                  description
                    "Color marked to the yellow packets.";
                }
    
                leaf red-action {
                  type color-action-type;
                  mandatory true;
                  description
                    "Action performed to the red packets.";
                }
    
                leaf red-service-class {
                  when "../red-action='pass'";
                  type qos-service-class;
                  description
                    "Service class marked to the red packets.";
                }
    
                leaf red-color {
                  when "../red-service-class";
                  type qos-color;
                  mandatory true;
                  description
                    "Color marked to the red packets.";
                }
    
                leaf color-aware {
                  type color-aware-type;
                  description "Color Aware.";
                }
    
                leaf identifier {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type identifier-type;
                  default "no";
                  description
                    "Identifier. The range supported by this node varies according to the interface type. This node does not support modification or deletion.";
                }
              }  // list car
            }  // container cars
    
            container convergent-precedence {
              description
                "Configure convergent precedence.";
              leaf priority-type {
                type priority-convergent-type;
                description "Priority.";
              }
            }  // container convergent-precedence
    
            container drop-eligible-indicator-vlan {
              when
                "../../ethernet:ethernet/ethernet:main-interface/ethernet:l2-attribute/ethernet:pvid or ../../ethernet:ethernet/ethernet:main-interface/ethernet:l2-attribute/ethernet:trunk-vlans";
              description
                "Configure Drop Eligible Indicator.";
              leaf vlan-id {
                type pub-type:vlan-range {
                  pattern
                    '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])+(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?(,((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?))*)';
                }
                description
                  "VLAN ID. The VLAN ID must fall within the VLAN ID range of the Layer 2 main interface.";
              }
            }  // container drop-eligible-indicator-vlan
    
            container drop-eligible-indicator {
              when
                "../../ifm:class='sub-interface'";
              description
                "Configure drop eligible indicator.";
              leaf enable {
                type empty;
                description
                  "Enable drop eligible indicator.";
              }
            }  // container drop-eligible-indicator
    
            container trust-untag-ip-precedence {
              description
                "Configure behavior aggregate (BA) classification based on the precedence value for untagged packets on a Layer 2 interface.";
              leaf enable {
                type untag-enable-type;
                description
                  "Configure behavior aggregate (BA) classification based on the precedence value for untagged packets.";
              }
            }  // container trust-untag-ip-precedence
    
            container trust-ip-precedences {
              description
                "List of configure behavior aggregate (BA) classification based on the precedence value of IP packets.";
              list trust-ip-precedence {
                key "vlan-mode";
                description
                  "Configure behavior aggregate (BA) classification based on the precedence value of IP packets.";
                leaf vlan-mode {
                  type boolean;
                  description
                    "Enable/disable VLAN mode.";
                }
    
                leaf vlan-id {
                  when "../vlan-mode='true'";
                  type pub-type:vlan-range {
                    pattern
                      '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])+(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?(,((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9])(-(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|[1-9]))?))*)';
                  }
                  mandatory true;
                  description "VLAN id.";
                }
              }  // list trust-ip-precedence
            }  // container trust-ip-precedences
    
            container share-shaping {
              must
                "not(not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
              must
                "not(not(./be) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
              must
                "not(not(./be) and not(./af1) and not(./af3) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
              must
                "not(not(./be) and not(./af1) and not(./af2) and not(./af4) and not(./ef) and not(./cs6) and not(./cs7))";
              must
                "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./ef) and not(./cs6) and not(./cs7))";
              must
                "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./cs6) and not(./cs7))";
              must
                "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs7))";
              must
                "not(not(./be) and not(./af1) and not(./af2) and not(./af3) and not(./af4) and not(./ef) and not(./cs6))";
              presence "Create share shaping.";
              description
                "Enable/disable interface share shaping. The configuration involves at least two queues, and the scheduling mode of the queues must be the same.";
              leaf be {
                type queue-select-be-type;
                must
                  "not(../af1) or ../../port-queues/port-queue[service-class='be']/queue-schedule-mode=../../port-queues/port-queue[service-class='af1']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af1']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='be']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode))";
                must
                  "not(../af2) or ../../port-queues/port-queue[service-class='be']/queue-schedule-mode=../../port-queues/port-queue[service-class='af2']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af2']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='be']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode))";
                must
                  "not(../af3) or ../../port-queues/port-queue[service-class='be']/queue-schedule-mode=../../port-queues/port-queue[service-class='af3']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af3']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='be']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode))";
                must
                  "not(../af4) or ../../port-queues/port-queue[service-class='be']/queue-schedule-mode=../../port-queues/port-queue[service-class='af4']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af4']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='be']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode))";
                must
                  "not(../ef) or ../../port-queues/port-queue[service-class='be']/queue-schedule-mode=../../port-queues/port-queue[service-class='ef']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='ef']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='be']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode))";
                must
                  "not(../cs6) or ../../port-queues/port-queue[service-class='be']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='be']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode))";
                must
                  "not(../cs7) or ../../port-queues/port-queue[service-class='be']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='be']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='be']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode))";
                description "BE.";
              }
    
              leaf af1 {
                type queue-select-af1-type;
                must
                  "not(../af2) or ../../port-queues/port-queue[service-class='af1']/queue-schedule-mode=../../port-queues/port-queue[service-class='af2']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af2']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af1']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode))";
                must
                  "not(../af3) or ../../port-queues/port-queue[service-class='af1']/queue-schedule-mode=../../port-queues/port-queue[service-class='af3']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af3']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af1']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode))";
                must
                  "not(../af4) or ../../port-queues/port-queue[service-class='af1']/queue-schedule-mode=../../port-queues/port-queue[service-class='af4']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af4']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af1']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode))";
                must
                  "not(../ef) or ../../port-queues/port-queue[service-class='af1']/queue-schedule-mode=../../port-queues/port-queue[service-class='ef']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='ef']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af1']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode))";
                must
                  "not(../cs6) or ../../port-queues/port-queue[service-class='af1']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af1']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode))";
                must
                  "not(../cs7) or ../../port-queues/port-queue[service-class='af1']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af1']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af1']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode))";
                description "AF1.";
              }
    
              leaf af2 {
                type queue-select-af2-type;
                must
                  "not(../af3) or ../../port-queues/port-queue[service-class='af2']/queue-schedule-mode=../../port-queues/port-queue[service-class='af3']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af3']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af2']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode))";
                must
                  "not(../af4) or ../../port-queues/port-queue[service-class='af2']/queue-schedule-mode=../../port-queues/port-queue[service-class='af4']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af4']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af2']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode))";
                must
                  "not(../ef) or ../../port-queues/port-queue[service-class='af2']/queue-schedule-mode=../../port-queues/port-queue[service-class='ef']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='ef']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af2']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode))";
                must
                  "not(../cs6) or ../../port-queues/port-queue[service-class='af2']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af2']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode))";
                must
                  "not(../cs7) or ../../port-queues/port-queue[service-class='af2']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af2']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af2']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode))";
                description "AF2.";
              }
    
              leaf af3 {
                type queue-select-af3-type;
                must
                  "not(../af4) or ../../port-queues/port-queue[service-class='af3']/queue-schedule-mode=../../port-queues/port-queue[service-class='af4']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='af4']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af3']/queue-schedule-mode='wfq' and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode))";
                must
                  "not(../ef) or ../../port-queues/port-queue[service-class='af3']/queue-schedule-mode=../../port-queues/port-queue[service-class='ef']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='ef']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af3']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode))";
                must
                  "not(../cs6) or ../../port-queues/port-queue[service-class='af3']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af3']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode))";
                must
                  "not(../cs7) or ../../port-queues/port-queue[service-class='af3']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af3']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af3']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode))";
                description "AF3.";
              }
    
              leaf af4 {
                type queue-select-af4-type;
                must
                  "not(../ef) or ../../port-queues/port-queue[service-class='af4']/queue-schedule-mode=../../port-queues/port-queue[service-class='ef']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='ef']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af4']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode))";
                must
                  "not(../cs6) or ../../port-queues/port-queue[service-class='af4']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af4']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode))";
                must
                  "not(../cs7) or ../../port-queues/port-queue[service-class='af4']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='af4']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode='wfq') or (../../port-queues/port-queue[service-class='af4']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode))";
                description "AF4.";
              }
    
              leaf ef {
                type queue-select-ef-type;
                must
                  "not(../cs6) or ../../port-queues/port-queue[service-class='ef']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode='pq') or (../../port-queues/port-queue[service-class='ef']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode))";
                must
                  "not(../cs7) or ../../port-queues/port-queue[service-class='ef']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode='pq') or (../../port-queues/port-queue[service-class='ef']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='ef']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode))";
                description "EF.";
              }
    
              leaf cs6 {
                type queue-select-cs6-type;
                must
                  "not(../cs7) or ../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode=../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode or (not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode) and ../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode='pq') or (../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode='pq' and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode)) or (not(../../port-queues/port-queue[service-class='cs6']/queue-schedule-mode) and not(../../port-queues/port-queue[service-class='cs7']/queue-schedule-mode))";
                description "CS6.";
              }
    
              leaf cs7 {
                type queue-select-cs7-type;
                description "CS7.";
              }
    
              leaf queue-schedule-mode {
                type queue-schedule-mode;
                description
                  "Scheduling strategy of port queue.";
              }
    
              leaf weight {
                when
                  "../queue-schedule-mode='wfq'";
                type uint8 {
                  range "1..100";
                }
                mandatory true;
                description
                  "Weight of wfq scheduling strategy.";
              }
    
              choice shaping-parameters {
                mandatory true;
                description
                  "Specify shaping parameters.";
                case shaping {
                  description
                    "Specify shaping parameters choice case as shaping value.";
                  leaf shaping-value {
                    type uint32 {
                      range "1..4294967294";
                    }
                    units "kbit/s";
                    description "Shaping value.";
                  }
                }  // case shaping
    
                case shaping-percent {
                  description
                    "Specify shaping parameters choice case as shaping percentage value.";
                  leaf shaping-percentage {
                    type uint8 {
                      range "0..100";
                    }
                    units "%";
                    description
                      "Shaping percentage.";
                  }
                }  // case shaping-percent
              }  // choice shaping-parameters
    
              leaf pbs {
                type uint32 {
                  range "1..4194304";
                }
                units "Byte";
                description "Peak burst size.";
              }
            }  // container share-shaping
    
            container sub-port-queue-applys {
              description
                "List of configure sub port queue apply.";
              list sub-port-queue-apply {
                key "direction";
                description
                  "Configure sub port queue apply.";
                leaf direction {
                  type out-direction-type;
                  description "Direction.";
                }
    
                leaf sub-port-queue-name {
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:sub-port-queues/qos:sub-port-queue/qos:name";
                  }
                  mandatory true;
                  description
                    "Sub-port-queue template name.";
                }
    
                leaf group-name {
                  type template-name;
                  description "Group name.";
                }
              }  // list sub-port-queue-apply
            }  // container sub-port-queue-applys
    
            container user-vlan-user-group-queue-applys {
              description
                "List of configure user group queue on VLAN.";
              list user-vlan-user-group-queue-apply {
                must
                  "./pe-end-vlan-id>=./pe-begin-vlan-id";
                must
                  "./ce-end-vlan-id>=./ce-begin-vlan-id";
                key "direction pe-begin-vlan-id pe-end-vlan-id ce-begin-vlan-id ce-end-vlan-id";
                description
                  "Configure user group queue on VLAN.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf pe-begin-vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description
                    "Ce begin VLAN id.";
                }
    
                leaf pe-end-vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "Ce end VLAN id.";
                }
    
                leaf ce-begin-vlan-id {
                  type uint16 {
                    range "1..4094";
                  }
                  description
                    "Ce begin VLAN id.";
                }
    
                leaf ce-end-vlan-id {
                  type uint16 {
                    range "1..4094";
                  }
                  description "Ce end VLAN id.";
                }
    
                leaf identifier-type {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type vlan-user-group-queue-identifier-type;
                  mandatory true;
                  description
                    "Identify type. The range supported by this node varies according to the interface type. This node does not support modification or deletion.";
                }
    
                leaf user-group-queue-name {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue/qos:name";
                  }
                  must
                    "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue[qos:name=current()]/qos:mode='normal'";
                  mandatory true;
                  description
                    "Group queue. This node does not support modification or deletion.";
                }
    
                leaf group-name {
                  ext:operation-exclude "update|delete" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type template-name;
                  description
                    "The name of user queue group. This node does not support modification or deletion.";
                }
              }  // list user-vlan-user-group-queue-apply
            }  // container user-vlan-user-group-queue-applys
    
            container bras-member-link-schedulers {
              when "../../ifm:type='Eth-Trunk'";
              description
                "List of configure weight based bandwidth allocation for member interfaces of a trunk.";
              list bras-member-link-scheduler {
                must
                  "(user-access-type='subscriber-access' and direction='inbound') or user-access-type='leased-line-access'";
                key "user-access-type direction";
                description
                  "Configure weight based bandwidth allocation for member interfaces of a trunk.";
                leaf user-access-type {
                  type user-access-type;
                  description
                    "User access type.";
                }
    
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
              }  // list bras-member-link-scheduler
            }  // container bras-member-link-schedulers
    
            container schedule-tree-distribute-modes {
              when
                "(../../ifm:type='Eth-Trunk' and ../../ifm:class='main-interface') or (../../ifm:type='Ip-Trunk' and ../../ifm:class='main-interface')";
              description
                "List of configure QoS schedule tree distribute mode outbound.";
              list schedule-tree-distribute-mode {
                key "direction";
                description
                  "Configure QoS schedule tree distribute mode outbound.";
                leaf direction {
                  type out-direction-type;
                  description "Direction.";
                }
              }  // list schedule-tree-distribute-mode
            }  // container schedule-tree-distribute-modes
    
            container loop-mode {
              when
                "../../ifm:type='Virtual-Ethernet'";
              presence "create loop-mode";
              description
                "Enable/disable QoS loop mode.";
            }  // container loop-mode
    
            container resource-pools {
              description
                "List of configure QoS queue resource.";
              list resource-pool {
                key "direction";
                description
                  "Configure QoS queue resource.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf pool-id {
                  type pool-type;
                  mandatory true;
                  description "Pool-id.";
                }
              }  // list resource-pool
            }  // container resource-pools
    
            container user-group-queue-applys {
              description
                "List of configure user group queue application.";
              list user-group-queue-apply {
                key "direction";
                max-elements 2;
                description
                  "Configure user group queue application.";
                leaf direction {
                  type qos-direction-type;
                  description
                    "Group queue direction.";
                }
    
                leaf group-queue-name {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue/qos:name";
                  }
                  must
                    "/qos:qos/qos:queue-scheduler-template/qos:user-group-queues/qos:user-group-queue[qos:name=current()]/qos:mode='normal'";
                  mandatory true;
                  description
                    "Group queue name.";
                }
    
                leaf group-name {
                  ext:operation-exclude "create|update|delete" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type string {
                    length "1..31";
                  }
                  description "Group-name.";
                }
              }  // list user-group-queue-apply
            }  // container user-group-queue-applys
    
            container mpls-l2vc {
              description "Configure MPLS l2vc.";
              leaf diffserv-domain-name {
                type leafref {
                  path "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name";
                }
                description
                  "Name of a diffserv-domain.";
              }
            }  // container mpls-l2vc
    
            container member-link-schedulers {
              when
                "(../../ifm:type='Eth-Trunk' and ../../ifm:class='main-interface') or (../../ifm:type='Ip-Trunk' and ../../ifm:class='main-interface')";
              description
                "List of configure trunk flow split.";
              list member-link-scheduler {
                key "member-link-scheduler-type";
                description
                  "Configure trunk flow split.";
                leaf member-link-scheduler-type {
                  type member-link-scheduler-type;
                  description "Business type.";
                }
    
                leaf direction {
                  when
                    "../member-link-scheduler-type='user-queue'";
                  type out-direction-type;
                  description "Direction.";
                }
              }  // list member-link-scheduler
            }  // container member-link-schedulers
    
            container qos-lr {
              description
                "Configure limit on the rate of traffic on an interface.";
              choice cir-parameters {
                description
                  "Specify cir-parameters.";
                case cir {
                  description
                    "Specify cir parameters choice case as cir value.";
                  leaf cir-value {
                    type uint32 {
                      range "1..4294967294";
                    }
                    units "Mbit/s";
                    description
                      "Committed information rate.";
                  }
                }  // case cir
    
                case cir-percent {
                  description
                    "Specify cir parameters choice case as cir percentage value.";
                  leaf cir-percent-value {
                    type uint8 {
                      range "1..100";
                    }
                    units "%";
                    description
                      "CIR percentage.";
                  }
                }  // case cir-percent
              }  // choice cir-parameters
            }  // container qos-lr
    
            container ldp-traffic {
              description
                "Configure ldp traffic.";
              leaf traffic-type {
                type traffic-type;
                description "Traffic of type.";
              }
            }  // container ldp-traffic
    
            container buffer-policy-mode {
              description
                "Configure buffer policy buffer mode.";
              leaf buffer-mode {
                type buffer-mode-type;
                description "Buffer mode.";
              }
            }  // container buffer-policy-mode
    
            container hard-pipe-apply {
              presence "Create hard pipe.";
              description
                "Enable/disable hard pipe apply.";
              leaf mode {
                type hard-pipe-mode;
                mandatory true;
                description "Hard pipe mode.";
              }
    
              leaf bandwidth {
                type uint32 {
                  range "1..4294967294";
                }
                units "Mbit/s";
                mandatory true;
                description
                  "Hard pipe bandwidth.";
              }
            }  // container hard-pipe-apply
    
            container channel-adjustment {
              when
                "../../ifm:class='main-interface'";
              presence
                "create channel-adjustment";
              description
                "Enable/disable channel network header length adjustment.";
              leaf adjust-value {
                type uint16 {
                  range "1..63";
                }
                mandatory true;
                description "Adjustment value.";
              }
            }  // container channel-adjustment
    
            container user-vlan-profile-applys {
              description
                "List of configure QoS profile on user VLAN.";
              list user-vlan-profile-apply {
                must
                  "./pe-end-vlan-id>=./pe-begin-vlan-id";
                must
                  "./ce-end-vlan-id>=./ce-begin-vlan-id";
                key "direction pe-begin-vlan-id pe-end-vlan-id ce-begin-vlan-id ce-end-vlan-id";
                description
                  "Configure QoS profile on user VLAN.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf pe-begin-vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description
                    "Pe begin VLAN id.";
                }
    
                leaf pe-end-vlan-id {
                  type uint16 {
                    range "0..4094";
                  }
                  description "Pe end VLAN id.";
                }
    
                leaf ce-begin-vlan-id {
                  type uint16 {
                    range "1..4094";
                  }
                  description
                    "Ce begin VLAN id.";
                }
    
                leaf ce-end-vlan-id {
                  type uint16 {
                    range "1..4094";
                  }
                  description "Ce end VLAN id.";
                }
    
                leaf profile-name {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:profiles/qos:profile/qos:name";
                  }
                  must
                    "count(/qos:qos/qos:queue-scheduler-template/qos:profiles/qos:profile[qos:name=current()]/qos:cars/qos:car)>=1";
                  mandatory true;
                  description
                    "Qos profile name.";
                }
    
                leaf each-vlan {
                  ext:operation-exclude "update" {
                    description "After the configuration is created, the node cannot be modified.";
                  }
                  type yes-or-no;
                  mandatory true;
                  description
                    "Qos profile takes effect on the traffic of each VLAN separately or not.";
                }
              }  // list user-vlan-profile-apply
            }  // container user-vlan-profile-applys
    
            container service-template-shaping {
              description
                "Configure service template shaping.";
              container all-service-class {
                description
                  "Configure shaping for all service class with service template.";
                leaf service-template-name {
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:service-templates/qos:service-template/qos:name";
                  }
                  description
                    "Service template.";
                }
              }  // container all-service-class
    
              container specific-service-classs {
                description
                  "List of configure shapings based on class queue with service template.";
                list specific-service-class {
                  key "service-class";
                  description
                    "Configure shaping based on class queue with service template.";
                  leaf service-class {
                    type qos-service-class;
                    description
                      "Class of service, some boards do not support this object.";
                  }
    
                  leaf service-template-name {
                    type leafref {
                      path "/qos:qos/qos:queue-scheduler-template/qos:service-templates/qos:service-template/qos:name";
                    }
                    mandatory true;
                    description
                      "Service template.";
                  }
                }  // list specific-service-class
              }  // container specific-service-classs
            }  // container service-template-shaping
    
            container default-service-class-remote {
              description
                "Configure the upstream traffic to enter the specified queue on the remote AP interface of the master device.";
              leaf service-class {
                type qos-service-class;
                description "Service class.";
              }
            }  // container default-service-class-remote
    
            container trust-remotes {
              description
                "List of configure BA classification on the interface of the master device and configure the port extension interface to deliver configurations to AP devices.";
              list trust-remote {
                must
                  "(./vlan-mode='false' and ./begin-vlan=0 and ./end-vlan=0) or (./vlan-mode='true' and ./begin-vlan>0)";
                must
                  "./begin-vlan <= ./end-vlan";
                key "type direction vlan-mode begin-vlan end-vlan";
                description
                  "Configure BA classification on the interface of the master device and configure the port extension interface to deliver configurations to AP devices.";
                leaf type {
                  type remote-trust-type;
                  description
                    "Trust IP dscp or 8021p.";
                }
    
                leaf direction {
                  type trust-remote-direction-type;
                  description "Direction.";
                }
    
                leaf vlan-mode {
                  type boolean;
                  description
                    "Enable/disable VLAN mode.";
                }
    
                leaf begin-vlan {
                  type uint16 {
                    range "0..4094";
                  }
                  description "Begin VLAN ID.";
                }
    
                leaf end-vlan {
                  type uint16 {
                    range "0..4094";
                  }
                  description "End VLAN ID.";
                }
    
                leaf diffserv-domain-name {
                  when "../type='ip-dscp'";
                  type leafref {
                    path "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name";
                  }
                  mandatory true;
                  description
                    "Name of a diffserv domain.";
                }
    
                leaf type-8021p {
                  when "../type='8021p'";
                  type type-8021p;
                  mandatory true;
                  description
                    "Trust 8021p, inner 8021p or outer 8021p.";
                }
              }  // list trust-remote
            }  // container trust-remotes
    
            container wfq-shaping {
              description
                "Configure wfq shaping.";
              choice shaping-parameters {
                description
                  "Specify shaping parameters.";
                case shaping {
                  description
                    "Specify shaping parameters choice case as shaping value.";
                  leaf shaping-value {
                    type uint32 {
                      range "0..4294967294";
                    }
                    units "Mbit/s";
                    description
                      "Rate of shaping.";
                  }
                }  // case shaping
    
                case shaping-percent {
                  description
                    "Specify shaping parameters choice case as shaping percentage value.";
                  leaf shaping-percentage {
                    type uint8 {
                      range "0..100";
                    }
                    units "%";
                    description
                      "Percentage of shaping.";
                  }
                }  // case shaping-percent
              }  // choice shaping-parameters
            }  // container wfq-shaping
    
            container source-board-schedule-weights {
              description
                "List of configure weight based scheduling for a source board.";
              list source-board-schedule-weight {
                key "slot-id";
                description
                  "Configure weight based scheduling for a source board.";
                leaf slot-id {
                  type slot-id;
                  description "Slot ID.";
                }
    
                leaf weight-value {
                  type uint8 {
                    range "1..100";
                  }
                  mandatory true;
                  description "Weight value.";
                }
              }  // list source-board-schedule-weight
            }  // container source-board-schedule-weights
    
            container deficit-unit {
              presence "Create deficit unit.";
              description
                "Enable/disable the chip scheduling granularity.";
              leaf unit {
                type deficit-unit-type;
                mandatory true;
                description "Unit.";
              }
            }  // container deficit-unit
    
            container default-user-queue {
              must
                "not(not(./cir) and not(./pir) and not(./cbs) and not(./pbs) and not(./weight))";
              presence
                "Create default user queue.";
              description
                "Enable/disable default user queue. This object must contain at least one parameter in cir/cbs/pir/pbs/weight.";
              leaf direction {
                type out-direction-type;
                mandatory true;
                description "Direction.";
              }
    
              leaf cir {
                type uint32 {
                  range "0 | 16..4294967294";
                }
                units "kbit/s";
                description "Cir.";
              }
    
              leaf cbs {
                type uint32 {
                  range "1..4194304";
                }
                units "Byte";
                description "Cbs.";
              }
    
              leaf pir {
                type uint32 {
                  range "0 | 16..4294967294";
                }
                units "kbit/s";
                must
                  "(not(../cir) and ../pir>=10000) or (../cir and ../pir>=../cir)";
                description "Pir.";
              }
    
              leaf pbs {
                type uint32 {
                  range "1..4194304";
                }
                units "Byte";
                must
                  "not(../cbs) or (../cbs and ../pbs>=../cbs)";
                description "Pbs.";
              }
    
              leaf weight {
                type uint8 {
                  range "1..63";
                }
                description "Weight.";
              }
            }  // container default-user-queue
    
            container vni-cfg-peers {
              when "../../ifm:type='Nve'";
              description
                "List of configure profile peers.";
              list vni-cfg-peer {
                must "./source-ip !=peer-ip";
                key "direction vni-id source-ip peer-ip";
                description
                  "Configure profile peers.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf vni-id {
                  type uint32 {
                    range "1..16777215";
                  }
                  description "Vni ID.";
                }
    
                leaf source-ip {
                  type inet:ipv4-address-no-zone;
                  description "Source IP.";
                }
    
                leaf peer-ip {
                  type inet:ipv4-address-no-zone;
                  description "Peer IP.";
                }
    
                leaf profile-name {
                  ext:operation-exclude "update";
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:profiles/qos:profile/qos:name";
                  }
                  must
                    "/qos:qos/qos:queue-scheduler-template/qos:profiles/qos:profile[qos:name=current()]/qos:mode='normal'";
                  mandatory true;
                  description "Profile Name.";
                }
              }  // list vni-cfg-peer
            }  // container vni-cfg-peers
          }  // container qos
        }
    
        augment /ni:network-instance/ni:instances/ni:instance {
          description
            "Adds qos configuration to the instance.";
          container qos {
            description "Configure QoS apply.";
            container traffic-policy-vxlans {
              when
                "not(../../ni:name='_public_')";
              description
                "List of configure application of a traffic policy.";
              list traffic-policy-vxlan {
                key "direction";
                max-elements 2;
                description
                  "Configure application of a traffic policy.";
                leaf direction {
                  type qos-direction-type;
                  description "Direction.";
                }
    
                leaf policy-name {
                  type leafref {
                    path "/qos:qos/qos:classifier-template/qos:traffic-policys/qos:traffic-policy/qos:name";
                  }
                  mandatory true;
                  description "Policy name.";
                }
    
                leaf layer {
                  when "../direction='inbound'";
                  type policy-apply-vxlan-layer-type;
                  description
                    "Classification based on Layer 2 or Layer 3 information.";
                }
              }  // list traffic-policy-vxlan
            }  // container traffic-policy-vxlans
          }  // container qos
        }
    
        augment /lcs:license/lcs:license-items/lcs:license-item {
          description
            "Adds qos configuration to license model.";
          container port-hqoss {
            when
              "../lcs:name='LCR5S40NHQS0P' or ../lcs:name='LCR5S40XHQS0P' or ../lcs:name='LCR5S40GHQS0P' or ../lcs:name='LCR5S40VHQS0P' or ../lcs:name='LCR5S40YHQS0P' or ../lcs:name='LTNRS69GHQS0P' or ../lcs:name='LTNRS69NHQS0P' or ../lcs:name='LTNRS69VHQS0P' or ../lcs:name='LTNRS69YHQS0P' or ../lcs:name='LTNRS69XHQS0P' or ../lcs:name='LCX6S00HQSN0P' or ../lcs:name='LCX6S00HQSX0P' or ../lcs:name='LCX6S00HQSV0P'";
            description
              "List of configure port hqos license.";
            list port-hqos {
              key "position";
              description
                "Configure port hqos license.";
              leaf position {
                type string {
                  length "1..32";
                }
                description "Port position.";
              }
    
              leaf active-status {
                type lcs-active-status-type;
                config false;
                description "Activated State.";
              }
            }  // list port-hqos
          }  // container port-hqoss
        }
      }  // module huawei-qos
    

© 2023 YumaWorks, Inc. All rights reserved.