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";
    
        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
    
                container behavior-bind-multicast-nat-instance {
                  when
                    "/multicast-forward:multicast-forward/multicast-forward:nat";
                  description
                    "Configure multicast NAT instances and bind them to the traffic behavior.";
                  list behavior-bind-multicast-nat {
                    key "instance-id";
                    max-elements 1;
                    description
                      "Configure a multicast NAT instance and bind it to the traffic behavior.";
                    leaf instance-id {
                      type leafref {
                        path "/multicast-forward:multicast-forward/multicast-forward:nat/multicast-forward:instances/multicast-forward:instance/multicast-forward:instance-id";
                      }
                      description
                        "ID of a multicast NAT instance.";
                    }
    
                    leaf instance-name {
                      type leafref {
                        path "/multicast-forward:multicast-forward/multicast-forward:nat/multicast-forward:instances/multicast-forward:instance[multicast-forward:instance-id=current()/../multicast-forward:instance-id]/multicast-forward:instance-name";
                      }
                      description
                        "Name of a multicast NAT instance.";
                    }
                  }  // list behavior-bind-multicast-nat
                }  // container behavior-bind-multicast-nat-instance
    
                container pbr {
                  description
                    "Configure traffic behavior redirect.";
                  container redirect-vpn-group {
                    must
                      "not(../pbr-ipv4/redirect-tunnel or ../pbr-ipv4/redirect-mldp-tunnel
    or ../pbr-ipv4/redirect-public-network or ../pbr-ipv4/redirect-srv6-te-policy or ../pbr-ipv4/redirect-to-interface/if-name
    or ../pbr-ipv4/ipv4-nexthop or (count(../pbr-ipv4/ipv4-multinhp-interface/multi-nhp-interfaces/multi-nhp-interface)>0)
    or (count(../pbr-ipv4/ipv4-multinhp/multi-nhps/multi-nhp)>0) or (count(../pbr-ipv4/ipv4-multinhp-vpn/multi-vpns/multi-vpn)>0)
    or (count(../pbr-ipv4/ipv4-multinhp-nqa/multi-nqas/multi-nqa)>0) )";
                    must
                      "not( ../pbr-ipv6/ipv6-redirect-public-network or ../pbr-ipv6/ipv6-redirect-to-interface/if-name
    or ../pbr-ipv6/ipv6-nexthop or (count(../pbr-ipv6/ipv6-multinhp-interface/multi-nhp-interfaces/multi-nhp-interface)>0)
    or (count(../pbr-ipv6/ipv6-multinhp/multi-nhps/multi-nhp)>0) or (count(../pbr-ipv6/ipv6-multinhp-vpn/multi-vpns/multi-vpn)>0)
    or (count(../pbr-ipv6/ipv6-multinhp-nqa/multi-nqas/multi-nqa)>0) )";
                    presence
                      "create redirect-vpn-group";
                    description
                      "Enable/disable action of redirecting to the VPN-instance group.";
                    leaf vpn-group-name {
                      type leafref {
                        path "/qos:qos/qos:global-config/pbr:pbr/pbr:global-vpn-groups/pbr:global-vpn-group/pbr:vpn-group-name";
                      }
                      mandatory true;
                      description
                        "Name of a VPN-instance group.";
                    }
                  }  // container redirect-vpn-group
    
                  container redirect-lsp {
                    must
                      "not(../redirect-vpn-group or ../pbr-ipv4/redirect-tunnel or ../pbr-ipv4/redirect-mldp-tunnel
    or ../pbr-ipv4/redirect-public-network or ../pbr-ipv4/redirect-srv6-te-policy or ../pbr-ipv4/redirect-to-interface/if-name
    or ../pbr-ipv4/ipv4-nexthop or (count(../pbr-ipv4/ipv4-multinhp-interface/multi-nhp-interfaces/multi-nhp-interface)>0)
    or (count(../pbr-ipv4/ipv4-multinhp/multi-nhps/multi-nhp)>0) or (count(../pbr-ipv4/ipv4-multinhp-vpn/multi-vpns/multi-vpn)>0)
    or (count(../pbr-ipv4/ipv4-multinhp-nqa/multi-nqas/multi-nqa)>0))";
                    presence
                      "create redirect-lsp";
                    description
                      "Enable/disable action of redirecting to the public network LSP.";
                    leaf target-address {
                      type inet:ipv4-address-no-zone;
                      mandatory true;
                      description
                        "Destination address.";
                    }
    
                    choice property {
                      description
                        "LSP other property, such as nexthop-address, if-name, secondary.";
                      case nexthop-address {
                        description
                          "Next hop address.";
                        leaf nexthop-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Next hop address.";
                        }
                      }  // case nexthop-address
    
                      case if-name {
                        description
                          "Outbound interface name.";
                        leaf if-name {
                          type leafref {
                            path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                          }
                          description
                            "Outbound interface name.";
                        }
                      }  // case if-name
    
                      case secondary {
                        description
                          "Secondary LSP.";
                        leaf secondary {
                          type empty;
                          description
                            "Secondary LSP.";
                        }
                      }  // case secondary
                    }  // choice property
                  }  // container redirect-lsp
    
                  container pbr-ipv4 {
                    description
                      "Configure action of redirecting to IPv4.";
                    choice pbr-ipv4 {
                      description
                        "Action of redirecting to IPv4.";
                      case redirect-tunnel {
                        description
                          "Action of redirecting to P2P (RSVP-TE, SR-TE) and P2MP Tunnel.";
                        container redirect-tunnel {
                          must
                            "not( ../../pbr-ipv6/ipv6-redirect-public-network or ../../pbr-ipv6/ipv6-redirect-to-interface/if-name
    or ../../pbr-ipv6/ipv6-nexthop or (count(../../pbr-ipv6/ipv6-multinhp-interface/multi-nhp-interfaces/multi-nhp-interface)>0)
    or (count(../../pbr-ipv6/ipv6-multinhp/multi-nhps/multi-nhp)>0) or (count(../../pbr-ipv6/ipv6-multinhp-vpn/multi-vpns/multi-vpn)>0)
    or (count(../../pbr-ipv6/ipv6-multinhp-nqa/multi-nqas/multi-nqa)>0) )";
                          presence
                            "create redirect-tunnel";
                          description
                            "Enable/disable action of redirecting to P2P (RSVP-TE, SR-TE) and P2MP Tunnel. But not support a tunnel as a split or original tunnel.";
                          leaf tunnel-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            mandatory true;
                            description
                              "Name of a tunnel.";
                          }
    
                          leaf route-forward {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable route forward, Support P2P (RSVP-TE, SR-TE) Tunnel.";
                          }
                        }  // container redirect-tunnel
                      }  // case redirect-tunnel
    
                      case redirect-mldp-tunnel {
                        description
                          "Action of redirecting to Mldps.";
                        container redirect-mldp-tunnel {
                          presence
                            "create redirect-mldp-tunnel";
                          description
                            "Enable/disable action of redirecting to Mldps.";
                          leaf mldp-tunnel-name {
                            type leafref {
                              path "/mpls:mpls/mpls-ldp:ldp/mpls-ldp:mldp/mpls-ldp:p2mp/mpls-ldp:tunnels/mpls-ldp:tunnel/mpls-ldp:name";
                            }
                            mandatory true;
                            description
                              "Name of a MLDP tunnel.";
                          }
                        }  // container redirect-mldp-tunnel
                      }  // case redirect-mldp-tunnel
    
                      case redirect-public-network {
                        description
                          "Action of redirecting to IPv4 public-network.";
                        container redirect-public-network {
                          presence
                            "create redirect-public-network";
                          description
                            "Enable/disable action of redirecting to public-network.";
                        }  // container redirect-public-network
                      }  // case redirect-public-network
    
                      case redirect-srv6-te-policy {
                        description
                          "Action of redirecting to SRv6-te policy.";
                        container redirect-srv6-te-policy {
                          presence
                            "create srv6-te-policy";
                          description
                            "Enable/disable action of redirecting to SRv6-te policy.";
                          leaf endpoint {
                            type inet:ipv6-address-no-zone;
                            mandatory true;
                            description
                              "Endpoint.";
                          }
    
                          leaf color {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            mandatory true;
                            description "Color.";
                          }
    
                          leaf sid-type {
                            type sid-type;
                            description
                              "SID type.";
                          }
    
                          leaf sid-ip {
                            when "../sid-type";
                            type inet:ipv6-address-no-zone;
                            mandatory true;
                            description
                              "SID IP.";
                          }
                        }  // container redirect-srv6-te-policy
                      }  // case redirect-srv6-te-policy
    
                      case redirect-to-interface {
                        description
                          "Action of redirecting to interface.";
                        container redirect-to-interface {
                          description
                            "Configure action of redirecting to interface.";
                          leaf if-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            mandatory true;
                            description
                              "Outbound interface name.";
                          }
    
                          leaf route-forward {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable route forward.";
                          }
                        }  // container redirect-to-interface
                      }  // case redirect-to-interface
    
                      case ipv4-nexthop {
                        description
                          "Action of redirect to IPv4 nexthop.";
                        container ipv4-nexthop {
                          presence
                            "create ipv4-nexthop";
                          description
                            "Enable/disable action of redirect to IPv4 nexthop.";
                          leaf nexthop-address {
                            type inet:ipv4-address-no-zone;
                            mandatory true;
                            description
                              "Next hop address.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          choice action-type {
                            default "none";
                            description
                              "Action of redirect to IPv4 nexthop type.";
                            case none {
                              description
                                "Action of redirect to IPv4 nexthop none.";
                              container none {
                                description
                                  "Configure action of redirect to IPv4 nexthop none.";
                                leaf deny {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable packets are dropped when routes are invalid.";
                                }
    
                                choice property {
                                  default
                                    "routing-filter";
                                  description
                                    "IPv4 property.";
                                  case vpn-network {
                                    description
                                      "Specify VPN network.";
                                    leaf vpn-network {
                                      type empty;
                                      description
                                        "VPN network.";
                                    }
                                  }  // case vpn-network
    
                                  case routing-filter {
                                    description
                                      "Routing filter.";
                                    leaf routing-filter {
                                      type routing-type;
                                      default
                                        "false";
                                      description
                                        "Routing type.";
                                    }
    
                                    leaf public-network {
                                      type empty;
                                      description
                                        "Public network.";
                                    }
                                  }  // case routing-filter
                                }  // choice property
                              }  // container none
                            }  // case none
    
                            case interface {
                              description
                                "Action of redirect to IPv4 interface.";
                              container interface {
                                presence
                                  "create ipv4-interface";
                                description
                                  "Enable/disable action of redirect to IPv4 interface.";
                                leaf if-name {
                                  type leafref {
                                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Outbound interface name.";
                                }
    
                                leaf route-forward {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable route forward.";
                                }
                              }  // container interface
                            }  // case interface
    
                            case vpn-instance {
                              description
                                "Private VRF LSP.";
                              container vpn-instance {
                                presence
                                  "create ipv4-vpn";
                                description
                                  "Enable/disable action of redirect to VRF LSP.";
                                leaf vrf-name {
                                  type leafref {
                                    path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                                  }
                                  must
                                    "../vrf-name!='_public_'";
                                  mandatory
                                    true;
                                  description
                                    "VPN name.";
                                }
    
                                leaf nqa-admin-name {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                  }
                                  must
                                    "../nqa-instance";
                                  description
                                    "NQA admin name.";
                                }
    
                                leaf nqa-instance {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                  }
                                  must
                                    "../nqa-admin-name";
                                  description
                                    "NQA instance.";
                                }
    
                                leaf routing-filter {
                                  type routing-type;
                                  default
                                    "false";
                                  description
                                    "Routing type.";
                                }
    
                                leaf deny {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable packets are dropped when routes are invalid.";
                                }
                              }  // container vpn-instance
                            }  // case vpn-instance
    
                            case nqa {
                              description
                                " Specify NQA test class.";
                              container nqa {
                                presence
                                  "create ipv4-nqa";
                                description
                                  "Enable/disable action of redirect to NQA.";
                                leaf nqa-admin-name {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "NQA admin name.";
                                }
    
                                leaf nqa-instance {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "NQA instance.";
                                }
    
                                leaf deny {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable packets are dropped when routes are invalid.";
                                }
    
                                choice property {
                                  default
                                    "routing-filter";
                                  description
                                    "Specify other NQA property.";
                                  case vpn-network {
                                    description
                                      "Specify VPN network.";
                                    leaf vpn-network {
                                      type empty;
                                      description
                                        "VPN network.";
                                    }
                                  }  // case vpn-network
    
                                  case routing-filter {
                                    description
                                      "Routing filter.";
                                    leaf routing-filter {
                                      type routing-type;
                                      default
                                        "false";
                                      description
                                        "Routing type.";
                                    }
    
                                    leaf public-network {
                                      type empty;
                                      description
                                        "Public network.";
                                    }
                                  }  // case routing-filter
                                }  // choice property
                              }  // container nqa
                            }  // case nqa
                          }  // choice action-type
                        }  // container ipv4-nexthop
                      }  // case ipv4-nexthop
    
                      case ipv4-multinhp-interface {
                        description
                          "Redirect IP and interface.";
                        container ipv4-multinhp-interface {
                          description
                            "Configure redirect IP and interface.";
                          leaf load-balance {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable load balance.";
                          }
    
                          leaf sip-hash {
                            type boolean;
                            must
                              "not(../load-balance='false' and ../sip-hash='true')";
                            default "false";
                            description
                              "Enable/disable the source address-based load balancing algorithm.";
                          }
    
                          leaf unequal-cost {
                            type boolean;
                            must
                              "not(../load-balance='false' and ../unequal-cost='true')";
                            default "false";
                            description
                              "Enable/disable the unequal-cost load balance mode.";
                          }
    
                          leaf route-forward {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable route forward.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          container multi-nhp-interfaces {
                            description
                              "List of nexthop list.";
                            list multi-nhp-interface {
                              key "nexthop-address if-name";
                              unique "nexthop-address";
                              min-elements 2;
                              max-elements 42;
                              description
                                "Configure nexthop.";
                              leaf nexthop-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
    
                              leaf if-name {
                                type leafref {
                                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                                }
                                description
                                  "IfName.";
                              }
                            }  // list multi-nhp-interface
                          }  // container multi-nhp-interfaces
                        }  // container ipv4-multinhp-interface
                      }  // case ipv4-multinhp-interface
    
                      case ipv4-multinhp {
                        description
                          "Redirect IPv4 multinhp.";
                        container ipv4-multinhp {
                          must
                            "count(./multi-nhps/multi-nhp)>0";
                          description
                            "Configure redirect IPv4.";
                          leaf routing-filter {
                            type routing-type;
                            default "false";
                            description
                              "Routing filter default and blackhole route.";
                          }
    
                          leaf deny {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable packets are dropped when routes are invalid.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          leaf non-revertive {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable configured IPv4mulnhp not revertive.";
                          }
    
                          container multi-nhps {
                            description
                              "List of nexthop list.";
                            list multi-nhp {
                              key "nexthop-address";
                              min-elements 2;
                              max-elements 42;
                              description
                                "Configure nexthop.";
                              leaf nexthop-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
                            }  // list multi-nhp
                          }  // container multi-nhps
                        }  // container ipv4-multinhp
                      }  // case ipv4-multinhp
    
                      case ipv4-multinhp-vpn {
                        description
                          "Private VRF LSP.";
                        container ipv4-multinhp-vpn {
                          must
                            "count(./multi-vpns/multi-vpn)>0";
                          description
                            "Configure private VRF LSP.";
                          leaf routing-filter {
                            type routing-type;
                            default "false";
                            description
                              "Routing filter default and blackhole route.";
                          }
    
                          leaf deny {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable packets are dropped when routes are invalid.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          leaf non-revertive {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable configured IPv4mulnhp not revertive.";
                          }
    
                          container multi-vpns {
                            description
                              "List of nexthop list.";
                            list multi-vpn {
                              key "nexthop-address vrf-name";
                              unique "nexthop-address";
                              min-elements 2;
                              max-elements 42;
                              description
                                "Configure nexthop.";
                              leaf nexthop-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
    
                              leaf vrf-name {
                                type leafref {
                                  path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                                }
                                must
                                  "../vrf-name!='_public_'";
                                description
                                  "VPN name.";
                              }
    
                              leaf nqa-admin-name {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                }
                                must
                                  "../vrf-name and ../nqa-instance";
                                description
                                  "NQA admin name.";
                              }
    
                              leaf nqa-instance {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                }
                                must
                                  "../nqa-admin-name";
                                description
                                  "NQA instance.";
                              }
                            }  // list multi-vpn
                          }  // container multi-vpns
                        }  // container ipv4-multinhp-vpn
                      }  // case ipv4-multinhp-vpn
    
                      case ipv4-multinhp-nqa {
                        description
                          "Specify NQA test class.";
                        container ipv4-multinhp-nqa {
                          description
                            "Configure specify NQA test class.";
                          leaf routing-filter {
                            type routing-type;
                            default "false";
                            description
                              "Routing filter default and blackhole route.";
                          }
    
                          leaf deny {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable packets are dropped when routes are invalid.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          leaf non-revertive {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable configured IPv4mulnhp not revertive.";
                          }
    
                          container multi-nqas {
                            description
                              "List of nexthop list.";
                            list multi-nqa {
                              key "nexthop-address nqa-admin-name nqa-instance";
                              unique "nexthop-address";
                              min-elements 2;
                              max-elements 42;
                              description
                                "Configure nexthop.";
                              leaf nexthop-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
    
                              leaf nqa-admin-name {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                }
                                description
                                  "NQA admin name.";
                              }
    
                              leaf nqa-instance {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                }
                                description
                                  "NQA instance.";
                              }
                            }  // list multi-nqa
                          }  // container multi-nqas
                        }  // container ipv4-multinhp-nqa
                      }  // case ipv4-multinhp-nqa
                    }  // choice pbr-ipv4
                  }  // container pbr-ipv4
    
                  container pbr-ipv6 {
                    description
                      "Configure action of redirecting to IPv6.";
                    choice pbr-ipv6 {
                      description
                        "Action of redirecting to IPv6.";
                      case ipv6-redirect-public-network {
                        description
                          "Action of redirecting to IPv6 public-network.";
                        container ipv6-redirect-public-network {
                          presence
                            "create ipv6-redirect-public-network";
                          description
                            "Enable/disable action of redirecting to IPv6 public-network.";
                        }  // container ipv6-redirect-public-network
                      }  // case ipv6-redirect-public-network
    
                      case ipv6-redirect-to-interface {
                        description
                          "Action of redirecting to IPv6 interface.";
                        container ipv6-redirect-to-interface {
                          description
                            "Configure action of redirecting to IPv6 interface.";
                          leaf if-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            mandatory true;
                            description
                              "Outbound interface name.";
                          }
    
                          leaf route-forward {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable route forward.";
                          }
                        }  // container ipv6-redirect-to-interface
                      }  // case ipv6-redirect-to-interface
    
                      case ipv6-nexthop {
                        description
                          "Action of redirecting to a IPv6 next hop.";
                        container ipv6-nexthop {
                          presence "create ipv6";
                          description
                            "Enable/disable action of redirecting to a IPv6 next hop.";
                          leaf nexthop-address {
                            type inet:ipv6-address-no-zone;
                            mandatory true;
                            description
                              "Next hop address.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          choice action-type {
                            default "none";
                            description
                              "Action of redirect to IPv6 nexthop type.";
                            case none {
                              description
                                "Action of redirect to IPv6 nexthop type.";
                              container none {
                                description
                                  "Configure action of redirect to IPv6 nexthop type none.";
                                leaf deny {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable packets are dropped when routes are invalid.";
                                }
    
                                leaf routing-filter {
                                  type routing-type;
                                  default
                                    "false";
                                  description
                                    "Routing type.";
                                }
                              }  // container none
                            }  // case none
    
                            case interface {
                              description
                                "Action of redirecting to a IPv6 interface.";
                              container interface {
                                presence
                                  "create ipv6-interface";
                                description
                                  "Enable/disable action of redirecting to a IPv6 interface.";
                                leaf if-name {
                                  type leafref {
                                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Outbound interface name.";
                                }
    
                                leaf route-forward {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable route forward.";
                                }
                              }  // container interface
                            }  // case interface
    
                            case vpn-instance {
                              description
                                "Private VRF LSP.";
                              container vpn-instance {
                                presence
                                  "create ipv6-vpn";
                                description
                                  "Enable/disable action of redirecting to IPv6 VRF LSP.";
                                leaf vrf-name {
                                  type leafref {
                                    path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                                  }
                                  must
                                    "../vrf-name!='_public_'";
                                  mandatory
                                    true;
                                  description
                                    "VPN name.";
                                }
    
                                leaf nqa-admin-name {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                  }
                                  must
                                    "../nqa-instance";
                                  description
                                    "NQA admin name.";
                                }
    
                                leaf nqa-instance {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                  }
                                  must
                                    "../nqa-admin-name";
                                  description
                                    "NQA instance.";
                                }
    
                                leaf routing-filter {
                                  type routing-type;
                                  default
                                    "false";
                                  description
                                    "Routing type.";
                                }
    
                                leaf deny {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable packets are dropped when routes are invalid.";
                                }
                              }  // container vpn-instance
                            }  // case vpn-instance
    
                            case nqa {
                              description
                                "Specify NQA test class.";
                              container nqa {
                                presence
                                  "create ipv6-nqa";
                                description
                                  "Enable/disable action of redirecting to IPv6 NQA.";
                                leaf nqa-admin-name {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "NQA admin name.";
                                }
    
                                leaf nqa-instance {
                                  type leafref {
                                    path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "NQA instance.";
                                }
    
                                leaf deny {
                                  type boolean;
                                  default
                                    "false";
                                  description
                                    "Enable/disable packets are dropped when routes are invalid.";
                                }
    
                                leaf routing-filter {
                                  type routing-type;
                                  default
                                    "false";
                                  description
                                    "Routing type.";
                                }
                              }  // container nqa
                            }  // case nqa
                          }  // choice action-type
                        }  // container ipv6-nexthop
                      }  // case ipv6-nexthop
    
                      case ipv6-multinhp-interface {
                        description
                          "Redirect IPv6 and interface.";
                        container ipv6-multinhp-interface {
                          description
                            "Configure redirect IPv6 and interface.";
                          leaf load-balance {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable load balance.";
                          }
    
                          leaf sip-hash {
                            type boolean;
                            must
                              "not(../load-balance='false' and ../sip-hash='true')";
                            default "false";
                            description
                              "Enable/disable set the source address-based load balancing algorithm.";
                          }
    
                          leaf unequal-cost {
                            type boolean;
                            must
                              "not(../load-balance='false' and ../unequal-cost='true')";
                            default "false";
                            description
                              "Enable/disable the unequal-cost load balance mode.";
                          }
    
                          leaf route-forward {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable route forward.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          container multi-nhp-interfaces {
                            description
                              "List of IPv6 multi nexthop.";
                            list multi-nhp-interface {
                              key "nexthop-address if-name";
                              unique "nexthop-address";
                              min-elements 2;
                              max-elements 16;
                              description
                                "Configure Nexthop.";
                              leaf nexthop-address {
                                type inet:ipv6-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
    
                              leaf if-name {
                                type leafref {
                                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                                }
                                description
                                  "IfName.";
                              }
                            }  // list multi-nhp-interface
                          }  // container multi-nhp-interfaces
                        }  // container ipv6-multinhp-interface
                      }  // case ipv6-multinhp-interface
    
                      case ipv6-multinhp {
                        description
                          "Redirect IPv6 multinhp.";
                        container ipv6-multinhp {
                          must
                            "count(./multi-nhps/multi-nhp)>0";
                          description
                            "Configure Redirect IPv6 multinhp.";
                          leaf routing-filter {
                            type routing-type;
                            default "false";
                            description
                              "Routing filter default and blackhole route.";
                          }
    
                          leaf deny {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable packets are dropped when routes are invalid.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          container multi-nhps {
                            description
                              "List of nexthop list, min-elements:2,max-elements:16.";
                            list multi-nhp {
                              key "nexthop-address";
                              min-elements 2;
                              max-elements 16;
                              description
                                "Configure nexthop.";
                              leaf nexthop-address {
                                type inet:ipv6-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
                            }  // list multi-nhp
                          }  // container multi-nhps
                        }  // container ipv6-multinhp
                      }  // case ipv6-multinhp
    
                      case ipv6-multinhp-vpn {
                        description
                          "Private VRF LSP.";
                        container ipv6-multinhp-vpn {
                          must
                            "count(./multi-vpns/multi-vpn)>0";
                          description
                            "Configure private VRF LSP.";
                          leaf routing-filter {
                            type routing-type;
                            default "false";
                            description
                              "Routing filter default and blackhole route.";
                          }
    
                          leaf deny {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable packets are dropped when routes are invalid.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          container multi-vpns {
                            description
                              "List of nexthop list.";
                            list multi-vpn {
                              key "nexthop-address vrf-name";
                              unique "nexthop-address";
                              min-elements 2;
                              max-elements 16;
                              description
                                "Configure nexthop.";
                              leaf nexthop-address {
                                type inet:ipv6-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
    
                              leaf vrf-name {
                                type leafref {
                                  path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                                }
                                must
                                  "../vrf-name!='_public_'";
                                description
                                  "VPN name.";
                              }
    
                              leaf nqa-admin-name {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                }
                                must
                                  "../vrf-name and ../nqa-instance";
                                description
                                  "NQA admin name.";
                              }
    
                              leaf nqa-instance {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                }
                                must
                                  "../nqa-admin-name";
                                description
                                  "NQA instance.";
                              }
                            }  // list multi-vpn
                          }  // container multi-vpns
                        }  // container ipv6-multinhp-vpn
                      }  // case ipv6-multinhp-vpn
    
                      case ipv6-multinhp-nqa {
                        description
                          "Specify NQA test class.";
                        container ipv6-multinhp-nqa {
                          description
                            "Configure NQA test class.";
                          leaf routing-filter {
                            type routing-type;
                            default "false";
                            description
                              "Routing filter default and blackhole route.";
                          }
    
                          leaf deny {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable packets are dropped when routes are invalid.";
                          }
    
                          leaf common-route-priority {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable common route priority.";
                          }
    
                          container multi-nqas {
                            description
                              "List of nexthop list.";
                            list multi-nqa {
                              key "nexthop-address nqa-admin-name nqa-instance";
                              unique "nexthop-address";
                              min-elements 2;
                              max-elements 16;
                              description
                                "Configure nexthop.";
                              leaf nexthop-address {
                                type inet:ipv6-address-no-zone;
                                description
                                  "Nexthop address.";
                              }
    
                              leaf nqa-admin-name {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance/nqa:admin-name";
                                }
                                description
                                  "NQA admin name.";
                              }
    
                              leaf nqa-instance {
                                type leafref {
                                  path "/nqa:nqa/nqa:instances/nqa:instance[nqa:admin-name=current()/../nqa-admin-name]/nqa:test-name";
                                }
                                description
                                  "NQA instance.";
                              }
                            }  // list multi-nqa
                          }  // container multi-nqas
                        }  // container ipv6-multinhp-nqa
                      }  // case ipv6-multinhp-nqa
                    }  // choice pbr-ipv6
                  }  // container pbr-ipv6
    
                  container pbr-l2vpn {
                    description
                      "Configure redirect to PBR-L2VPN.";
                    container redirect-vsi {
                      must
                        "not(../../pbr:redirect-lsp or ../../pbr:redirect-vpn-group or ../../pbr:pbr-ipv4/pbr:redirect-tunnel or ../../pbr:pbr-ipv4/pbr:redirect-mldp-tunnel
    or ../../pbr:pbr-ipv4/pbr:redirect-public-network or ../../pbr:pbr-ipv4/pbr:redirect-srv6-te-policy or ../../pbr:pbr-ipv4/pbr:redirect-to-interface/pbr:if-name
    or ../../pbr:pbr-ipv4/pbr:ipv4-nexthop or (count(../../pbr:pbr-ipv4/pbr:ipv4-multinhp-interface/pbr:multi-nhp-interfaces/pbr:multi-nhp-interface)>0)
    or (count(../../pbr:pbr-ipv4/pbr:ipv4-multinhp/pbr:multi-nhps/pbr:multi-nhp)>0) or (count(../../pbr:pbr-ipv4/pbr:ipv4-multinhp-vpn/pbr:multi-vpns/pbr:multi-vpn)>0)
    or (count(../../pbr:pbr-ipv4/pbr:ipv4-multinhp-nqa/pbr:multi-nqas/pbr:multi-nqa)>0) )";
                      presence
                        "create redirect-VSI";
                      description
                        "Enable/disable action of redirecting to VSIs.";
                      leaf vsi-name {
                        type leafref {
                          path "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance/l2vpn:name";
                        }
                        must
                          "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']";
                        mandatory true;
                        description
                          "Name of VSI.";
                      }
                    }  // container redirect-vsi
                  }  // container pbr-l2vpn
                }  // container pbr
    
                container bas {
                  description
                    "Configure traffic behavior.";
                  container vas {
                    must
                      "not(./service-class-edsg/keep-queue-level = 'true' and (./daa-accounting/tariff-level or ./daa-accounting/tariff-statistic-enable = 'true' or ./car-for-daa/enable = 'true'))";
                    description
                      "Configure vas in qos traffic-behavior model.";
                    container daa-accounting {
                      description
                        "Configure a tariff level for DAA accounting.";
                      leaf tariff-level {
                        type uint8 {
                          range "1..8";
                        }
                        description
                          "Configures a tariff level for DAA accounting.";
                      }
    
                      leaf tariff-statistic-enable {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable Traffic Statistics Collection.";
                      }
                    }  // container daa-accounting
    
                    container service-class-edsg {
                      description
                        "Configure the service queue level is not used in the traffic behavior to overwrite the original queue level.";
                      leaf keep-queue-level {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the service class for Enhanced dynamic service gateway.";
                      }
                    }  // container service-class-edsg
    
                    container car-for-daa {
                      description
                        "Configure CAR for DAA service traffic.";
                      leaf enable {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable CAR for DAA service traffic.";
                      }
                    }  // container car-for-daa
                  }  // container vas
    
                  container http-redirect {
                    description
                      "Configure http-redirect under qos traffic-behavior model.";
                    container redirect-cpu-portal {
                      description
                        "Configure the next hop of the packets to send to the CPU according to limits of idle web users.";
                      leaf enable {
                        type enumeration {
                          enum "http-enable" {
                            value 0;
                            description
                              "Parsing the user MAC address by duid.";
                          }
                          enum
                            "http-plus-enable" {
                            value 1;
                            description
                              "Enables or disables httpRedirect Plus.";
                          }
                          enum
                            "cpu-redirect-enable" {
                            value 2;
                            description
                              "The redirect-cpu portal command configures flow-based captive portal redirection.";
                          }
                          enum
                            "redirect-chasten-enable" {
                            value 3;
                            description
                              "The redirect-cpu http-redirect-chasten command to run to configure the next hop of the packets to send to the CPU according to limits of idle web users.";
                          }
                          enum "dns-enable" {
                            value 4;
                            description
                              "Configures dns redirection.";
                          }
                        }
                        description
                          "Redirects login users to an authentication web page.";
                      }
                    }  // container redirect-cpu-portal
                  }  // container http-redirect
    
                  container https-redirect {
                    description
                      "Configure HTTPS redirect configuration to qos traffic-behavior model.";
                    container cpu-portal {
                      description
                        "Configure HTTPS redirection service.";
                      leaf enable {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable to send corresponding packets to the slave core after the HTTPS redirection function is enabled.";
                      }
                    }  // container cpu-portal
                  }  // container https-redirect
                }  // container bas
    
                container mirror {
                  description
                    "Configure Mirror.";
                  container mirror-enable {
                    presence
                      "create mirror-enable";
                    description
                      "Enable/disable flow mirroring action.";
                  }  // container mirror-enable
    
                  container mirror-slice {
                    presence
                      "create mirror-slice";
                    description
                      "Enable/disable flow mirroring slice action.";
                    leaf slice-size {
                      type uint32 {
                        range "64..9600";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "Length of packet.";
                    }
                  }  // container mirror-slice
    
                  container mirror-car {
                    must
                      "(not(./pir) and not(./pbs)) or (./pbs)";
                    must
                      "not(./pir) or ./pir>=./cir";
                    presence "create mirror-car";
                    description
                      "Enable/disable flow mirroring car action.";
                    leaf cir {
                      type uint32 {
                        range "0..4294967295";
                      }
                      units "kbit/s";
                      mandatory true;
                      description
                        "Committed information rate.";
                    }
    
                    leaf pir {
                      type uint32 {
                        range "1..4294967295";
                      }
                      units "kbit/s";
                      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.";
                    }
                  }  // container mirror-car
    
                  container mirror-to {
                    presence "create mirror-to";
                    description
                      "Enable/disable flow mirroring to.";
                    leaf observe-index {
                      type string {
                        length "1..50";
                        pattern
                          '((25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]){1}((,(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])){0,7}))';
                      }
                      mandatory true;
                      description
                        "Observing index. Enter the observation index value, which is separated by a comma (,) and the index value must be unique. For example, 1 or 1,3,5,7,9.";
                    }
                  }  // container mirror-to
                }  // container mirror
              }  // 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.";
                    }
    
                    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.";
                    }
    
                    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 pbr {
              description
                "Configure global redirect.";
              container global-vpn-groups {
                description
                  "List of VPN-instance groups.";
                list global-vpn-group {
                  key "vpn-group-name";
                  description
                    "Configure VPN-instance group.";
                  leaf vpn-group-name {
                    type string {
                      length "1..31";
                    }
                    description
                      "Name of a VPN-instance group.";
                  }
    
                  leaf-list vrf-name {
                    type leafref {
                      path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                    }
                    must
                      "../vrf-name!='_public_'";
                    max-elements 8;
                    description
                      "Configure VPN-instance name.";
                  }
                }  // list global-vpn-group
              }  // container global-vpn-groups
            }  // container pbr
    
            container local-id-enable {
              presence
                "create qos-local-id-enable";
              description
                "Enable/disable QoS-local-id.";
              leaf mode {
                type traffic-mode;
                mandatory true;
                description
                  "The mode of traffic policy QoS-local-id enable.";
              }
            }  // container local-id-enable
    
            container mirror {
              description "Configure mirror.";
              container to-observe {
                presence "create to-observe";
                description
                  "Enable/disable observing board.";
                leaf index {
                  type uint8 {
                    range "1..8";
                  }
                  mandatory true;
                  description "Observing index.";
                }
              }  // container to-observe
            }  // container mirror
          }  // 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.";
                }
    
                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.";
                }
    
                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.";
                    }
    
                    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.";
                    }
    
                    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.";
                    }
    
                    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.";
                    }
    
                    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 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.";
                        }
                      }  // 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.";
                }
    
                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.";
                }
              }  // 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.";
                }
    
                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.";
                }
              }  // 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.";
                }
    
                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.";
                }
              }  // 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 qppb {
            description "Configure QPPB.";
            container local-policys {
              description
                "List of QPPB local policy.";
              list local-policy {
                key "policy-name";
                description
                  "Configure QPPB local policy.";
                leaf policy-name {
                  type string {
                    length "1..31";
                  }
                  description
                    "Local-policy name.";
                }
    
                leaf statistic-enable {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable statistics flag.";
                }
    
                leaf service-class-outbound {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable outbound service-class flag.";
                }
    
                container qos-local-ids {
                  description
                    "List of QoS local ID.";
                  list qos-local-id {
                    key "local-id";
                    max-elements 255;
                    description
                      "Configure local ID.";
                    leaf local-id {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Local ID value.";
                    }
    
                    leaf behavior-name {
                      type leafref {
                        path "/qos:qos/qos:classifier-template/qos:traffic-behaviors/qos:traffic-behavior/qos:name";
                      }
                      mandatory true;
                      description
                        "Behavior name.";
                    }
                  }  // list qos-local-id
                }  // container qos-local-ids
              }  // list local-policy
            }  // container local-policys
    
            container query-policys {
              config false;
              description
                "List of interface QPPB.";
              list query-policy {
                key "if-name direction";
                config false;
                max-elements 2;
                description
                  "Interface QPPB state.";
                leaf if-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  config false;
                  description
                    "Name of an interface.";
                }
    
                leaf direction {
                  type direction-type;
                  config false;
                  description "Direction.";
                }
    
                leaf policy-name {
                  type leafref {
                    path "/qos:qos/qppb:qppb/qppb:local-policys/qppb:local-policy/qppb:policy-name";
                  }
                  config false;
                  description
                    "Local-policy name.";
                }
    
                leaf local-id {
                  type uint32 {
                    range "1..255";
                  }
                  config false;
                  description "Local ID.";
                }
    
                leaf behavior-name {
                  type leafref {
                    path "/qos:qos/qos:classifier-template/qos:traffic-behaviors/qos:traffic-behavior/qos:name";
                  }
                  config false;
                  description "Behavior name.";
                }
    
                leaf state {
                  type behavior-state;
                  config false;
                  description
                    "QPPB Policy state.";
                }
              }  // list query-policy
            }  // container query-policys
    
            container query-statistics {
              config false;
              description
                "List of QPPB statistics.";
              list query-statistic {
                key "if-name slot-id direction";
                config false;
                description "QPPB statistics.";
                leaf if-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description
                    "Outbound interface name.";
                }
    
                leaf slot-id {
                  type string {
                    length "1..127";
                    pattern '(c[cl]c\d+/)?\d+';
                  }
                  config false;
                  description "Slot ID.";
                }
    
                leaf direction {
                  type qppb-direction-type;
                  config false;
                  description "Direction.";
                }
    
                leaf local-id {
                  type uint32 {
                    range "1..255";
                  }
                  config false;
                  description "Local ID.";
                }
    
                leaf match-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description "Match packets.";
                }
    
                leaf match-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "Match bytes.";
                }
    
                leaf match-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "Passed packets rate.";
                }
    
                leaf match-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description
                    "Passed bytes rate.";
                }
    
                leaf passed-car-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "Passed packets by CAR.";
                }
    
                leaf passed-car-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description
                    "Passed bytes by CAR.";
                }
    
                leaf dropped-car-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "Dropped packets by CAR.";
                }
    
                leaf dropped-car-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description
                    "Dropped bytes by CAR.";
                }
    
                leaf passed-car-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "Passed packets rate by CAR.";
                }
    
                leaf passed-car-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description
                    "Passed bytes rate by CAR.";
                }
    
                leaf dropped-car-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "Dropped packets rate by CAR.";
                }
    
                leaf dropped-car-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description
                    "Dropped bytes rate by CAR.";
                }
    
                leaf car-green-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "CAR green packets.";
                }
    
                leaf car-green-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "CAR green bytes.";
                }
    
                leaf car-green-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "CAR green packets rate.";
                }
    
                leaf car-green-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description
                    "CAR green bytes rate.";
                }
    
                leaf car-yellow-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "CAR yellow packets.";
                }
    
                leaf car-yellow-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description
                    "CAR yellow bytes.";
                }
    
                leaf car-yellow-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "CAR yellow packets rate.";
                }
    
                leaf car-yellow-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description
                    "CAR yellow bytes rate.";
                }
    
                leaf car-red-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description "CAR red packets.";
                }
    
                leaf car-red-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "CAR red bytes.";
                }
    
                leaf car-red-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "CAR red packets rate.";
                }
    
                leaf car-red-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description
                    "CAR red bytes rate.";
                }
    
                leaf passed-sq-be-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description "BE Pass packets.";
                }
    
                leaf dropped-sq-be-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description "BE Drop packets.";
                }
    
                leaf passed-sq-af1-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF1 Pass packets.";
                }
    
                leaf dropped-sq-af1-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF1 Drop packets.";
                }
    
                leaf passed-sq-af2-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF2 Pass packets.";
                }
    
                leaf dropped-sq-af2-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF2 Drop packets.";
                }
    
                leaf passed-sq-af3-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF3 Pass packets.";
                }
    
                leaf dropped-sq-af3-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF3 Drop packets.";
                }
    
                leaf passed-sq-af4-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF4 Pass packets.";
                }
    
                leaf dropped-sq-af4-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "AF4 Drop packets.";
                }
    
                leaf passed-sq-ef-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description "EF Pass packets.";
                }
    
                leaf dropped-sq-ef-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description "EF Drop packets.";
                }
    
                leaf passed-sq-cs6-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "CS6 Pass packets.";
                }
    
                leaf dropped-sq-cs6-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "CS6 Drop packets.";
                }
    
                leaf passed-sq-cs7-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "CS7 Pass packets.";
                }
    
                leaf dropped-sq-cs7-packets {
                  type uint64;
                  units "packet";
                  config false;
                  description
                    "CS7 Drop packets.";
                }
    
                leaf passed-sq-be-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "BE Pass Bytes.";
                }
    
                leaf dropped-sq-be-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "BE Drop Bytes.";
                }
    
                leaf passed-sq-af1-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF1 Pass Bytes.";
                }
    
                leaf dropped-sq-af1-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF1 Drop Bytes.";
                }
    
                leaf passed-sq-af2-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF2 Pass Bytes.";
                }
    
                leaf dropped-sq-af2-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF2 Drop Bytes.";
                }
    
                leaf passed-sq-af3-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF3 Pass Bytes.";
                }
    
                leaf dropped-sq-af3-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF3 Drop Bytes.";
                }
    
                leaf passed-sq-af4-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF4 Pass Bytes.";
                }
    
                leaf dropped-sq-af4-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "AF4 Drop Bytes.";
                }
    
                leaf passed-sq-ef-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "EF Pass Bytes.";
                }
    
                leaf dropped-sq-ef-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "EF Drop Bytes.";
                }
    
                leaf passed-sq-cs6-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "CS6 Pass Bytes.";
                }
    
                leaf dropped-sq-cs6-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "CS6 Drop Bytes.";
                }
    
                leaf passed-sq-cs7-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "CS7 Pass Bytes.";
                }
    
                leaf dropped-sq-cs7-bytes {
                  type uint64;
                  units "Byte";
                  config false;
                  description "CS7 Drop Bytes.";
                }
    
                leaf passed-sq-be-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "BE Pass Bytes.";
                }
    
                leaf dropped-sq-be-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "BE Drop Bytes.";
                }
    
                leaf passed-sq-af1-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF1 Pass Bytes.";
                }
    
                leaf dropped-sq-af1-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF1 Drop Bytes.";
                }
    
                leaf passed-sq-af2-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF2 Pass Bytes.";
                }
    
                leaf dropped-sq-af2-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF2 Drop Bytes.";
                }
    
                leaf passed-sq-af3-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF3 Pass Bytes.";
                }
    
                leaf dropped-sq-af3-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF3 Drop Bytes.";
                }
    
                leaf passed-sq-af4-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF4 Pass Bytes.";
                }
    
                leaf dropped-sq-af4-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "AF4 Drop Bytes.";
                }
    
                leaf passed-sq-ef-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "EF Pass Bytes.";
                }
    
                leaf dropped-sq-ef-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "EF Drop Bytes.";
                }
    
                leaf passed-sq-cs6-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "CS6 Pass Bytes.";
                }
    
                leaf dropped-sq-cs6-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "CS6 Drop Bytes.";
                }
    
                leaf passed-sq-cs7-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "CS7 Pass Bytes.";
                }
    
                leaf dropped-sq-cs7-bytes-rate {
                  type uint64;
                  units "Byte/s";
                  config false;
                  description "CS7 Drop Bytes.";
                }
    
                leaf passed-sq-be-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description "BE Pass packets.";
                }
    
                leaf dropped-sq-be-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description "BE Drop packets.";
                }
    
                leaf passed-sq-af1-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF1 Pass packets.";
                }
    
                leaf dropped-sq-af1-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF1 Drop packets.";
                }
    
                leaf passed-sq-af2-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF2 Pass packets.";
                }
    
                leaf dropped-sq-af2-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF2 Drop packets.";
                }
    
                leaf passed-sq-af3-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF3 Pass packets.";
                }
    
                leaf dropped-sq-af3-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF3 Drop packets.";
                }
    
                leaf passed-sq-af4-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF4 Pass packets.";
                }
    
                leaf dropped-sq-af4-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "AF4 Drop packets.";
                }
    
                leaf passed-sq-ef-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description "EF Pass packets.";
                }
    
                leaf dropped-sq-ef-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description "EF Drop packets.";
                }
    
                leaf passed-sq-cs6-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "CS6 Pass packets.";
                }
    
                leaf dropped-sq-cs6-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "CS6 Drop packets.";
                }
    
                leaf passed-sq-cs7-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "CS7 Pass packets.";
                }
    
                leaf dropped-sq-cs7-packets-rate {
                  type uint64;
                  units "pps";
                  config false;
                  description
                    "CS7 Drop packets.";
                }
              }  // list query-statistic
            }  // container query-statistics
          }  // container qppb
        }  // 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
      }  // module huawei-qos
    

© 2023 YumaWorks, Inc. All rights reserved.