huawei-nqa

Network quality analysis.

  • Version: 2021-04-29

    huawei-nqa@2021-04-29


    
      module huawei-nqa {
    
        yang-version 1;
    
        namespace "urn:huawei:yang:huawei-nqa";
    
        prefix nqa;
    
        import huawei-pub-type {
          prefix pub-type;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-ifm-trunk {
          prefix ifm-trunk;
        }
    
        include huawei-nqa-type;
        include huawei-nqa-global;
        include huawei-nqa-server;
        include huawei-nqa-instance;
        include huawei-nqa-reflector;
        include huawei-nqa-record;
        include huawei-nqa-test-flow;
    
        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 "Network quality analysis.";
    
        revision "2021-04-29" {
          description
            "Add ethernet-service test instance and test flow and ethernet-service-results. Modify reflector.";
          reference
            "Huawei private.";
    
        }
    
        revision "2021-03-19" {
          description
            "Modify default-value of probe-count, jitter-packet-num, and data-size in a jitter test instance.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-09-24" {
          description
            "Add MAC ping test instance and modify jitter-results.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-07-04" {
          description "Add BIER IPv6 OAM.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-06-30" {
          description
            "Add rpc for nqa execution policy.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-10-25" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "sla";
    
        container nqa {
          description
            "Network quality analysis (NQA) service.";
          container global {
            description
              "Configure NQA global configuration.";
            leaf fec-validation-ldp-enable {
              type boolean;
              default "true";
              description
                "Enable/disable LDP FEC validation.";
            }
    
            leaf fec-validation-sr-prefix-enable {
              type boolean;
              default "true";
              description
                "Enable/disable sr-prefix FEC validation.";
            }
    
            leaf lspv-cpu-limit {
              type uint16 {
                range "10..65535";
              }
              default "1000";
              description "Lspv cpu limit.";
            }
    
            leaf jitter-tag-version {
              type uint32 {
                range "1..2";
              }
              default "1";
              description
                "Version number of jitter.";
            }
    
            leaf lbm-receive-enable {
              type boolean;
              default "true";
              description
                "Enable/disable a device from receiving LBM packets.";
            }
    
            leaf ltm-receive-enable {
              type boolean;
              default "true";
              description
                "Enable/disable a device from receiving LTM packets.";
            }
    
            leaf gmac-ltm-receive-enable {
              type boolean;
              default "true";
              description
                "Enable/disable a device from receiving GMAC-LTM packets.";
            }
    
            leaf lspv-enable {
              type boolean;
              default "true";
              description
                "Enable/disable a device to respond to MPLS echo request packets.";
            }
    
            leaf lspv-ipv6-enable {
              type boolean;
              default "true";
              description
                "Enable/disable a device to respond to MPLS echo request IPv6 packets.";
            }
    
            leaf lspv-fec-compitable-enable {
              type boolean;
              default "false";
              description
                "Enable/disable the LSPV's compatibility function, and reply response packets don't carry FEC information.";
            }
    
            leaf gmac-ping-enable {
              type boolean;
              default "false";
              description
                "Enable/disable general GMAC ping function.";
            }
    
            leaf gmac-trace-enable {
              type boolean;
              default "false";
              description
                "Enable/disable general GMAC trace function.";
            }
    
            leaf test-max-flow-id {
              type uint16;
              config false;
              description
                "Maximum NQA test flow ID.";
            }
    
            leaf reflector-max-id {
              type uint32;
              config false;
              description
                "Maximum NQA reflector ID.";
            }
    
            container vxlan-echo-v4 {
              presence
                "If enabled vxlan echo IPv4";
              description
                "Enable/disable NQA VXLANECHO.";
              leaf port {
                type uint16 {
                  range "1..65535";
                }
                mandatory true;
                description
                  "Port of NQA VXLANECHO server.";
              }
    
              leaf source-ip-if-name {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'LoopBack'";
                description
                  "Source IP interface of VXLANECHO.";
              }
            }  // container vxlan-echo-v4
    
            container bier6-oam {
              description
                "Configure BIER IPv6 OAM.";
              leaf dest-port {
                type uint16 {
                  range "1..65535";
                }
                default "49100";
                description
                  "Destination UDP port of BIER IPv6 echo packet.";
              }
    
              leaf echo-reply-disable {
                type boolean;
                default "false";
                description
                  "Enable/disable BIER IPv6 reply function.";
              }
    
              leaf rate-limit {
                type uint16 {
                  range "10..65535";
                }
                units "pps";
                default "1000";
                description
                  "BIER IPv6 receive rate limit.";
              }
            }  // container bier6-oam
          }  // container global
    
          container server {
            description
              "Configure NQA server list.";
            container icmp-servers {
              description
                "List of NQA ICMP server list.";
              list icmp-server {
                key "server-address ni-name";
                description
                  "Configure NQA ICMP server.";
                leaf server-address {
                  type inet:ip-address-no-zone;
                  description
                    "IP address of NQA ICMP server.";
                }
    
                leaf ni-name {
                  type leafref {
                    path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                  }
                  description
                    "VPN name of NQA ICMP server.";
                }
              }  // list icmp-server
            }  // container icmp-servers
    
            container udp-servers {
              description
                "List of NQA UDP server list.";
              list udp-server {
                key "server-address server-port ni-name";
                description
                  "Configure NQA UDP server.";
                leaf server-address {
                  type inet:ip-address-no-zone;
                  description
                    "IP address of NQA UDP server.";
                }
    
                leaf server-port {
                  type uint16 {
                    range "1..65535";
                  }
                  description
                    "Port of NQA UDP server.";
                }
    
                leaf ni-name {
                  type leafref {
                    path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                  }
                  description
                    "VPN name of NQA UDP server.";
                }
              }  // list udp-server
            }  // container udp-servers
    
            container tcp-servers {
              description
                "List of NQA TCP server list.";
              list tcp-server {
                key "server-address server-port ni-name";
                description
                  "Configure NQA TCP server.";
                leaf server-address {
                  type inet:ip-address-no-zone;
                  description
                    "IP address of NQA TCP server.";
                }
    
                leaf server-port {
                  type uint16 {
                    range "1..65535";
                  }
                  description
                    "Port of NQA TCP server.";
                }
    
                leaf ni-name {
                  type leafref {
                    path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                  }
                  description
                    "VPN name of NQA TCP server.";
                }
              }  // list tcp-server
            }  // container tcp-servers
          }  // container server
    
          container testflows {
            description
              "Configure test flow list.";
            list test-flow {
              must
                "(ce-vid and pe-vid) or (not(ce-vid) and not(pe-vid))";
              must
                "(color-aware-green-8021p and color-aware-yellow-8021p) or (not(color-aware-green-8021p) and not(color-aware-yellow-8021p))";
              must
                "(color-aware-green-dscp and color-aware-yellow-dscp) or (not(color-aware-green-dscp) and not(color-aware-yellow-dscp))";
              must
                "(end-dest-port and (end-dest-port - dest-port) > 0 and (end-dest-port - dest-port) < 128) or not(end-dest-port)";
              must
                "(end-src-port  and (end-src-port  - src-port)  > 0 and (end-src-port  - src-port)  < 128) or not(end-src-port)";
              must
                "(end-vlan-id   and (end-vlan-id   - vlan-id)   > 0 and (end-vlan-id   - vlan-id)   < 128) or not(end-vlan-id)";
              must
                "(end-ce-vid    and (end-ce-vid    - ce-vid)    > 0 and (end-ce-vid    - ce-vid)    < 128) or not(end-ce-vid)";
              must
                "(end-color-aware-green-8021p  and end-color-aware-green-8021p  > color-aware-green-8021p)  or not(end-color-aware-green-8021p)";
              must
                "(end-color-aware-yellow-8021p and end-color-aware-yellow-8021p > color-aware-yellow-8021p) or not(end-color-aware-yellow-8021p)";
              must
                "(end-color-aware-green-dscp   and end-color-aware-green-dscp   > color-aware-green-dscp)   or not(end-color-aware-green-dscp)";
              must
                "(end-color-aware-yellow-dscp  and end-color-aware-yellow-dscp  > color-aware-yellow-dscp)  or not(end-color-aware-yellow-dscp)";
              must
                "(end-color-blind-8021p        and end-color-blind-8021p        > color-blind-8021p)        or not(end-color-blind-8021p)";
              must
                "(end-color-blind-dscp         and end-color-blind-dscp         > color-blind-dscp)         or not(end-color-blind-dscp)";
              must
                "(flr and ftd and fdv) or (not(flr) and not(ftd) and not(fdv))";
              key "test-flow-id";
              description
                "Configure NQA test flow.";
              leaf test-flow-id {
                type uint16 {
                  range "1..65535";
                }
                description "ID of a test flow.";
              }
    
              leaf dest-mac {
                type pub-type:mac-address;
                default "0000-0000-0000";
                description
                  "Start destination MAC address.";
              }
    
              leaf src-mac {
                type pub-type:mac-address;
                default "0000-0000-0000";
                description
                  "Start source MAC address.";
              }
    
              leaf dest-ipv4 {
                type inet:ipv4-address-no-zone;
                default "0.0.0.0";
                description
                  "Start destination IPv4 address.";
              }
    
              leaf src-ipv4 {
                type inet:ipv4-address-no-zone;
                default "0.0.0.0";
                description
                  "Start source IP address.";
              }
    
              leaf dest-port {
                type uint16 {
                  range "7|1025..65535";
                }
                default "7";
                description
                  "Start destination UDP port.";
              }
    
              leaf src-port {
                type uint16 {
                  range "1025..65535";
                }
                default "49184";
                description
                  "Start source UDP port.";
              }
    
              choice vlan-tag-config {
                description
                  "VLAN configuration selection. One VLAN tag or two VLAN tags can be configured.";
                case one-vlan-tag {
                  description
                    "One VLAN tag can be configured.";
                  leaf vlan-id {
                    type uint16 {
                      range "1..4094";
                    }
                    description "Begin VLAN ID.";
                  }
                }  // case one-vlan-tag
    
                case two-vlan-tag {
                  description
                    "Two VLAN tags can be configured.";
                  leaf ce-vid {
                    type uint16 {
                      range "1..4094";
                    }
                    description
                      "Begin CE VLAN ID.";
                  }
    
                  leaf pe-vid {
                    type uint16 {
                      range "1..4094";
                    }
                    description "PE VLAN ID.";
                  }
                }  // case two-vlan-tag
              }  // choice vlan-tag-config
    
              choice color-mode {
                description
                  "Color mode of a test flow.";
                case color-blind {
                  description
                    "The color mode is color blind.";
                  choice blind-priority-type {
                    description
                      "The priority type when color mode is color-blind.";
                    case blind-priority-8021p {
                      description
                        "The priority type is 802.1p.";
                      leaf color-blind-8021p {
                        type uint8 {
                          range "0..7";
                        }
                        description
                          "The start 802.1p priority when color mode is color-blind.";
                      }
                    }  // case blind-priority-8021p
    
                    case blind-priority-dscp {
                      description
                        "The priority type is DSCP.";
                      leaf color-blind-dscp {
                        type uint8 {
                          range "0..63";
                        }
                        description
                          "The start DSCP priority when color mode is color-blind.";
                      }
                    }  // case blind-priority-dscp
                  }  // choice blind-priority-type
                }  // case color-blind
    
                case color-aware {
                  description
                    "The color mode is color aware.";
                  choice aware-priority-type {
                    description
                      "The priority type when color mode is color-aware.";
                    case aware-priority-8021p {
                      description
                        "The priority type is 802.1p.";
                      leaf color-aware-green-8021p {
                        type uint8 {
                          range "0..7";
                        }
                        description
                          "The start 802.1p priority of green packets when the color mode is color-aware.";
                      }
    
                      leaf color-aware-yellow-8021p {
                        type uint8 {
                          range "0..7";
                        }
                        description
                          "The start 802.1p priority of yellow packets when the color mode is color-aware.";
                      }
                    }  // case aware-priority-8021p
    
                    case aware-priority-dscp {
                      description
                        "The priority type is DSCP.";
                      leaf color-aware-green-dscp {
                        type uint8 {
                          range "0..63";
                        }
                        description
                          "The start DSCP priority of green packets when the color mode is color-aware.";
                      }
    
                      leaf color-aware-yellow-dscp {
                        type uint8 {
                          range "0..63";
                        }
                        description
                          "The start DSCP priority of yellow packets when the color mode is color-aware.";
                      }
                    }  // case aware-priority-dscp
                  }  // choice aware-priority-type
                }  // case color-aware
              }  // choice color-mode
    
              choice range-type {
                description "Range type.";
                case dest-mac {
                  description
                    "The destination MAC address will be set to a range.";
                  choice dest-mac-range-type {
                    description
                      "Destination MAC range type.";
                    case end-dest-mac {
                      description
                        "End destination MAC address.";
                      leaf end-dest-mac {
                        type pub-type:mac-address;
                        description
                          "End destination MAC address.";
                      }
                    }  // case end-dest-mac
    
                    case increment-dest-mac {
                      description
                        "The incremental range of destination MAC addresses.";
                      leaf dest-mac-mask {
                        type pub-type:mac-address;
                        description
                          "The mask of destination MAC address. After conversion to binary, the positions of 1s must be consecutive, and the number of consecutive 1s cannot be less than 1 or greater than 32.";
                      }
    
                      leaf dest-mac-increment-step {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment step.";
                      }
    
                      leaf dest-mac-increment-count {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment count.";
                      }
                    }  // case increment-dest-mac
                  }  // choice dest-mac-range-type
                }  // case dest-mac
    
                case source-mac {
                  description
                    "The source MAC address will be set to a range.";
                  choice src-mac-range-type {
                    description
                      "Source MAC range type.";
                    case end-src-mac {
                      description
                        "End source MAC address.";
                      leaf end-src-mac {
                        type pub-type:mac-address;
                        description
                          "End source MAC address.";
                      }
                    }  // case end-src-mac
    
                    case increment-src-mac {
                      description
                        "The incremental range of source MAC addresses.";
                      leaf src-mac-mask {
                        type pub-type:mac-address;
                        description
                          "The mask of source MAC address. After conversion to binary, the positions of 1s must be consecutive, and the number of consecutive 1s cannot be less than 1 or greater than 32.";
                      }
    
                      leaf src-mac-increment-step {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment step.";
                      }
    
                      leaf src-mac-increment-count {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment count.";
                      }
                    }  // case increment-src-mac
                  }  // choice src-mac-range-type
                }  // case source-mac
    
                case dest-ipv4 {
                  description
                    "The destination IPv4 address will be set to a range.";
                  choice dest-ipv4-range-type {
                    description
                      "Destination IPv4 range type.";
                    case end-dest-ipv4 {
                      description
                        "End destination IPv4 address.";
                      leaf end-dest-ipv4 {
                        type inet:ipv4-address-no-zone;
                        description
                          "End destination IPv4 address.";
                      }
                    }  // case end-dest-ipv4
    
                    case increment-dest-ipv4 {
                      description
                        "The incremental range of destination IPv4 addresses.";
                      leaf dest-ipv4-mask {
                        type inet:ipv4-address-no-zone;
                        description
                          "The mask of destination IPv4 address. After conversion to binary, the positions of 1s must be consecutive, and the number of consecutive 1s cannot be less than 1 or greater than 32.";
                      }
    
                      leaf dest-ipv4-increment-step {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment step.";
                      }
    
                      leaf dest-ipv4-increment-count {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment count.";
                      }
                    }  // case increment-dest-ipv4
                  }  // choice dest-ipv4-range-type
                }  // case dest-ipv4
    
                case source-ipv4 {
                  description
                    "The source IPv4 address will be set to a range.";
                  choice src-ipv4-range-type {
                    description
                      "Source IPv4 range type.";
                    case end-src-ipv4 {
                      description
                        "End source IPv4 address.";
                      leaf end-src-ipv4 {
                        type inet:ipv4-address-no-zone;
                        description
                          "End source IPv4 address.";
                      }
                    }  // case end-src-ipv4
    
                    case increment-src-ipv4 {
                      description
                        "The incremental range of source IPv4 addresses.";
                      leaf src-ipv4-mask {
                        type inet:ipv4-address-no-zone;
                        description
                          "The mask of source IPv4 address. After conversion to binary, the positions of 1s must be consecutive, and the number of consecutive 1s cannot be less than 1 or greater than 32.";
                      }
    
                      leaf src-ipv4-increment-step {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment step.";
                      }
    
                      leaf src-ipv4-increment-count {
                        type uint8 {
                          range "1..128";
                        }
                        description
                          "Increment count.";
                      }
                    }  // case increment-src-ipv4
                  }  // choice src-ipv4-range-type
                }  // case source-ipv4
    
                case dest-port {
                  description
                    "The destination UDP port will be set to a range.";
                  leaf end-dest-port {
                    type uint16 {
                      range "1025..65535";
                    }
                    description
                      "End destination UDP port.";
                  }
                }  // case dest-port
    
                case source-port {
                  description
                    "The source UDP port will be set to a range.";
                  leaf end-src-port {
                    type uint16 {
                      range "1025..65535";
                    }
                    description
                      "End source UDP port.";
                  }
                }  // case source-port
    
                case vlan-id {
                  description
                    "The VLAN ID will be set to a range.";
                  leaf end-vlan-id {
                    when "../vlan-id";
                    type uint16 {
                      range "1..4094";
                    }
                    description
                      "End CE VLAN ID.";
                  }
                }  // case vlan-id
    
                case ce-vid {
                  description
                    "The CE VLAN ID will be set to a range.";
                  leaf end-ce-vid {
                    when "../ce-vid";
                    type uint16 {
                      range "1..4094";
                    }
                    description
                      "End CE VLAN ID.";
                  }
                }  // case ce-vid
    
                case color-blind-8021p {
                  description
                    "The 802.1p priority value in color-blind mode will be set to a range.";
                  leaf end-color-blind-8021p {
                    when "../color-blind-8021p";
                    type uint8 {
                      range "0..7";
                    }
                    description
                      "The end 802.1p priority when color mode is color-blind.";
                  }
                }  // case color-blind-8021p
    
                case color-blind-dscp {
                  description
                    "The DSCP priority value in color-blind mode will be set to a range.";
                  leaf end-color-blind-dscp {
                    when "../color-blind-dscp";
                    type uint8 {
                      range "0..63";
                    }
                    description
                      "The end dscp priority when color mode is color-blind.";
                  }
                }  // case color-blind-dscp
    
                case color-aware-8021p {
                  description
                    "The 802.1p priority value in color-aware mode will be set to a range.";
                  leaf end-color-aware-green-8021p {
                    when
                      "../color-aware-green-8021p";
                    type uint8 {
                      range "0..7";
                    }
                    description
                      "The end 802.1p priority of green packets when color mode is color-aware.";
                  }
    
                  leaf end-color-aware-yellow-8021p {
                    when
                      "../color-aware-yellow-8021p";
                    type uint8 {
                      range "0..7";
                    }
                    description
                      "The end 802.1p priority of yellow packets when color mode is color-aware.";
                  }
                }  // case color-aware-8021p
    
                case color-aware-dscp {
                  description
                    "The DSCP priority value in color-aware mode will be set to a range.";
                  leaf end-color-aware-green-dscp {
                    when
                      "../color-aware-green-dscp";
                    type uint8 {
                      range "0..63";
                    }
                    description
                      "The end DSCP priority of green packets when color mode is color-aware.";
                  }
    
                  leaf end-color-aware-yellow-dscp {
                    when
                      "../color-aware-yellow-dscp";
                    type uint8 {
                      range "0..63";
                    }
                    description
                      "The end DSCP priority of yellow packets when color mode is color-aware.";
                  }
                }  // case color-aware-dscp
              }  // choice range-type
    
              leaf cir {
                type uint32 {
                  range "8..10000000";
                }
                units "kbit/s";
                description
                  "Committed information rate.";
              }
    
              leaf eir {
                when "../cir";
                type uint32 {
                  range "1..10000000";
                }
                units "kbit/s";
                description
                  "Excess information rate.";
              }
    
              leaf flr {
                type uint32 {
                  range "0..100000";
                }
                units "0.001 %";
                description
                  "Value of frame loss rate in per 100000.";
              }
    
              leaf ftd {
                type uint32 {
                  range "1..10000000";
                }
                units "us";
                description
                  "Frame transmission delay.";
              }
    
              leaf fdv {
                type uint32 {
                  range "1..10000000";
                }
                units "us";
                description
                  "Frame delay variation.";
              }
    
              leaf cir-simple-test {
                type boolean;
                default "false";
                description
                  "Enable/disable a simple CIR test.";
              }
    
              leaf traffic-policing-test {
                type boolean;
                default "false";
                description
                  "Enable/disable traffic policing test.";
              }
    
              leaf description {
                type string {
                  length "1..127";
                }
                description
                  "Description of a test flow.";
              }
            }  // list test-flow
          }  // container testflows
    
          container reflectors {
            description
              "Configure reflector list.";
            list reflector {
              must
                "(ce-vlan and pe-vlan) or (not(ce-vlan) and not(pe-vlan))";
              key "reflector-id";
              max-elements 1024;
              description
                "Configure reflector table.";
              leaf reflector-id {
                type uint32 {
                  range "1..65535";
                }
                description "Reflector ID.";
              }
    
              leaf if-name {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                must
                  "(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Virtual-Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Pos' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Global-VE') or ((/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ip-Trunk') and not(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm-trunk:trunk/ifm-trunk:members/ifm-trunk:member/ifm-trunk:name))";
                mandatory true;
                description
                  "Reflector interface name.";
              }
    
              choice reflect-type {
                default "general-flow";
                description "Reflector type.";
                case interface-exclusive {
                  description
                    "Specify the exclusive mode on an interface.";
                  leaf exclusive {
                    type exclusive-mode-type;
                    description
                      "Specify the exclusive mode on an interface.";
                  }
                }  // case interface-exclusive
    
                case general-flow {
                  description
                    "Reflects packets based on the packet content.";
                  leaf reflector-type {
                    type reflect-type;
                    default "flow-general";
                    status deprecated;
                    description
                      "Reflector type.";
                  }
    
                  choice address {
                    description
                      "Reflector address.";
                    case ipv4-address {
                      description
                        "Reflector IPv4 address.";
                      leaf ipv4-address {
                        type valid-abc-ipv4-address;
                        description
                          "Reflector IPv4 address.";
                      }
                    }  // case ipv4-address
    
                    case simulate-ipv4-address {
                      description
                        "Reflector simulate IPv4 address.";
                      leaf simulate-ipv4-address {
                        type valid-abc-ipv4-address;
                        description
                          "Reflector simulate IPv4 address.";
                      }
                    }  // case simulate-ipv4-address
    
                    case mac-address {
                      description
                        "Reflector MAC address.";
                      leaf mac-address {
                        type unicast-mac-address;
                        description
                          "Reflector MAC address.";
                      }
                    }  // case mac-address
                  }  // choice address
    
                  choice vlan-tag-config {
                    description
                      "VLAN configuration selection. One VLAN tag or two VLAN tags can be configured.";
                    case one-vlan-tag {
                      description
                        "One VLAN tag can be configured.";
                      leaf vlan-id {
                        type uint16 {
                          range "1..4094";
                        }
                        description
                          "Reflector VLAN ID.";
                      }
                    }  // case one-vlan-tag
    
                    case two-vlan-tag {
                      description
                        "Two VLAN tags can be configured.";
                      leaf ce-vlan {
                        type uint16 {
                          range "1..4094";
                        }
                        description
                          "Reflector CE VLAN ID.";
                      }
    
                      leaf pe-vlan {
                        type uint16 {
                          range "1..4094";
                        }
                        description
                          "Reflector PE VLAN ID.";
                      }
                    }  // case two-vlan-tag
                  }  // choice vlan-tag-config
    
                  leaf source-port {
                    type uint16 {
                      range "0..65535";
                    }
                    default "49184";
                    description
                      "Reflector source port.";
                  }
    
                  leaf dest-port {
                    type uint16 {
                      range "0..65535";
                    }
                    default "7";
                    description
                      "Reflector destination port.";
                  }
    
                  leaf share-mode {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable the share mode on the reflector.";
                  }
                }  // case general-flow
    
                case test-flow {
                  description
                    "Reflects packets based on test flows.";
                  leaf-list test-flow-id {
                    type leafref {
                      path "../../../testflows/test-flow/test-flow-id";
                    }
                    max-elements 16;
                    description
                      "Configure the ID of the test flow bound to the reflector.";
                  }
                }  // case test-flow
              }  // choice reflect-type
    
              leaf exchange-port {
                type boolean;
                default "false";
                description
                  "Enable/disable reflector UDP port exchange.";
              }
    
              leaf end-time {
                type yang:date-and-time;
                mandatory true;
                description
                  "Absolute time of reflector aging, the value must not be earlier than the current system time plus 10s or later than the current system time plus 173400s.";
              }
    
              leaf survival-time {
                type uint32;
                units "s";
                config false;
                description
                  "Reflector survival time.";
              }
    
              leaf recommended-test-mac {
                type pub-type:mac-address;
                config false;
                description
                  "Reflector recommended MAC address.";
              }
            }  // list reflector
          }  // container reflectors
    
          container instances {
            description
              "Configure NQA test instance list.";
            list instance {
              key "admin-name test-name";
              description
                "Configure test instance.";
              leaf admin-name {
                type string {
                  length "1..32";
                }
                description
                  "Administrator name.";
              }
    
              leaf test-name {
                type string {
                  length "1..32";
                }
                description "Test name.";
              }
    
              choice type {
                description
                  "The test type of instance.";
                case icmp {
                  description "ICMP NQA test.";
                  container icmp-input {
                    must
                      "not(ipv4-next-hop and (ni-name != '_public_' or fwd-if-name or path-type = 'bypass'))";
                    must
                      "not(ipv6-next-hop and (ni-name != '_public_' or fwd-if-name or path-type = 'bypass'))";
                    must
                      "not(path-type = 'bypass' and (pass-route = 'true' or fwd-if-name or ipv6-dest-address or ipv6-source-address or ipv6-next-hop))";
                    must
                      "not(pass-route = 'true' and fwd-if-name)";
                    must
                      "not(out-if-name and fwd-if-name)";
                    presence
                      "ICMP PING test instance.";
                    description
                      "Enable/disable ICMP test instance input.";
                    choice address {
                      description
                        "Address information.";
                      case ipv4-address {
                        description
                          "IPv4 address.";
                        leaf ipv4-dest-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Destination IPv4 address.";
                        }
    
                        leaf ipv4-source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source IPv4 address.";
                        }
    
                        leaf ipv4-next-hop {
                          type inet:ipv4-address-no-zone;
                          description
                            "IPv4 next hop address.";
                        }
                      }  // case ipv4-address
    
                      case ipv6-address {
                        description
                          "IPv6 address.";
                        leaf ipv6-dest-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Destination IPv6 address.";
                        }
    
                        leaf ipv6-source-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Source IPv6 address.";
                        }
    
                        leaf ipv6-next-hop {
                          type inet:ipv6-address-no-zone;
                          description
                            "IPv6 next hop address.";
                        }
                      }  // case ipv6-address
                    }  // choice address
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf out-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
                      description
                        "Out interface name.";
                    }
    
                    leaf fwd-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-Ethernet' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'MTunnel' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Tunnel' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'LoopBack' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Vbdif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Serial' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Mp-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Mp-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Trunk-Serial' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-VE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
                      description
                        "Simulated inbound-interface name.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "4";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Indicates the packet loss ratio threshold of an NQA test instance. If the packet loss ratio exceeds the threshold, the test fails.";
                    }
    
                    leaf data-size {
                      type uint32 {
                        range "0..8100";
                      }
                      units "Byte";
                      default "0";
                      description "Packet size.";
                    }
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "Time to live.";
                    }
    
                    leaf pass-route {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the function of sending packets without searching for routes.";
                    }
    
                    leaf probe-fails {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of probe failures of an NQA test to send trap or events.";
                    }
    
                    leaf test-fails {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                        bit probefailure {
                          position 31;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the destination exceeds the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf compatibility {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable compatibility mode. When the ptn79 interworks with the ptn39, the no result is converted to failed and success.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf path-type {
                      type path-type;
                      description "Path type.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    choice priority {
                      default "tos-value";
                      description
                        "Priority type.";
                      case tos-value {
                        description "ToS value.";
                        leaf tos {
                          type uint16 {
                            range "0..255";
                          }
                          default "0";
                          description "ToS.";
                        }
                      }  // case tos-value
    
                      case dscp-value {
                        description
                          "DSCP value.";
                        leaf dscp {
                          type uint32 {
                            range "0..63";
                          }
                          description
                            "DSCP value.";
                        }
                      }  // case dscp-value
                    }  // choice priority
                  }  // container icmp-input
                }  // case icmp
    
                case trace {
                  description "TRACE NQA test.";
                  container trace-input {
                    must "first-ttl<=max-ttl";
                    must
                      "not(non-fragment = 'true' and (ipv6-dest-address or ipv6-source-address))";
                    presence
                      "Present enable trace test instance input.";
                    description
                      "Enable/disable trace test instance input.";
                    choice address {
                      description
                        "Address information.";
                      case ipv4-address {
                        description
                          "IPv4 address.";
                        leaf ipv4-dest-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Destination IPv4 address.";
                        }
    
                        leaf ipv4-source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source IPv4 address.";
                        }
    
                        leaf ipv4-next-hop {
                          type inet:ipv4-address-no-zone;
                          description
                            "IPv4 next hop address.";
                        }
                      }  // case ipv4-address
    
                      case ipv6-address {
                        description
                          "IPv6 address.";
                        leaf ipv6-dest-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Destination IPv6 address.";
                        }
    
                        leaf ipv6-source-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Source IPv6 address.";
                        }
    
                        leaf ipv6-next-hop {
                          type inet:ipv6-address-no-zone;
                          description
                            "IPv6 next hop address.";
                        }
                      }  // case ipv6-address
                    }  // choice address
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf first-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "1";
                      description
                        "Start TTL of probe packet.";
                    }
    
                    leaf max-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "Maximum TTL of probe packet.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf data-size {
                      type uint32 {
                        range "0..8100";
                      }
                      units "Byte";
                      default "0";
                      description "Packet size.";
                    }
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "60..604800";
                      }
                      description
                        "Cyclic scheduling period of test cases.";
                    }
    
                    choice priority {
                      default "tos-value";
                      description
                        "Priority type.";
                      case tos-value {
                        description "ToS value.";
                        leaf tos {
                          type uint16 {
                            range "0..255";
                          }
                          default "0";
                          description "ToS.";
                        }
                      }  // case tos-value
    
                      case dscp-value {
                        description
                          "DSCP value.";
                        leaf dscp {
                          type uint32 {
                            range "0..63";
                          }
                          description
                            "DSCP value.";
                        }
                      }  // case dscp-value
                    }  // choice priority
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf dest-port {
                      type uint16 {
                        range "1..65535";
                      }
                      default "33434";
                      description
                        "TRACE destination port number.";
                    }
    
                    leaf hop-fail-times {
                      type uint32 {
                        range "1..255";
                      }
                      default "5";
                      description
                        "The times of hop failure.";
                    }
    
                    leaf pass-route {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the function of sending packets without searching for routes.";
                    }
    
                    leaf out-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
                      description
                        "Out interface name.";
                    }
    
                    leaf test-fail-times {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf non-fragment {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the mark of message no fragment.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
                  }  // container trace-input
                }  // case trace
    
                case udp {
                  description "UDP NQA test.";
                  container udp-input {
                    must
                      "not((pass-route = 'true' and ipv6-dest-address) or (pass-route = 'true' and ipv6-source-address))";
                    presence
                      "Present enable UDP test instance input.";
                    description
                      "Enable/disable UDP test instance input.";
                    choice address {
                      description
                        "Address information.";
                      case ipv4-address {
                        description
                          "IPv4 address.";
                        leaf ipv4-dest-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Destination IPv4 address.";
                        }
    
                        leaf ipv4-source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source IPv4 address.";
                        }
                      }  // case ipv4-address
    
                      case ipv6-address {
                        description
                          "IPv6 address.";
                        leaf ipv6-dest-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Destination IPv6 address.";
                        }
    
                        leaf ipv6-source-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Source IPv6 address.";
                        }
                      }  // case ipv6-address
                    }  // choice address
    
                    leaf dest-port {
                      type uint16 {
                        range "1..65535";
                      }
                      default "7";
                      description
                        "UDP destination port.";
                    }
    
                    leaf source-port {
                      type uint16 {
                        range "1..65535";
                      }
                      description
                        "UDP source port.";
                    }
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "Time to live.";
                    }
    
                    leaf data-size {
                      type uint16 {
                        range "0..8100";
                      }
                      units "Byte";
                      default "0";
                      description "Packet size.";
                    }
    
                    leaf pass-route {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the function of sending packets without searching for routes.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                        bit probefailure {
                          position 31;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the destination exceeds the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf probe-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of probe failures of an NQA test to send trap or events.";
                    }
    
                    leaf test-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf tos {
                      type uint16 {
                        range "0..255";
                      }
                      default "0";
                      description "ToS.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Loss ratio, determining whether the test is successful.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "4";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (Number of Sent Packets - 1) * (Packet Sending Interval) + (Timeout Period).";
                    }
                  }  // container udp-input
                }  // case udp
    
                case tcp {
                  description "TCP NQA test.";
                  container tcp-input {
                    presence
                      "Present enable TCP test instance input.";
                    description
                      "Enable/disable TCP test instance input.";
                    leaf dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IP address.";
                    }
    
                    leaf source-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source IP address.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "4";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "TTL value of NQA test packets.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf tos {
                      type uint16 {
                        range "0..255";
                      }
                      default "0";
                      description "ToS.";
                    }
    
                    leaf dest-port {
                      type uint16 {
                        range "1..65535";
                      }
                      default "7";
                      description
                        "TCP destination port number.";
                    }
    
                    leaf source-port {
                      type uint16 {
                        range "1..65535";
                      }
                      description
                        "TCP source port number.";
                    }
    
                    leaf pass-route {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the function of sending packets without searching for routes.";
                    }
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf probe-fails {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of probe failures of an NQA test to send trap or events.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "The rate of loss that the test case performed successfully.";
                    }
    
                    leaf test-fail-times {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                        bit probefailure {
                          position 31;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the destination exceeds the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container tcp-input
                }  // case tcp
    
                case jitter {
                  description
                    "Jitter NQA test that tests UDP-packet jitter.";
                  container jitter-input {
                    must
                      "not(hardware-enable = 'true' and data-fill)";
                    must
                      "not(hardware-enable = 'false' and timestamp = 'microsecond')";
                    must
                      "(hardware-enable = 'false' and interval >= 20) or (hardware-enable = 'true' and interval >= 10)";
                    presence
                      "Present enable jitter test instance input";
                    description
                      "Enable/disable jitter test instance input.";
                    choice address {
                      description
                        "IP address configurations.";
                      case ipv4-address {
                        description
                          "IPv4 address.";
                        leaf ipv4-dest-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Destination IPv4 address.";
                        }
    
                        leaf ipv4-source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source IPv4 address.";
                        }
                      }  // case ipv4-address
    
                      case ipv6-address {
                        description
                          "IPv6 address.";
                        leaf ipv6-dest-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Destination IPv6 address.";
                        }
    
                        leaf ipv6-source-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Source IPv6 address.";
                        }
                      }  // case ipv6-address
                    }  // choice address
    
                    leaf dest-port {
                      type uint16 {
                        range "1..65535";
                      }
                      description
                        "UDP destination port.";
                    }
    
                    leaf source-port {
                      type uint16 {
                        range "1..65535";
                      }
                      description
                        "UDP source port.";
                    }
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "Time to live.";
                    }
    
                    leaf hardware-enable {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable packets are sent by hardware.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "10..60000";
                      }
                      units "ms";
                      default "20";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf probe-count {
                      ext:dynamic-default {
                        ext:default-value "3" {
                          when "../code-type='none'";
                          description "The default value is 3 when code-type is none.";
                        }
                        ext:default-value "1" {
                          when "../code-type='g711a' or ../code-type='g711u' or ../code-type='g729a'";
                          description "The default value is 1 when code-type is g711a, g711u or g729a.";
                        }
                      }
                      type uint32 {
                        range "1..15";
                      }
                      description
                        "Number of probes.";
                    }
    
                    leaf jitter-packet-num {
                      ext:dynamic-default {
                        ext:default-value "20" {
                          when "../code-type='none'";
                          description "The default value is 20 when code-type is none.";
                        }
                        ext:default-value "1000" {
                          when "../code-type='g711a' or ../code-type='g711u' or ../code-type='g729a'";
                          description "The default value is 1000 when code-type is g711a, g711u or g729a.";
                        }
                      }
                      type uint32 {
                        range "1..3000";
                      }
                      description
                        "Number of sent packets.";
                    }
    
                    leaf data-size {
                      ext:dynamic-default {
                        ext:default-value "0" {
                          when "../code-type='none'";
                          description "The default value is 0 when code-type is none.";
                        }
                        ext:default-value "172" {
                          when "../code-type='g711a' or ../code-type='g711u'";
                          description "The default value is 172 when code-type is g711a or g711u.";
                        }
                        ext:default-value "32" {
                          when "../code-type='g729a'";
                          description "The default value is 32 when code-type is g729a.";
                        }
                      }
                      type uint16 {
                        range "0..8100";
                      }
                      units "Byte";
                      must
                        "(../hardware-enable = 'true' and ../data-size <= 1472) or (../hardware-enable = 'false') or not(../hardware-enable)";
                      description "Packet size.";
                    }
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf pass-route {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the function of sending packets without searching for routes.";
                    }
    
                    leaf tos {
                      type uint16 {
                        range "0..255";
                      }
                      default "0";
                      description "ToS.";
                    }
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf code-type {
                      type jitter-code-type;
                      default "none";
                      description "Code type.";
                    }
    
                    leaf adv-factor {
                      when
                        "../code-type='g711a' or ../code-type='g711u' or ../code-type='g729a'";
                      type uint8 {
                        range "0..20";
                      }
                      default "0";
                      description
                        "Advantage factor.";
                    }
    
                    leaf threshold-owd-ds {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "One way delay threshold value from destination to source.";
                    }
    
                    leaf threshold-owd-sd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "One way delay threshold value from source to destination.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Indicates the packet loss ratio threshold of an NQA test instance. If the packet loss ratio exceeds the threshold, the test fails.";
                    }
    
                    leaf test-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf timestamp {
                      type time-unit-type;
                      default "millisecond";
                      description
                        "The unit of timestamp.";
                    }
    
                    leaf out-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
                      description
                        "Out interface name.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit owd-ds {
                          position 26;
                          description
                            "Indicates that a trap is sent when the OWD from the destination to the source exceeds the threshold.";
                        }
                        bit owd-sd {
                          position 27;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the destination exceeds the threshold.";
                        }
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container jitter-input
                }  // case jitter
    
                case icmp-jitter {
                  description
                    "ICMP jitter NQA test.";
                  container icmp-jitter-input {
                    presence
                      "Present enable ICMP jitter test instance input.";
                    description
                      "Enable/disable ICMP jitter test instance input.";
                    choice address {
                      description
                        "IP address configurations.";
                      case ipv4-address {
                        description
                          "IPv4 address.";
                        leaf ipv4-dest-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Destination IPv4 address.";
                        }
    
                        leaf ipv4-source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source IPv4 address.";
                        }
                      }  // case ipv4-address
    
                      case ipv6-address {
                        description
                          "IPv6 address.";
                        leaf ipv6-dest-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Destination IPv6 address.";
                        }
    
                        leaf ipv6-source-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "Source IPv6 address.";
                        }
                      }  // case ipv6-address
                    }  // choice address
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "Time to live.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of probes.";
                    }
    
                    leaf hardware-enable {
                      type boolean;
                      must
                        "../jitter-mode='icmp-timestamp' or (not(../jitter-mode='icmp-timestamp') and (../hardware-enable='false'))";
                      default "false";
                      description
                        "Enable/disable packets are sent by hardware.";
                    }
    
                    leaf jitter-packet-num {
                      type uint32 {
                        range "1..3000";
                      }
                      default "20";
                      description
                        "Number of packets.";
                    }
    
                    leaf data-size {
                      when
                        "../jitter-mode='icmp-echo'";
                      type uint16 {
                        range "0..8100";
                      }
                      units "Byte";
                      default "0";
                      description "Packet size.";
                    }
    
                    leaf data-fill {
                      when
                        "../jitter-mode='icmp-echo'";
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf tos {
                      type uint16 {
                        range "0..255";
                      }
                      default "0";
                      description "ToS.";
                    }
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf jitter-mode {
                      when
                        "not(../ipv6-dest-address) and not(../ipv6-source-address)";
                      type jitter-mode-type;
                      default "icmp-timestamp";
                      description
                        "Packet format.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "10..60000";
                      }
                      units "ms";
                      must
                        "../hardware-enable = 'false' and ../interval >= 20 or ../hardware-enable = 'true'";
                      default "20";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf timestamp {
                      when
                        "not(../ipv6-dest-address) and not(../ipv6-source-address)";
                      type time-unit-type;
                      must
                        "(../hardware-enable='true') or (../hardware-enable='false' and ../timestamp='millisecond')";
                      default "millisecond";
                      description
                        "The unit of timestamp.";
                    }
    
                    leaf out-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
                      description
                        "Out interface name.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf receive-timeunit {
                      type recv-time-unit-type;
                      must
                        "(../hardware-enable='true') or (../hardware-enable='false' and ../receive-timeunit='unknown')";
                      default "unknown";
                      description
                        "The unit of receive timestamp.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Indicates the packet loss ratio threshold of an NQA test instance. If the packet loss ratio exceeds the threshold, the test fails.";
                    }
    
                    leaf test-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit jitter-ds {
                          position 24;
                          description
                            "Indicates that a trap is sent when the jitter from the destination to the source exceeds the threshold.";
                        }
                        bit jitter-sd {
                          position 25;
                          description
                            "Indicates that a trap is sent when the jitter from the source to the destination exceeds the threshold.";
                        }
                        bit owd-ds {
                          position 26;
                          description
                            "Indicates that a trap is sent when the OWD from the destination to the source exceeds the threshold.";
                        }
                        bit owd-sd {
                          position 27;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the destination exceeds the threshold.";
                        }
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf threshold-owd-ds {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Specify the one-way delay threshold from destination to source.";
                    }
    
                    leaf threshold-owd-sd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Specify the one-way delay threshold from source to destination.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Specify the round-trip delay threshold.";
                    }
    
                    leaf threshold-jitter-ds {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Specify the one-way jitter threshold from destination to source.";
                    }
    
                    leaf threshold-jitter-sd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Specify the one-way jitter threshold from source to destination.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container icmp-jitter-input
                }  // case icmp-jitter
    
                case lsp-ping {
                  description
                    "LSP ping NQA test.";
                  container lsp-ping-input {
                    presence
                      "Present enable LSP ping test instance input.";
                    description
                      "Enable/disable LSP ping test instance input.";
                    choice lsp-protocol {
                      default "ipv4";
                      description
                        "The LSP type. The default LSP type is IPv4.";
                      case ipv4 {
                        description
                          "The LSP type is LDP.";
                        container ldp-lsp-ping {
                          must
                            "(dest-address and mask-len) or (not(dest-address) and not(mask-len))";
                          description
                            "Configure container of LDP LSP ping.";
                          leaf dest-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Destination IPv4 address.";
                          }
    
                          leaf mask-len {
                            type uint8 {
                              range "0..32";
                            }
                            description
                              "LSP IPv4 prefix mask length.";
                          }
    
                          leaf loopback-address {
                            when
                              "../dest-address";
                            type inet:ipv4-address-no-zone;
                            description
                              "Set a 127/8 address of MPLS ping packets' destination address in the IP header.";
                          }
    
                          leaf next-hop {
                            type inet:ipv4-address-no-zone;
                            description
                              "Next hop address.";
                          }
    
                          leaf reply-mode {
                            type ip-lsp-reply-mode-type;
                            default "udp";
                            description
                              "Specify an LSP test reply mode.";
                          }
                        }  // container ldp-lsp-ping
                      }  // case ipv4
    
                      case bgp {
                        description
                          "The LSP type is BGP.";
                        container bgp-lsp-ping {
                          must
                            "(dest-address and mask-len) or (not(dest-address) and not(mask-len))";
                          presence
                            "Present enable BGP LSP ping.";
                          description
                            "Configure container of BGP LSP ping.";
                          leaf dest-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Destination IPv4 address.";
                          }
    
                          leaf mask-len {
                            type uint8 {
                              range "0..32";
                            }
                            description
                              "LSP IPv4 prefix mask length.";
                          }
    
                          leaf loopback-address {
                            when
                              "../dest-address";
                            type inet:ipv4-address-no-zone;
                            description
                              "Set a 127/8 address of MPLS ping packets' destination address in the IP header.";
                          }
    
                          leaf next-hop {
                            type inet:ipv4-address-no-zone;
                            description
                              "Next hop address.";
                          }
    
                          leaf reply-mode {
                            type bgp-lsp-reply-mode-type;
                            default "udp";
                            description
                              "Specify an LSP test reply mode.";
                          }
                        }  // container bgp-lsp-ping
                      }  // case bgp
    
                      case te {
                        description
                          "The LSP type is TE.";
                        container te-lsp-ping {
                          presence
                            "Present enable TE LSP ping.";
                          description
                            "Configure container of TE LSP ping.";
                          leaf tunnel-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            description
                              "TE tunnel name.";
                          }
    
                          leaf lsp-path {
                            when
                              "../tunnel-name";
                            type lsp-ping-trace-lsp-path;
                            description
                              "Lsp path (hot-standby or primary).";
                          }
    
                          leaf reply-mode {
                            type te-lsp-reply-mode-type;
                            default "udp";
                            description
                              "Specify an LSP test reply mode.";
                          }
                        }  // container te-lsp-ping
                      }  // case te
    
                      case srte {
                        description
                          "The LSP type is SR-TE.";
                        container srte-lsp-ping {
                          presence
                            "Present enable SR-TE LSP ping.";
                          description
                            "Configure container of SR-TE LSP ping.";
                          leaf tunnel-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            description
                              "TE tunnel name.";
                          }
    
                          leaf lsp-path {
                            when
                              "../tunnel-name";
                            type lsp-ping-trace-lsp-path;
                            description
                              "Lsp path (hot-standby or primary).";
                          }
                        }  // container srte-lsp-ping
                      }  // case srte
    
                      case srbe {
                        description
                          "The LSP type is SR-BE.";
                        container srbe-lsp-ping {
                          must
                            "(dest-address and mask-len) or (not (dest-address) and not (mask-len))";
                          presence
                            "Present enable SR-BE LSP ping.";
                          description
                            "Configure container of SR-BE LSP ping.";
                          leaf dest-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Destination IP address.";
                          }
    
                          leaf mask-len {
                            type uint8 {
                              range "0..32";
                            }
                            description
                              "LSP IPv4 prefix mask length.";
                          }
    
                          leaf flex-algo-id {
                            type uint8 {
                              range "128..255";
                            }
                            description
                              "Flexible algorithm ID.";
                          }
    
                          leaf path-type {
                            type path-type;
                            description
                              "Path type.";
                          }
    
                          choice remote-fec {
                            description
                              "Remote FEC type.";
                            case ldp {
                              description
                                "Configure the remote FEC type as LDP.";
                              container remote-fec-ldp {
                                must
                                  "(remote-fec-ip-address and remote-mask-len) or (not (remote-fec-ip-address) and not (remote-mask-len))";
                                presence
                                  "Present enable remote FEC type as LDP.";
                                description
                                  "Configure container of remote FEC LDP.";
                                leaf remote-fec-ip-address {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Configure remote FEC IPv4 address.";
                                }
    
                                leaf remote-mask-len {
                                  type uint8 {
                                    range
                                      "0..32";
                                  }
                                  description
                                    "Configure remote FEC mask length.";
                                }
                              }  // container remote-fec-ldp
                            }  // case ldp
                          }  // choice remote-fec
                        }  // container srbe-lsp-ping
                      }  // case srbe
    
                      case srte-policy {
                        description
                          "The LSP type is SR-TE policy.";
                        container srte-policy-lsp-ping {
                          must
                            "(end-point-ip and color) or (not(end-point-ip) and not(color))";
                          presence
                            "Present enable SR-TE policy LSP ping.";
                          description
                            "Configure container of SR-TE policy LSP ping.";
                          choice probe-type {
                            description
                              "Probe type of SR-TE policy.";
                            case policy-name {
                              description
                                "Policy name.";
                              leaf policy-name {
                                type string {
                                  length "1..31";
                                }
                                description
                                  "SR-TE policy name.";
                              }
                            }  // case policy-name
    
                            case end-point {
                              description
                                "End point.";
                              leaf end-point-ip {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Endpoint IPv4 address.";
                              }
    
                              leaf color {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Endpoint color ID.";
                              }
                            }  // case end-point
    
                            case binding-sid {
                              description
                                "Policy name.";
                              leaf binding-sid {
                                type uint32 {
                                  range
                                    "16..1048575";
                                }
                                description
                                  "Binding segmentlist ID.";
                              }
                            }  // case binding-sid
                          }  // choice probe-type
                        }  // container srte-policy-lsp-ping
                      }  // case srte-policy
                    }  // choice lsp-protocol
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after test packets are sent.";
                    }
    
                    leaf frag-flag {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable packet fragmentation function.";
                    }
    
                    leaf source-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source IPv4 address.";
                    }
    
                    leaf exp {
                      type uint8 {
                        range "0..7";
                      }
                      default "0";
                      description
                        "Configures the LSP EXP value.";
                    }
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "TTL value of NQA test packets.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "4";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf data-size {
                      type uint32 {
                        range "0..9600";
                      }
                      units "Byte";
                      default "0";
                      description "Packet size.";
                    }
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Indicates the packet loss ratio threshold of an NQA test instance. If the packet loss ratio exceeds the threshold, the test fails.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container lsp-ping-input
                }  // case lsp-ping
    
                case lsp-trace {
                  description
                    "LSP trace NQA test.";
                  container lsp-trace-input {
                    presence
                      "Present enable LSP trace test instance input.";
                    description
                      "Enable/disable LSP trace test instance input.";
                    choice lsp-protocol {
                      default "ipv4";
                      description
                        "The LSP type. The default LSP type is IPv4.";
                      case ipv4 {
                        description
                          "The LSP type is LDP.";
                        container ldp-lsp-trace {
                          must
                            "(dest-address and mask-len) or (not(dest-address) and not(mask-len))";
                          description
                            "Configure container of LDP LSP trace.";
                          leaf dest-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Destination IPv4 address.";
                          }
    
                          leaf mask-len {
                            type uint8 {
                              range "0..32";
                            }
                            description
                              "LSP IPv4 prefix mask length.";
                          }
    
                          leaf loopback-address {
                            when
                              "../dest-address";
                            type inet:ipv4-address-no-zone;
                            description
                              "Set a 127/8 address of MPLS ping packets' destination address in the IP header.";
                          }
    
                          leaf next-hop {
                            type inet:ipv4-address-no-zone;
                            description
                              "Next hop address.";
                          }
    
                          leaf reply-mode {
                            type ip-lsp-reply-mode-type;
                            default "udp";
                            description
                              "Specify an LSP test reply mode.";
                          }
                        }  // container ldp-lsp-trace
                      }  // case ipv4
    
                      case bgp {
                        description
                          "The LSP type is BGP.";
                        container bgp-lsp-trace {
                          must
                            "(dest-address and mask-len) or (not(dest-address) and not(mask-len))";
                          presence
                            "Present enable BGP LSP trace.";
                          description
                            "Configure container of BGP LSP trace.";
                          leaf dest-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Destination IPv4 address.";
                          }
    
                          leaf mask-len {
                            type uint8 {
                              range "0..32";
                            }
                            description
                              "LSP IPv4 prefix mask length.";
                          }
    
                          leaf loopback-address {
                            when
                              "../dest-address";
                            type inet:ipv4-address-no-zone;
                            description
                              "Set a 127/8 address of MPLS ping packets' destination address in the IP header.";
                          }
    
                          leaf next-hop {
                            type inet:ipv4-address-no-zone;
                            description
                              "Next hop address.";
                          }
    
                          leaf reply-mode {
                            type bgp-lsp-reply-mode-type;
                            default "udp";
                            description
                              "Specify an LSP test reply mode.";
                          }
                        }  // container bgp-lsp-trace
                      }  // case bgp
    
                      case te {
                        description
                          "The LSP type is TE.";
                        container te-lsp-trace {
                          presence
                            "Present enable TE LSP trace.";
                          description
                            "Configure container of TE LSP trace.";
                          leaf tunnel-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            description
                              "TE tunnel name.";
                          }
    
                          leaf next-hop {
                            type inet:ipv4-address-no-zone;
                            description
                              "Next hop address.";
                          }
    
                          leaf lsp-path {
                            when
                              "../tunnel-name";
                            type lsp-ping-trace-lsp-path;
                            description
                              "Lsp path (hot-standby or primary).";
                          }
    
                          leaf reply-mode {
                            type te-lsp-reply-mode-type;
                            default "udp";
                            description
                              "Specify an LSP test reply mode.";
                          }
                        }  // container te-lsp-trace
                      }  // case te
    
                      case srte {
                        description
                          "The LSP type is SR-TE.";
                        container srte-lsp-trace {
                          presence
                            "Present enable SR-TE LSP trace.";
                          description
                            "Configure container of SR-TE LSP trace.";
                          leaf tunnel-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            description
                              "TE tunnel name.";
                          }
    
                          leaf lsp-path {
                            when
                              "../tunnel-name";
                            type lsp-ping-trace-lsp-path;
                            description
                              "Lsp path (hot-standby or primary).";
                          }
                        }  // container srte-lsp-trace
                      }  // case srte
    
                      case srbe {
                        description
                          "The LSP type is SR-BE.";
                        container srbe-lsp-trace {
                          must
                            "(dest-address and mask-len) or (not (dest-address) and not (mask-len))";
                          presence
                            "Present enable SR-BE LSP trace.";
                          description
                            "Configure container of SR-BE LSP trace.";
                          leaf dest-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Destination IPv4 address.";
                          }
    
                          leaf mask-len {
                            type uint8 {
                              range "0..32";
                            }
                            description
                              "LSP IPv4 prefix mask length.";
                          }
    
                          leaf flex-algo-id {
                            type uint8 {
                              range "128..255";
                            }
                            description
                              "Flexible algorithm ID.";
                          }
    
                          leaf path-type {
                            type path-type;
                            description
                              "Path type.";
                          }
    
                          choice remote-fec {
                            description
                              "Remote FEC type.";
                            case ldp {
                              description
                                "Configure the remote FEC type as LDP.";
                              container remote-fec-ldp {
                                must
                                  "(remote-fec-ip-address and remote-mask-len) or (not (remote-fec-ip-address) and not (remote-mask-len))";
                                presence
                                  "Present enable remote FEC type as LDP.";
                                description
                                  "Configure container of remote FEC LDP.";
                                leaf remote-fec-ip-address {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Configure remote FEC IPv4 address.";
                                }
    
                                leaf remote-mask-len {
                                  type uint8 {
                                    range
                                      "0..32";
                                  }
                                  description
                                    "Configure remote FEC mask length.";
                                }
                              }  // container remote-fec-ldp
                            }  // case ldp
                          }  // choice remote-fec
                        }  // container srbe-lsp-trace
                      }  // case srbe
    
                      case srte-policy {
                        description
                          "The LSP type is SR-TE policy.";
                        container srte-policy-lsp-trace {
                          must
                            "(end-point-ip and color) or (not(end-point-ip) and not(color))";
                          presence
                            "Present enable SR-TE policy LSP trace.";
                          description
                            "Configure container of SR-TE policy LSP trace.";
                          choice probe-type {
                            description
                              "Probe type of SR-TE policy.";
                            case policy-name {
                              description
                                "Policy name.";
                              leaf policy-name {
                                type string {
                                  length "1..31";
                                }
                                description
                                  "SR-TE policy name.";
                              }
                            }  // case policy-name
    
                            case end-point {
                              description
                                "End point.";
                              leaf end-point-ip {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Endpoint IPv4 address.";
                              }
    
                              leaf color {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Endpoint color ID.";
                              }
                            }  // case end-point
    
                            case binding-sid {
                              description
                                "Policy name.";
                              leaf binding-sid {
                                type uint32 {
                                  range
                                    "16..1048575";
                                }
                                description
                                  "Binding segmentlist ID.";
                              }
                            }  // case binding-sid
                          }  // choice probe-type
                        }  // container srte-policy-lsp-trace
                      }  // case srte-policy
                    }  // choice lsp-protocol
    
                    leaf frag-flag {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable packet fragmentation function.";
                    }
    
                    leaf exp {
                      type uint8 {
                        range "0..7";
                      }
                      default "0";
                      description
                        "Configures the LSP EXP value.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf source-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source IPv4 address.";
                    }
    
                    leaf first-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      must
                        "../first-ttl<=../max-ttl";
                      default "1";
                      description
                        "Start TTL of probe packet.";
                    }
    
                    leaf max-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      must
                        "../first-ttl<=../max-ttl";
                      default "30";
                      description
                        "Maximum TTL of probe packet.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf hop-fail-times {
                      type uint8 {
                        range "1..255";
                      }
                      default "5";
                      description
                        "Specify the upper limit of the number of failed hops before the NQA tracert test stops.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      must "(../frequency>=60)";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container lsp-trace-input
                }  // case lsp-trace
    
                case lsp-jitter {
                  description
                    "LSP jitter NQA test.";
                  container lsp-jitter-input {
                    presence
                      "Present enable LSP jitter test instance input";
                    description
                      "Enable/disable LSP jitter test instance input.";
                    choice lsp-protocol {
                      default "ipv4";
                      description
                        "The test-type of LSP. The default LSP type is IPv4.";
                      case ipv4 {
                        description
                          "The test-type of LSP is LDP.";
                        container ldp-lsp-jitter {
                          must
                            "(dest-address and mask-len) or (not(dest-address) and not(mask-len))";
                          description
                            "Configure container of ldp jitter instance.";
                          leaf dest-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Destination IP address. (Must specify the destination address to start the test)";
                          }
    
                          leaf mask-len {
                            type uint8 {
                              range "0..32";
                            }
                            description
                              "LSP IPv4 address prefix mask length.";
                          }
    
                          leaf loopback-address {
                            when
                              "../dest-address";
                            type inet:ipv4-address-no-zone;
                            description
                              "The IP address of the 127.0.0.0/8 network segment in the LSP jitter message header.";
                          }
    
                          leaf reply-mode {
                            type ip-lsp-reply-mode-type;
                            default "udp";
                            description
                              "LSP reply mode.";
                          }
                        }  // container ldp-lsp-jitter
                      }  // case ipv4
    
                      case te {
                        description
                          "The test-type of LSP is TE.";
                        container te-lsp-jitter {
                          presence
                            "Present enable te jitter test instance input.";
                          description
                            "Enable/disable te jitter instance container.";
                          leaf tunnel-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Tunnel'";
                            description
                              "TE tunnel name.";
                          }
    
                          leaf lsp-path {
                            when
                              "../tunnel-name";
                            type lsp-path;
                            default "working";
                            description
                              "LSP path (working or hot-standby or primary).";
                          }
    
                          leaf reply-mode {
                            type lsp-reply-mode-type;
                            default "udp";
                            description
                              "Specify an LSP test reply mode.";
                          }
                        }  // container te-lsp-jitter
                      }  // case te
                    }  // choice lsp-protocol
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf frag-flag {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable packet fragmentation function.";
                    }
    
                    leaf source-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source IP address.";
                    }
    
                    leaf exp {
                      type uint8 {
                        range "0..7";
                      }
                      default "0";
                      description
                        "Configures the LSP EXP value.";
                    }
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "TTL value of NQA test packets.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "1";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of probes.";
                    }
    
                    leaf jitter-packet-num {
                      type uint32 {
                        range "1..3000";
                      }
                      default "20";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf data-size {
                      type uint32 {
                        range "0..9600";
                      }
                      units "Byte";
                      default "0";
                      description "Packet size.";
                    }
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Indicates the packet loss ratio threshold of an NQA test instance. If the packet loss ratio exceeds the threshold, the test fails.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container lsp-jitter-input
                }  // case lsp-jitter
    
                case pwe3-ping {
                  description
                    "PWE3 ping NQA test.";
                  container pwe3-ping-input {
                    presence
                      "Present enable PWE3 ping test instance input.";
                    description
                      "Enable/disable pwe3ping test instance input.";
                    leaf vc-type {
                      type vc-type;
                      default "ldp";
                      description "VC type.";
                    }
    
                    leaf local-pw-type {
                      type pw-type;
                      default "ethernet";
                      description
                        "Local PW type.";
                    }
    
                    leaf local-pw-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description "Local PW ID.";
                    }
    
                    leaf label-type {
                      type pwe3-label-type;
                      default "control-word";
                      description "Label type.";
                    }
    
                    leaf remote-pw-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Remote PW ID.";
                    }
    
                    leaf dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IPv4 address.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf max-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "Packet maximum TTL.";
                    }
    
                    leaf exp {
                      type uint8 {
                        range "0..7";
                      }
                      default "0";
                      description
                        "Configure the PWE3 ping exp value.";
                    }
    
                    leaf reply-mode {
                      type pwe3-reply-mode-type;
                      default "udp";
                      description
                        "Specify a PWE3 ping test reply mode.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "4";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf data-size {
                      type uint32 {
                        range "0..9600";
                      }
                      units "Byte";
                      default "0";
                      description
                        "Packets size.";
                    }
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify NQA test packets payload string.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Loss ratio, determining whether the test is successful.";
                    }
    
                    leaf probe-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of probe failures of an NQA test to send trap or events.";
                    }
    
                    leaf test-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                        bit probefailure {
                          position 31;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the destination exceeds the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf sender-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Set the source address of the targeted session.";
                    }
    
                    leaf no-cw-flag {
                      when
                        "../label-type!='control-word'";
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the function of not carrying control word.";
                    }
    
                    leaf ttl-mode {
                      type ttl-mode;
                      default "uniform";
                      description
                        "TTL mode (uniform or pipe).";
                    }
    
                    leaf frag-flag {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable packet fragmentation function.";
                    }
    
                    leaf peer-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Peer IPv4 address.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (Number of sent Packets - 1) * (Packet sending interval) + (Timeout period).";
                    }
                  }  // container pwe3-ping-input
                }  // case pwe3-ping
    
                case path-mtu {
                  description
                    "Path MTU NQA test.";
                  container path-mtu-input {
                    presence
                      "Present enable path mtu test instance input.";
                    description
                      "Enable/disable path mtu test instance input.";
                    leaf dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IPv4 address.";
                    }
    
                    leaf source-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source IPv4 address.";
                    }
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf max-mtu {
                      type uint16 {
                        range "48..9198";
                      }
                      default "1500";
                      description "Max mtu.";
                    }
    
                    leaf step {
                      type uint16 {
                        range "1..512";
                      }
                      default "10";
                      description "Test step.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of probes.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf out-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
                      description
                        "Out interface name.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "60..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container path-mtu-input
                }  // case path-mtu
    
                case pwe3-trace {
                  description
                    "PWE3 trace NQA test.";
                  container pwe3-trace-input {
                    presence
                      "Present enable PWE3 trace test instance input";
                    description
                      "Enable/disable PWE3 trace test instance input.";
                    leaf vc-type {
                      type vc-type;
                      default "ldp";
                      description "VC type.";
                    }
    
                    leaf local-pw-type {
                      type pw-type;
                      default "ethernet";
                      description
                        "Local PW type.";
                    }
    
                    leaf local-pw-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description "Local PW ID.";
                    }
    
                    leaf label-type {
                      type pwe3-label-type;
                      default "control-word";
                      description "Label type.";
                    }
    
                    leaf dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IP address. (Must specify the destination address to start the test)";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf first-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      must
                        "(../first-ttl <= ../max-ttl)";
                      default "1";
                      description
                        "Start TTL of probe packet.";
                    }
    
                    leaf max-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      must
                        "(../max-ttl >= ../first-ttl)";
                      default "30";
                      description
                        "Maximum TTL of probe packet.";
                    }
    
                    leaf exp {
                      type uint8 {
                        range "0..7";
                      }
                      default "0";
                      description
                        "Configures the Pwe3Trace EXP value.";
                    }
    
                    leaf reply-mode {
                      type lsp-reply-mode-type;
                      default "udp";
                      description
                        "Specify an LSP test reply mode.";
                    }
    
                    leaf packet-count {
                      type uint32 {
                        range "1..15";
                      }
                      units "packet";
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf probe-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of probe failures of an NQA test to send trap or events.";
                    }
    
                    leaf test-failtimes {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf lsp-version {
                      type lsp-version;
                      default "rfc4379";
                      description "Lsp version.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf ttl-mode {
                      type ttl-mode;
                      default "uniform";
                      description
                        "TTL mode (uniform or pipe).";
                    }
    
                    leaf hop-fail-times {
                      type uint8 {
                        range "1..255";
                      }
                      default "5";
                      description
                        "Specify the upper limit of the number of failed hops before the NQA tracert test stops.";
                    }
    
                    leaf frag-flag {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable packet fragmentation function.";
                    }
    
                    leaf peer-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Peer IP Address.";
                    }
    
                    leaf no-cw-flag {
                      when
                        "../label-type!='control-word'";
                      type boolean;
                      default "false";
                      description
                        "Enable/disable the option of not carrying control word.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                        bit probefailure {
                          position 31;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the
    destination exceeds the threshold.
    This parameter applies only to jitter test instances.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "60..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container pwe3-trace-input
                }  // case pwe3-trace
    
                case mac-ping {
                  description
                    "MAC ping NQA test.";
                  container mac-ping-input {
                    must
                      "(md-name and ma-name) or (not(md-name) and not(ma-name))";
                    presence
                      "Present enable MAC ping test instance input.";
                    description
                      "Enable/disable MAC ping test instance input.";
                    choice destination {
                      description
                        "Destination information.";
                      case mac-address {
                        description
                          "MAC address.";
                        leaf dest-mac-address {
                          type unicast-mac-address;
                          description
                            "Destination MAC, must be unicast MAC and not 0-0-0 MAC.";
                        }
                      }  // case mac-address
    
                      case remote-mep-id {
                        description
                          "Remote MEP ID.";
                        leaf remote-mep-id {
                          type uint32 {
                            range "1..8191";
                          }
                          description
                            "Remote MEP ID.";
                        }
                      }  // case remote-mep-id
                    }  // choice destination
    
                    leaf mep-id {
                      type uint32 {
                        range "1..8191";
                      }
                      description "MEP ID.";
                    }
    
                    leaf md-name {
                      type string {
                        length "1..43";
                      }
                      description
                        "Maintenance domain name.";
                    }
    
                    leaf ma-name {
                      type string {
                        length "1..43";
                      }
                      description
                        "Maintenance association name.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "4";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf data-size {
                      type uint32 {
                        range "64..2000";
                      }
                      units "Byte";
                      default "95";
                      description "Packet size.";
                    }
    
                    leaf source-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Lmpif'";
                      description
                        "Out interface name.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Loss ratio, determining whether the test is successful.";
                    }
    
                    leaf probe-fails {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of probe failures of an NQA test to send trap or events.";
                    }
    
                    leaf test-fails {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap is sent when the RTD exceeds the threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                        bit probefailure {
                          position 31;
                          description
                            "Indicates that a trap is sent when the OWD from the source to the destination exceeds the threshold.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf jitter-packet-num {
                      type uint32 {
                        range "1..3000";
                      }
                      default "1";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The Frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (Number of Sent Packets - 1) * (Packet Sending Interval) + (Timeout Period)";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
                  }  // container mac-ping-input
                }  // case mac-ping
    
                case arp-ping-ip {
                  description
                    "Arp ping IP NQA test.";
                  container arp-ping-ip-input {
                    presence
                      "Present enable arp ping IP test intance input.";
                    description
                      "Enable/disable arp ping IP test intance input.";
                    leaf ipv4-dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IPv4 address.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf out-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Vlanif' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Virtual-Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'MEth' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Vbdif' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Global-VE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Lmpif'";
                      description
                        "Out interface name.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..10";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (Number of sent Packets - 1) * (Packet sending interval) + (Timeout period).";
                    }
                  }  // container arp-ping-ip-input
                }  // case arp-ping-ip
    
                case path-jitter {
                  description
                    "Path jitter NQA test.";
                  container path-jitter-input {
                    presence
                      "Present enable path jitter test intance input.";
                    description
                      "Enable/disable path jitter test intance input.";
                    leaf dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IP address.";
                    }
    
                    leaf source-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source IP address.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Loss ratio, determining whether the test is sucessful.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf first-ttl {
                      type uint8 {
                        range "1";
                      }
                      default "1";
                      description
                        "Packet first TTL.";
                    }
    
                    leaf max-ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "Packet maximum TTL.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "20..60000";
                      }
                      units "ms";
                      default "20";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of probes.";
                    }
    
                    leaf jitter-packet-num {
                      type uint32 {
                        range "1..3000";
                      }
                      default "20";
                      description
                        "Number of packets.";
                    }
    
                    leaf data-size {
                      when
                        "../jitter-mode='icmp-echo'";
                      type uint16 {
                        range "0..8100";
                      }
                      units "Byte";
                      default "0";
                      description "Packet size.";
                    }
    
                    leaf data-fill {
                      when
                        "../jitter-mode='icmp-echo'";
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf jitter-mode {
                      type jitter-mode-type;
                      default "icmp-timestamp";
                      description
                        "Packet format.";
                    }
    
                    leaf tos {
                      type uint16 {
                        range "0..255";
                      }
                      default "0";
                      description "TOS.";
                    }
    
                    leaf ni-name {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      default "_public_";
                      description
                        "Name of a VPN instance.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Test instance frequency. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container path-jitter-input
                }  // case path-jitter
    
                case vpls-mac-ping {
                  description
                    "VPLS MAC ping NQA test.";
                  container vpls-mac-ping-input {
                    presence
                      "Present enable VPLS MAC ping test instance input";
                    description
                      "Enable/disable VPLS MAC ping test instance input.";
                    leaf vsi-name {
                      type string {
                        length "1..31";
                      }
                      description
                        "Name of a VSI.";
                    }
    
                    leaf dest-address {
                      type pub-type:mac-address;
                      description
                        "Destination MAC address.";
                    }
    
                    leaf data-fill {
                      type string {
                        length "1..230";
                      }
                      description
                        "Specify an NQA test packet payload string.";
                    }
    
                    leaf data-size {
                      type uint32 {
                        range "100..1442";
                      }
                      units "Byte";
                      default "100";
                      description "Packet size.";
                    }
    
                    leaf exp {
                      type uint8 {
                        range "0..7";
                      }
                      default "0";
                      description
                        "Configures the VPLS MAC ping EXP value.";
                    }
    
                    leaf reply-mode {
                      type vpls-reply-mode-type;
                      default "udp";
                      description
                        "Specify a VPLS MAC ping test reply mode.";
                    }
    
                    leaf ttl {
                      type uint8 {
                        range "1..255";
                      }
                      default "30";
                      description
                        "TTL value of NQA test packets.";
                    }
    
                    leaf interval {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "4";
                      description
                        "Interval for sending packets.";
                    }
    
                    leaf fail-percent {
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      default "100";
                      description
                        "Loss ratio, determining whether the test is successful.";
                    }
    
                    leaf test-fail-times {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive test failures to send trap or events.";
                    }
    
                    leaf probe-fail-times {
                      type uint32 {
                        range "1..15";
                      }
                      default "1";
                      description
                        "The maximum number of the NQA test consecutive probe failures to send trap or events.";
                    }
    
                    leaf send-trap-bits {
                      type bits {
                        bit rtd {
                          position 28;
                          description
                            "Indicates that a trap message is sent if the RTD reaches the specified threshold.";
                        }
                        bit testcomplete {
                          position 29;
                          description
                            "Indicates that a trap is sent when a test succeeds.";
                        }
                        bit testfailure {
                          position 30;
                          description
                            "Indicates that a trap is sent when the number of test failures reaches the threshold.";
                        }
                        bit probefailure {
                          position 31;
                          description
                            "Indicates that a trap message is sent if a probe attempt fails.";
                        }
                      }
                      description
                        "Configure conditions for sending traps.";
                    }
    
                    leaf probe-count {
                      type uint32 {
                        range "1..15";
                      }
                      default "3";
                      description
                        "Number of sent packets.";
                    }
    
                    leaf timeout {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Time to wait for a response packet after a test packet is sent.";
                    }
    
                    leaf threshold-rtd {
                      type uint32 {
                        range "1..60000";
                      }
                      description
                        "Threshold value of round trip delay.";
                    }
    
                    leaf vlan {
                      type uint32 {
                        range "1..4094";
                      }
                      description
                        "Specifies a VLAN ID.";
                    }
    
                    leaf frag-flag {
                      type boolean;
                      default "false";
                      description
                        "Enable/disable packet fragmentation function.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf history-num {
                      type uint32 {
                        range "0..1000";
                      }
                      default "60";
                      description
                        "The maximum number of historical test records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
    
                    leaf frequency {
                      type uint32 {
                        range "1..604800";
                      }
                      units "s";
                      description
                        "Cyclic scheduling period of test cases. The frequency must be greater than the value of the following formula; otherwise, the test results may be inaccurate:
    (number of sent packets - 1) * (packet sending interval) + (timeout period).";
                    }
                  }  // container vpls-mac-ping-input
                }  // case vpls-mac-ping
    
                case ethernet-service {
                  description
                    "Ethernet-service NQA test.";
                  container ethernet-service-input {
                    presence
                      "Present enable ethernet service test instance input.";
                    description
                      "Configure ethernet-service test instance input.";
                    leaf fwd-if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Global-VE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Vbdif'";
                      description
                        "Forwarding simulation inbound interface.";
                    }
    
                    leaf config-test-duration {
                      type uint32 {
                        range "1..60";
                      }
                      units "s";
                      default "3";
                      description
                        "Configuration test duration.";
                    }
    
                    leaf perf-test-duration {
                      type uint32 {
                        range "1..1440";
                      }
                      units "min";
                      default "15";
                      description
                        "Performance test duration.";
                    }
    
                    choice test-packet-size-mode {
                      default "packet-size-list";
                      description
                        "Test packet size.";
                      case profile {
                        description
                          "Traffic profile for ethernet packet.";
                        leaf profile {
                          type ethernet-service-profile-type;
                          description
                            "Traffic profile.";
                        }
                      }  // case profile
    
                      case packet-size-list {
                        description
                          "Traffic packet size for ethernet packet.";
                        leaf datasizes {
                          type string {
                            length "2..50";
                            pattern
                              '((6[4-9])|([7-9][0-9])|([1-9][0-9][0-9])|(1[0-4][0-9][0-9])|(150[0-9])|(151[0-8])){1}([ ]((6[4-9])|([7-9][0-9])|([1-9][0-9][0-9])|(1[0-4][0-9][0-9])|(150[0-9])|(151[0-8]))){0,9}';
                          }
                          default "512";
                          description
                            "Packet size value list.";
                        }
                      }  // case packet-size-list
                    }  // choice test-packet-size-mode
    
                    leaf-list test-flow-id {
                      type leafref {
                        path "../../../../testflows/test-flow/test-flow-id";
                      }
                      max-elements 16;
                      description
                        "Configure the ID of the test flow bound to the test instance.";
                    }
    
                    leaf result-num {
                      type uint32 {
                        range "1..10";
                      }
                      default "5";
                      description
                        "The maximum number of test result records.";
                    }
    
                    leaf description {
                      type string {
                        length "1..230";
                      }
                      description
                        "Description of test instance.";
                    }
    
                    leaf age-time {
                      type pub-type:time;
                      default "00:00:00";
                      description
                        "Aging time of test instance.";
                    }
                  }  // container ethernet-service-input
                }  // case ethernet-service
              }  // choice type
    
              container execution-policy {
                config false;
                description
                  "Statistics of the test instance execution policy.";
                choice execution-policy {
                  description
                    "The test instance start policy.";
                  case start {
                    description
                      "Start the test.";
                    choice start-type {
                      description
                        "The test instance start type.";
                      case start-now {
                        description "Start now.";
                        leaf start-now {
                          type start-now-type;
                          description
                            "Start the test instance instantly.";
                        }
    
                        choice start-now-end-type {
                          description
                            "Test instance end type.";
                          case at {
                            description
                              "Stop the test at the specified time.";
                            leaf start-now-end-date-time {
                              type yang:date-and-time;
                              description
                                "The test instance end time.";
                            }
                          }  // case at
    
                          case delay {
                            description
                              "Stop the test after the specified delay time.";
                            leaf start-now-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case delay
    
                          case lifetime {
                            description
                              "Stop the test after the specified life time.";
                            leaf start-now-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime
                        }  // choice start-now-end-type
                      }  // case start-now
    
                      case start-at {
                        description
                          "Execute at the specified time.";
                        leaf start-date-time {
                          type yang:date-and-time;
                          description
                            "The test instance start time.";
                        }
    
                        choice start-at-end-type {
                          description
                            "Test instance end type.";
                          case at {
                            description
                              "Stop the test at the specified time.";
                            leaf start-at-end-date-time {
                              type yang:date-and-time;
                              description
                                "The test instance end time.";
                            }
                          }  // case at
    
                          case delay {
                            description
                              "Stop the test after the specified delay time.";
                            leaf start-at-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case delay
    
                          case lifetime {
                            description
                              "Stop the test after the specified life time.";
                            leaf start-at-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime
                        }  // choice start-at-end-type
                      }  // case start-at
    
                      case start-delay {
                        description
                          "Delay some time then execute testcase.";
                        leaf start-delay-seconds {
                          type uint32 {
                            range "1..86399";
                          }
                          units "s";
                          description
                            "The test instance start delay seconds.";
                        }
    
                        choice start-delay-end-type {
                          description
                            "Test instance end type.";
                          case at {
                            description
                              "Stop the test at the specified time.";
                            leaf start-delay-end-date-time {
                              type yang:date-and-time;
                              description
                                "The test instance end time.";
                            }
                          }  // case at
    
                          case delay {
                            description
                              "Stop the test after the specified delay time.";
                            leaf start-delay-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case delay
    
                          case lifetime {
                            description
                              "Stop the test after the specified life time.";
                            leaf start-delay-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime
                        }  // choice start-delay-end-type
                      }  // case start-delay
    
                      case start-daily {
                        description
                          "Execute the test instance daily.";
                        leaf daily-start-time {
                          type pub-type:time;
                          description
                            "Start time of daily execution.";
                        }
    
                        leaf daily-start-date {
                          type pub-type:date;
                          description
                            "Start date of daily execution.";
                        }
    
                        leaf daily-end-time {
                          type pub-type:time;
                          description
                            "End time of daily execution.";
                        }
    
                        leaf daily-end-date {
                          type pub-type:date;
                          description
                            "End date of daily execution.";
                        }
                      }  // case start-daily
                    }  // choice start-type
                  }  // case start
    
                  case stop {
                    description "Stop the test.";
                    leaf stop {
                      type stop-type;
                      description
                        "Stop the test.";
                    }
                  }  // case stop
                }  // choice execution-policy
              }  // container execution-policy
    
              container nqa-execution-policy {
                description
                  "Configure the test instance to be executed at the specified time.";
                leaf start-date-time {
                  type yang:date-and-time;
                  description
                    "The start date and time of the test instance. Detele the start-date-time to stop the test.";
                }
    
                leaf end-date-time {
                  when "../start-date-time";
                  type yang:date-and-time;
                  description
                    "The end date and time of the test instance.";
                }
              }  // container nqa-execution-policy
            }  // list instance
          }  // container instances
    
          container record {
            config false;
            description
              "Statistics of NQA test instance test record table.";
            container results {
              config false;
              description
                "List of NQA test instance test result record table.";
              list result {
                key "admin-name test-name running-index";
                description
                  "Statistics of NQA test instance test result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf begin-time {
                  type yang:date-and-time;
                  description
                    "Start test time of a Test Unit.";
                }
    
                leaf end-time {
                  type yang:date-and-time;
                  description
                    "End test time of a Test Unit.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completions {
                  type result-status-type;
                  description
                    "Running results (success or failed or no-result).";
                }
    
                leaf sent-probes {
                  type uint32;
                  description
                    "Total number of sent packets.";
                }
    
                leaf response-probes {
                  type uint32;
                  description
                    "Total number of received packets.";
                }
    
                leaf rtd-thresholds {
                  type uint32;
                  description
                    "Counts of RTD over Threshold.";
                }
    
                leaf test-attempts {
                  type uint32;
                  description
                    "Number of times a test instance is performed.";
                }
    
                leaf drops {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                leaf disconnects {
                  type uint32;
                  description
                    "Number of consecutive failures.";
                }
    
                leaf timeouts {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf busies {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf no-connections {
                  type uint32;
                  description
                    "Number of connection errors.";
                }
    
                leaf sequence-errors {
                  type uint32;
                  description
                    "Number of packets with incorrect sequence numbers.";
                }
    
                leaf rtt-status-errors {
                  type uint32;
                  description
                    "Number of Rtt statistical failures.";
                }
    
                leaf dest-address {
                  type inet:ip-address-no-zone;
                  description
                    "Destination IPv4 address.";
                }
    
                leaf rtt-min {
                  type uint32;
                  units "ms";
                  description "Minimum RTT.";
                }
    
                leaf rtt-average {
                  type uint32;
                  units "ms";
                  description "Average RTT.";
                }
    
                leaf rtt-max {
                  type uint32;
                  units "ms";
                  description "Maximum RTT.";
                }
    
                leaf rtt-sum {
                  type uint32;
                  units "ms";
                  description "Sum of RTT.";
                }
    
                leaf rtt-sum-square {
                  type uint64;
                  description
                    "Sum of RTT square.";
                }
    
                leaf packet-loss-ratio {
                  type uint8;
                  units "%";
                  description
                    "Packet loss ratio.";
                }
    
                leaf last-probe-time {
                  type yang:date-and-time;
                  description
                    "Last good probe time.";
                }
              }  // list result
            }  // container results
    
            container trace-results {
              config false;
              description
                "List of NQA test instance test trace result record table.";
              list trace-result {
                key "admin-name test-name running-index";
                description
                  "Statistics of NQA test instance test trace result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completions {
                  type result-status-type;
                  description
                    "Running results (success or failed or no-result).";
                }
    
                leaf disconnects {
                  type uint32;
                  description
                    "Number of consecutive failures.";
                }
    
                leaf test-attempts {
                  type uint32;
                  description
                    "Number of times a test instance is performed.";
                }
    
                leaf timeouts {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf busies {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf no-connections {
                  type uint32;
                  description
                    "Number of connection errors.";
                }
    
                leaf sequence-errors {
                  type uint32;
                  description
                    "Number of packets with incorrect sequence numbers.";
                }
    
                leaf rtt-status-errors {
                  type uint32;
                  description
                    "Number of Rtt statistical failures.";
                }
    
                leaf drops {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                leaf last-good-path {
                  type yang:date-and-time;
                  description
                    " Last good path time.";
                }
    
                container hops {
                  description
                    "List of result records of a single hop.";
                  list hop {
                    key "index";
                    description
                      "Statistics of result records of a single hop.";
                    leaf index {
                      type uint32 {
                        range "1..1000000";
                      }
                      description "Hop index.";
                    }
    
                    leaf sent-probes {
                      type uint32;
                      description
                        "Total number of sent packets.";
                    }
    
                    leaf response-probes {
                      type uint32;
                      description
                        "Total number of received packets.";
                    }
    
                    leaf rtt-min {
                      type uint32;
                      units "ms";
                      description "Minimum RTT.";
                    }
    
                    leaf rtt-average {
                      type uint32;
                      units "ms";
                      description "Average RTT.";
                    }
    
                    leaf rtt-max {
                      type uint32;
                      units "ms";
                      description "Maximum RTT.";
                    }
    
                    leaf rtt-sum {
                      type uint32;
                      units "ms";
                      description "Sum of RTT.";
                    }
    
                    leaf rtt-sum-square {
                      type uint64;
                      description
                        "Sum of RTT square.";
                    }
    
                    leaf rtd-thresholds {
                      type uint32;
                      description
                        "Counts of RTD over Threshold.";
                    }
    
                    leaf last-probe-time {
                      type yang:date-and-time;
                      description
                        "Last good probe time.";
                    }
    
                    leaf dest-address {
                      type inet:ip-address-no-zone;
                      description
                        "Destination IPv4 address.";
                    }
    
                    leaf packet-loss-ratio {
                      type uint8;
                      units "%";
                      description
                        "Packet loss ratio.";
                    }
                  }  // list hop
                }  // container hops
              }  // list trace-result
            }  // container trace-results
    
            container lsp-jitter-results {
              config false;
              description
                "List of NQA lsp jitter test instance test result record table.";
              list lsp-jitter-result {
                key "admin-name test-name running-index";
                description
                  "Statistics of NQA lsp jitter test instance test result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completions {
                  type result-status-all-type;
                  description
                    "Running results (success or failed or no-result).";
                }
    
                leaf sent-probes {
                  type uint32;
                  description
                    "Total number of sent packets.";
                }
    
                leaf response-probes {
                  type uint32;
                  description
                    "Total number of received packets.";
                }
    
                leaf rtd-thresholds {
                  type uint32;
                  description
                    "Counts of round-trip-delay over Threshold.";
                }
    
                leaf rtt-min {
                  type uint32;
                  units "ms";
                  description "Minimum RTT.";
                }
    
                leaf rtt-max {
                  type uint32;
                  units "ms";
                  description "Maximum RTT.";
                }
    
                leaf rtt-average {
                  type uint32;
                  units "ms";
                  description "Average RTT.";
                }
    
                leaf rtt-sum {
                  type uint32;
                  units "ms";
                  description "Sum of RTT.";
                }
    
                leaf rtt-sum-square {
                  type uint64;
                  description
                    "Sum of RTT square.";
                }
    
                leaf num-of-rtt {
                  type uint32;
                  description "Number of RTT.";
                }
    
                leaf sequence-errors {
                  type uint32;
                  description
                    "Number of packets with incorrect sequence numbers.";
                }
    
                leaf rtt-status-errors {
                  type uint32;
                  description
                    "Number of Rtt statistical failures.";
                }
    
                leaf busies {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf timeouts {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf drops {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                leaf src2dst-min-positive-jitter {
                  type uint32;
                  description
                    "Minimum positive jitter from the source to the destination.";
                }
    
                leaf src2dst-max-positive-jitter {
                  type uint32;
                  description
                    "Maximum positive jitter from the source to the destination.";
                }
    
                leaf src2dst-positive-jitter-num {
                  type uint32;
                  description
                    "Number of positive jitter from the source to the destination.";
                }
    
                leaf src2dst-positive-jitter-sum {
                  type uint32;
                  description
                    "Sum of positive jitter from the source to the destination.";
                }
    
                leaf src2dst-positive-jit-square-sum {
                  type uint64;
                  description
                    "Square sum of the positive jitter from the source to the destination.";
                }
    
                leaf src2dst-min-negative-jitter {
                  type uint32;
                  description
                    "Minimum negative jitter from the source to the destination.";
                }
    
                leaf src2dst-max-negative-jitter {
                  type uint32;
                  description
                    "Maximum negative jitter from the source to the destination.";
                }
    
                leaf src2dst-negative-jitter-num {
                  type uint32;
                  description
                    "Number of negative jitter from the source to the destination.";
                }
    
                leaf src2dst-negative-jitter-sum {
                  type uint32;
                  description
                    "Sum of negative jitter from the source to the destination.";
                }
    
                leaf src2dst-negative-jit-square-sum {
                  type uint64;
                  description
                    "Square sum of the negative jitter from the source to the destination.";
                }
    
                leaf src2dst-average-jitter-num {
                  type uint32;
                  description
                    "Average jitter from the source to the destination.";
                }
    
                leaf unknown-reason-packet-loss-num {
                  type uint32;
                  description
                    "Number of packets discarded due to unknown causes.";
                }
    
                leaf jitter-out {
                  type string {
                    length "0..11";
                  }
                  description
                    "Jitter of send packet.";
                }
    
                leaf packet-loss-ratio {
                  type uint32;
                  units "%";
                  description
                    "Packet loss ratio.";
                }
              }  // list lsp-jitter-result
            }  // container lsp-jitter-results
    
            container path-mtu-results {
              config false;
              description
                "List of NQA path mtu test instance test result record table.";
              list path-mtu-result {
                key "admin-name test-name running-index";
                description
                  "Statistics of NQA path mtutest instance test result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completions {
                  type result-status-all-type;
                  description
                    "Running results (success or failed or no-result).";
                }
    
                leaf dest-address {
                  type inet:ipv4-address-no-zone;
                  description
                    "Destination IPv4 address.";
                }
    
                leaf mtu-min {
                  type uint16 {
                    range "48..9198";
                  }
                  description
                    "The minimum value of the path MTU test.";
                }
    
                leaf mtu-max {
                  type uint16 {
                    range "48..9198";
                  }
                  description
                    "The maximum value of the path MTU test.";
                }
    
                leaf mtu {
                  type uint16 {
                    range "48..9198";
                  }
                  description "MTU.";
                }
    
                leaf step {
                  type uint16 {
                    range "1..512";
                  }
                  description "Test step.";
                }
    
                leaf sent-probes {
                  type uint32;
                  description
                    "Total number of sent packets.";
                }
    
                leaf response-probes {
                  type uint32;
                  description
                    "Total number of received packets.";
                }
    
                leaf busies {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf drops {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                leaf timeouts {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf optimum-first-step {
                  type uint16 {
                    range "1..512";
                  }
                  description
                    "Optimum first step.";
                }
              }  // list path-mtu-result
            }  // container path-mtu-results
    
            container jitter-results {
              config false;
              description
                "List of NQA jitter test instance test result record table. This table is used to query the execution results of jitter, ICMP jitter, MAC ping, and PWE3 ping test cases.";
              list jitter-result {
                key "admin-name test-name running-index";
                description
                  "Statistics of NQA jitter test instance test result record table. This table is used to query the execution results of jitter, ICMP jitter, MAC ping, and PWE3 ping test cases.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completions {
                  type result-status-type;
                  description
                    "Running results (success or failed or no-result).";
                }
    
                leaf sent-probes {
                  type uint32;
                  description
                    "Total number of sent packets.";
                }
    
                leaf response-probes {
                  type uint32;
                  description
                    "Total number of received packets.";
                }
    
                leaf rtd-over-threshold-num {
                  type uint32;
                  description
                    "Number of packets whose RTT exceeds the threshold.";
                }
    
                leaf sd-owd-over-threshold-num {
                  type uint32;
                  description
                    "Number of packets whose one-way delay from the source to the destination exceeds the threshold.";
                }
    
                leaf ds-owd-over-threshold-num {
                  type uint32;
                  description
                    "Number of packets whose one-way delay from the destination to the source exceeds the threshold.";
                }
    
                leaf rtt-min {
                  type uint32;
                  units "ms";
                  description "Minimum RTT.";
                }
    
                leaf rtt-average {
                  type uint32;
                  units "ms";
                  description "Average RTT.";
                }
    
                leaf rtt-max {
                  type uint32;
                  units "ms";
                  description "Maximum RTT.";
                }
    
                leaf rtt-sum {
                  type uint32;
                  units "ms";
                  description "Sum of RTT.";
                }
    
                leaf rtt-square-sum {
                  type uint64;
                  description
                    "Sum of RTT square.";
                }
    
                leaf num-of-rtt {
                  type uint32;
                  description "Number of RTT.";
                }
    
                leaf drop-num {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                leaf sequence-error-num {
                  type uint32;
                  description
                    "Number of packets with incorrect sequence numbers.";
                }
    
                leaf rtt-status-error-num {
                  type uint32;
                  description
                    "Number of packets with invalid timestamps.";
                }
    
                leaf busy-num {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf timeout-num {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf src2dst-min-positive-jitter {
                  type uint32;
                  description
                    "Minimum positive jitter from the source to the destination.";
                }
    
                leaf src2dst-max-positive-jitter {
                  type uint32;
                  description
                    "Maximum positive jitter from the source to the destination.";
                }
    
                leaf src2dst-positive-jitter-num {
                  type uint32;
                  description
                    "Number of positive jitter from the source to the destination.";
                }
    
                leaf src2dst-positive-jitter-sum {
                  type uint32;
                  description
                    "Sum of positive jitter from the source to the destination.";
                }
    
                leaf src2dst-positive-jit-square-sum {
                  type uint64;
                  description
                    "Square sum of the positive jitter from the source to the destination.";
                }
    
                leaf src2dst-min-negative-jitter {
                  type uint32;
                  description
                    "Minimum negative jitter from the source to the destination.";
                }
    
                leaf src2dst-max-negative-jitter {
                  type uint32;
                  description
                    "Maximum negative jitter from the source to the destination.";
                }
    
                leaf src2dst-negative-jitter-num {
                  type uint32;
                  description
                    "Number of negative jitter from the source to the destination.";
                }
    
                leaf src2dst-negative-jitter-sum {
                  type uint32;
                  description
                    "Sum of negative jitter from the source to the destination.";
                }
    
                leaf src2dst-negative-jit-square-sum {
                  type uint64;
                  description
                    "Square sum of the negative jitter from the source to the destination.";
                }
    
                leaf dst2src-min-positive-jitter {
                  type uint32;
                  description
                    "Minimum positive jitter from the destination to the source.";
                }
    
                leaf dst2src-max-positive-jitter {
                  type uint32;
                  description
                    "Maximum positive jitter from the destination to the source.";
                }
    
                leaf dst2src-positive-jitter-num {
                  type uint32;
                  description
                    "Number of positive jitter from the destination to the source.";
                }
    
                leaf dst2src-positive-jitter-sum {
                  type uint32;
                  description
                    "Sum of positive jitter from the destination to the source.";
                }
    
                leaf dst2src-positive-jit-square-sum {
                  type uint32;
                  description
                    "Square sum of the positive jitter from the destination to the source.";
                }
    
                leaf dst2src-min-negative-jitter {
                  type uint32;
                  description
                    "Minimum negative jitter from the destination to the source.";
                }
    
                leaf dst2src-max-negative-jitter {
                  type uint32;
                  description
                    "Maximum negative jitter from the destination to the source.";
                }
    
                leaf dst2src-negative-jitter-num {
                  type uint32;
                  description
                    "Number of negative jitter from the destination to the source.";
                }
    
                leaf dst2src-negative-jitter-sum {
                  type uint32;
                  description
                    "Sum of negative jitter from the destination to the source.";
                }
    
                leaf dst2src-negative-jit-square-num {
                  type uint32;
                  description
                    "Square sum of the negative jitter from the destination to the source.";
                }
    
                leaf src2dst-min-delay {
                  type uint32;
                  description
                    "Minimum delay from the source to the destination.";
                }
    
                leaf src2dst-avg-delay {
                  type uint32;
                  description
                    "Average delay from the source to the destination.";
                }
    
                leaf src2dst-max-delay {
                  type uint32;
                  description
                    "Maximum delay from the source to the destination.";
                }
    
                leaf src2dst-delay-square-sum {
                  type uint64;
                  description
                    "Square sum of the delay from the source to the destination.";
                }
    
                leaf dst2src-min-delay {
                  type uint32;
                  description
                    "Minimum delay from the destination to the source.";
                }
    
                leaf dst2src-avg-delay {
                  type uint32;
                  description
                    "Average delay from the destination to the source.";
                }
    
                leaf dst2src-max-delay {
                  type uint32;
                  description
                    "Maximum delay from the destination to the source.";
                }
    
                leaf dst2src-delay-square-sum {
                  type uint32;
                  description
                    "Square sum of the delay from the destination to the source.";
                }
    
                leaf src2dst-packet-loss-num {
                  type uint32;
                  description
                    "Number of discarded packets from the source to the destination.";
                }
    
                leaf dst2src-packet-loss-num {
                  type uint32;
                  description
                    "Number of discarded packets from the destination to the source.";
                }
    
                leaf unknown-reason-packet-loss-num {
                  type uint32;
                  description
                    "Number of packets discarded due to unknown causes.";
                }
    
                leaf average-jitter {
                  type uint32;
                  description "Average jitter.";
                }
    
                leaf src2dst-average-jitter {
                  type uint32;
                  description
                    "Average jitter from the source to the destination.";
                }
    
                leaf dst2src-average-jitter {
                  type uint32;
                  description
                    "Average jitter from the destination to the source.";
                }
    
                leaf average-jitter-out {
                  type string {
                    length "0..11";
                  }
                  description
                    "Higher-precision average jitter from the source to the destination.";
                }
    
                leaf average-jitter-in {
                  type string {
                    length "0..11";
                  }
                  description
                    "Higher-precision average jitter from the destination to the source.";
                }
    
                leaf num-of-owd {
                  type uint32;
                  description
                    "Number of one-way delay measurements.";
                }
    
                leaf packet-loss-ratio {
                  type uint32;
                  units "%";
                  description
                    "Packet loss ratio.";
                }
    
                leaf src2dst-owd-sum {
                  type uint32;
                  description
                    "The sum of one-way delay from the source to the destination.";
                }
    
                leaf dst2src-owd-sum {
                  type uint32;
                  description
                    "The sum of one-way delay from the destination to the source.";
                }
    
                leaf icpif {
                  type uint32;
                  description
                    "Calculated planning impairment factor loss/delay busyout threshold.";
                }
    
                leaf mos-cq {
                  type uint32;
                  description
                    "The average score of VoIP performance evaluation.";
                }
    
                leaf time-unit {
                  type timestamp-unit-type;
                  description
                    "Timestamp unit(0:millisecond, 1:microsecond).";
                }
    
                leaf attempts-num {
                  type uint32;
                  description "Number of tests.";
                }
    
                leaf disconnect-operation-num {
                  type uint32;
                  description
                    "Number of times that the peer device tears down the connection.";
                }
    
                leaf connection-fail-num {
                  type uint32;
                  description
                    "Number of connection failures.";
                }
    
                leaf dest-address {
                  type inet:ipv4-address-no-zone;
                  description
                    "Destination IPv4 address.";
                }
    
                leaf last-good-probe-time {
                  type yang:date-and-time;
                  description
                    "Last good probe time.";
                }
              }  // list jitter-result
            }  // container jitter-results
    
            container arp-ping-ip-results {
              config false;
              description
                "List of arp ping IP NQA test instance test result record table.";
              list arp-ping-ip-result {
                key "admin-name test-name running-index";
                description
                  "Statistics of NQA test instance test result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completion {
                  type result-status-type;
                  description "Running results.";
                }
    
                leaf sent-probes {
                  type uint32;
                  description
                    "Total number of sent packets.";
                }
    
                leaf response-probes {
                  type uint32;
                  description
                    "Total number of received packets.";
                }
    
                leaf test-attempts {
                  type uint32;
                  description
                    "Number of times a test instance is performed.";
                }
    
                leaf drops {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                leaf timeouts {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf busies {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf dest-mac-address {
                  type pub-type:mac-address;
                  description
                    "Destination MAC address.";
                }
    
                leaf last-probe-time {
                  type yang:date-and-time;
                  description
                    "Last good probe time.";
                }
              }  // list arp-ping-ip-result
            }  // container arp-ping-ip-results
    
            container multi-path-results {
              config false;
              description
                "List of multiple path test result records of NQA test instance.";
              list multi-path-result {
                key "admin-name test-name running-index path-index";
                description
                  "Statistics of multiple path test result record table of NQA test instance.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf path-index {
                  type uint32;
                  description "LSP path index.";
                }
    
                leaf preference {
                  type uint32;
                  description "Path preference.";
                }
    
                leaf path-type {
                  type lsp-sr-policy-path;
                  description
                    "Path type (main-path or backup-path or unknown).";
                }
    
                leaf protocol-origin {
                  type lsp-protocol-origin;
                  description
                    "Protocol source (pecp or bgp or local or unknown).";
                }
    
                leaf asn {
                  type uint32;
                  description
                    "Autonomous system number.";
                }
    
                leaf node-address {
                  type inet:ipv4-address-no-zone;
                  description
                    "Endpoint IP address.";
                }
    
                leaf discriminator {
                  type uint32;
                  description "Discriminator.";
                }
    
                leaf segment-list-id {
                  type uint32;
                  description "Segment list ID.";
                }
    
                leaf xc-index {
                  type uint32;
                  description "XC index.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completions {
                  type result-status-all-type;
                  description
                    "Running result (success or failed or no result).";
                }
    
                leaf sent-probes {
                  type uint32;
                  description
                    "Total number of sent packets.";
                }
    
                leaf response-probes {
                  type uint32;
                  description
                    "Total number of received packets.";
                }
    
                leaf rtd-over-threshold-num {
                  type uint32;
                  description
                    "Number of packets whose RTT exceeds the threshold.";
                }
    
                leaf test-attempts-num {
                  type uint32;
                  description
                    "Number of times a test instance is performed.";
                }
    
                leaf drop-num {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                leaf disconnect-operation-num {
                  type uint32;
                  description
                    "Number of disconnected connections.";
                }
    
                leaf timeout-num {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf busy-num {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf connection-fail-num {
                  type uint32;
                  description
                    "Number of connection setup failures.";
                }
    
                leaf sequence-error-num {
                  type uint32;
                  description
                    "Number of packets with incorrect sequence numbers.";
                }
    
                leaf rtt-status-error-num {
                  type uint32;
                  description
                    "Number of packets with invalid timestamps.";
                }
    
                leaf dest-address {
                  type inet:ipv4-address-no-zone;
                  description
                    "Destination IPv4 address.";
                }
    
                leaf rtt-min {
                  type uint32;
                  units "ms";
                  description "Minimum RTT.";
                }
    
                leaf rtt-average {
                  type uint32;
                  units "ms";
                  description "Average RTT.";
                }
    
                leaf rtt-max {
                  type uint32;
                  units "ms";
                  description "Maximum RTT.";
                }
    
                leaf rtt-sum {
                  type uint32;
                  units "ms";
                  description "Sum of RTT.";
                }
    
                leaf rtt-square-sum {
                  type uint64;
                  description
                    "Sum of RTT square.";
                }
    
                leaf packet-loss-ratio {
                  type uint8;
                  units "%";
                  description
                    "Packet loss ratio.";
                }
    
                leaf last-probe-time {
                  type yang:date-and-time;
                  description
                    "Last good probe time.";
                }
              }  // list multi-path-result
            }  // container multi-path-results
    
            container trace-multi-path-results {
              config false;
              description
                "List of NQA test instance multi path test trace result record table.";
              list trace-multi-path-result {
                key "admin-name test-name running-index path-index";
                description
                  "Statistics of NQA test instance test trace result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf path-index {
                  type uint32;
                  description "Lsp index.";
                }
    
                leaf preference {
                  type uint32;
                  description "Path preference.";
                }
    
                leaf path-type {
                  type lsp-sr-policy-path;
                  description
                    "Path type (main-path or backup-path or unknown).";
                }
    
                leaf protocol-origin {
                  type lsp-protocol-origin;
                  description
                    "Protocol source (pecp or bgp or local or unknown).";
                }
    
                leaf asn {
                  type uint32;
                  description
                    "Autonomous system number.";
                }
    
                leaf node-address {
                  type inet:ipv4-address-no-zone;
                  description
                    "Endpoint IP address.";
                }
    
                leaf discriminator {
                  type uint32;
                  description "Discriminator.";
                }
    
                leaf segment-list-id {
                  type uint32;
                  description "Segment list ID.";
                }
    
                leaf xc-index {
                  type uint32;
                  description "XC index.";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf completions {
                  type result-status-all-type;
                  description
                    "Running result (success or failed or no result).";
                }
    
                leaf disconnect-operation-num {
                  type uint32;
                  description
                    "Number of disconnected connections.";
                }
    
                leaf test-attempts-num {
                  type uint32;
                  description
                    "Number of times a test instance is performed.";
                }
    
                leaf timeout-num {
                  type uint32;
                  description
                    "Number of timeout packets.";
                }
    
                leaf busy-num {
                  type uint32;
                  description
                    "Number of packets that fail to be sent due to reasons such as busy system.";
                }
    
                leaf connection-fail-num {
                  type uint32;
                  description
                    "Number of connection setup failures.";
                }
    
                leaf sequence-error-num {
                  type uint32;
                  description
                    "Number of packets with incorrect sequence numbers.";
                }
    
                leaf rtt-status-error-num {
                  type uint32;
                  description
                    "Number of packets with invalid timestamps.";
                }
    
                leaf drop-num {
                  type uint32;
                  description
                    "Number of discarded packets.";
                }
    
                container hops {
                  description
                    "List of result records of a single hop.";
                  list hop {
                    key "index";
                    description
                      "Statistics of result records of a single hop.";
                    leaf index {
                      type uint32 {
                        range "1..1000000";
                      }
                      description "Hop index.";
                    }
    
                    leaf sent-probes {
                      type uint32;
                      description
                        "Total number of sent packets.";
                    }
    
                    leaf response-probes {
                      type uint32;
                      description
                        "Total number of received packets.";
                    }
    
                    leaf rtt-min {
                      type uint32;
                      units "ms";
                      description "Minimum RTT.";
                    }
    
                    leaf rtt-average {
                      type uint32;
                      units "ms";
                      description "Average RTT.";
                    }
    
                    leaf rtt-max {
                      type uint32;
                      units "ms";
                      description "Maximum RTT.";
                    }
    
                    leaf rtt-sum {
                      type uint32;
                      units "ms";
                      description "Sum of RTT.";
                    }
    
                    leaf rtt-square-sum {
                      type uint64;
                      description
                        "Sum of RTT square.";
                    }
    
                    leaf rtd-over-threshold-num {
                      type uint32;
                      description
                        "Number of packets whose RTT exceeds the threshold.";
                    }
    
                    leaf last-probe-time {
                      type yang:date-and-time;
                      description
                        "Last good probe time.";
                    }
    
                    leaf dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IPv4 address.";
                    }
    
                    leaf packet-loss-ratio {
                      type uint8;
                      units "%";
                      description
                        "Packet loss ratio.";
                    }
                  }  // list hop
                }  // container hops
              }  // list trace-multi-path-result
            }  // container trace-multi-path-results
    
            container path-jitter-results {
              config false;
              description
                "List of NQA path jitter test instance test result record table.";
              list path-jitter-result {
                key "admin-name test-name running-index";
                description
                  "Statistics of NQA path jitter test instance test result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Test instance name.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..100000";
                  }
                  description "Running index.";
                }
    
                leaf path-jitter-stage {
                  type result-path-jitter-status-type;
                  description
                    "Stage of the test instance (initial or trace-start or trace-end or jitter-start or jitter-end or close).";
                }
    
                leaf status {
                  type test-finsh-status-type;
                  description
                    "Test status (finished or running).";
                }
    
                leaf trace-completions {
                  type result-status-type;
                  description
                    "Running results (success or failed or no-result).";
                }
    
                container path-jitter-hops {
                  description
                    "List of result records of a single hop.";
                  list path-jitter-hop {
                    key "index";
                    description
                      "Statistics of result records of a single hop.";
                    leaf index {
                      type uint32 {
                        range "1..1000000";
                      }
                      description "Hop index.";
                    }
    
                    leaf dest-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IPv4 address.";
                    }
    
                    leaf hop-jitter-completions {
                      type result-status-type;
                      description
                        "Running result of each hop (success or failed or no-result).";
                    }
    
                    leaf hop-jitter-status {
                      type test-finsh-status-type;
                      description
                        "Status of each hop (finished or running).";
                    }
    
                    leaf sent-probes {
                      type uint32;
                      description
                        "Total number of sent packets.";
                    }
    
                    leaf response-probes {
                      type uint32;
                      description
                        "Total number of received packets.";
                    }
    
                    leaf rtt-min {
                      type uint32;
                      units "ms";
                      description "Minimum RTT.";
                    }
    
                    leaf rtt-max {
                      type uint32;
                      units "ms";
                      description "Maximum RTT.";
                    }
    
                    leaf rtt-average {
                      type uint32;
                      units "ms";
                      description "Average RTT.";
                    }
    
                    leaf rtt-sum {
                      type uint32;
                      units "ms";
                      description "Sum of RTT.";
                    }
    
                    leaf rtt-square-sum {
                      type uint64;
                      description
                        "Sum of RTT square.";
                    }
    
                    leaf num-of-rtt {
                      type uint32;
                      description
                        "Number of RTT.";
                    }
    
                    leaf drop-num {
                      type uint32;
                      description
                        "Number of discarded packets.";
                    }
    
                    leaf sequence-error-num {
                      type uint32;
                      description
                        "Number of packets with incorrect sequence numbers.";
                    }
    
                    leaf rtt-status-error-num {
                      type uint32;
                      description
                        "Number of packets with invalid timestamps.";
                    }
    
                    leaf busy-num {
                      type uint32;
                      description
                        "Number of packets that fail to be sent due to reasons such as busy system.";
                    }
    
                    leaf timeout-num {
                      type uint32;
                      description
                        "Number of timeout packets.";
                    }
    
                    leaf src2dst-min-positive-jitter {
                      type uint32;
                      description
                        "Minimum positive jitter from the source to the destination.";
                    }
    
                    leaf src2dst-max-positive-jitter {
                      type uint32;
                      description
                        "Maximum positive jitter from the source to the destination.";
                    }
    
                    leaf src2dst-positive-jitter-num {
                      type uint32;
                      description
                        "Number of positive jitter from the source to the destination.";
                    }
    
                    leaf src2dst-positive-jitter-sum {
                      type uint32;
                      description
                        "Sum of positive jitter from the source to the destination.";
                    }
    
                    leaf src2dst-positive-jit-square-sum {
                      type uint64;
                      description
                        "Square sum of the positive jitter from the source to the destination.";
                    }
    
                    leaf src2dst-min-negative-jitter {
                      type uint32;
                      description
                        "Minimum negative jitter from the source to the destination.";
                    }
    
                    leaf src2dst-max-negative-jitter {
                      type uint32;
                      description
                        "Maximum negative jitter from the source to the destination.";
                    }
    
                    leaf src2dst-negative-jitter-num {
                      type uint32;
                      description
                        "Number of negative jitter from the source to the destination.";
                    }
    
                    leaf src2dst-negative-jitter-sum {
                      type uint32;
                      description
                        "Sum of negative jitter from the source to the destination.";
                    }
    
                    leaf src2dst-negative-jit-square-sum {
                      type uint64;
                      description
                        "Square sum of the negative jitter from the source to the destination.";
                    }
    
                    leaf dst2src-min-positive-jitter {
                      type uint32;
                      description
                        "Minimum positive jitter from the destination to the source.";
                    }
    
                    leaf dst2src-max-positive-jitter {
                      type uint32;
                      description
                        "Maximum positive jitter from the destination to the source.";
                    }
    
                    leaf dst2src-positive-jitter-num {
                      type uint32;
                      description
                        "Number of positive jitter from the destination to the source.";
                    }
    
                    leaf dst2src-positive-jitter-sum {
                      type uint32;
                      description
                        "Sum of positive jitter from the destination to the source.";
                    }
    
                    leaf dst2src-positive-jit-square-sum {
                      type uint64;
                      description
                        "Square sum of the positive jitter from the destination to the source.";
                    }
    
                    leaf dst2src-min-negative-jitter {
                      type uint32;
                      description
                        "Minimum negative jitter from the destination to the source.";
                    }
    
                    leaf dst2src-max-negative-jitter {
                      type uint32;
                      description
                        "Maximum negative jitter from the destination to the source.";
                    }
    
                    leaf dst2src-negative-jitter-num {
                      type uint32;
                      description
                        "Number of negative jitter from the destination to the source.";
                    }
    
                    leaf dst2src-negative-jitter-sum {
                      type uint32;
                      description
                        "Sum of negative jitter from the destination to the source.";
                    }
    
                    leaf dst2src-negative-jit-square-num {
                      type uint64;
                      description
                        "Square sum of the negative jitter from the destination to the source.";
                    }
    
                    leaf src2dst-max-delay {
                      type uint32;
                      description
                        "Maximum delay from the source to the destination.";
                    }
    
                    leaf dst2src-max-delay {
                      type uint32;
                      description
                        "Maximum delay from the destination to the source.";
                    }
    
                    leaf jitter-average {
                      type uint32;
                      description
                        "Average jitter.";
                    }
    
                    leaf src2dst-average-jitter {
                      type uint32;
                      description
                        "Average jitter from the source to the destination.";
                    }
    
                    leaf dst2src-average-jitter {
                      type uint32;
                      description
                        "Average jitter from the destination to the source.";
                    }
    
                    leaf num-of-owd {
                      type uint32;
                      description
                        "Number of one-way delay measurements.";
                    }
    
                    leaf src2dst-owd-sum {
                      type uint32;
                      description
                        "The sum of one-way delay from the source to the destination.";
                    }
    
                    leaf dst2src-owd-sum {
                      type uint32;
                      description
                        "The sum of one-way delay from the destination to the source.";
                    }
    
                    leaf average-jitter-out {
                      type string {
                        length "0..11";
                      }
                      description
                        "Higher-precision average jitter from the source to the destination.";
                    }
    
                    leaf average-jitter-in {
                      type string {
                        length "0..11";
                      }
                      description
                        "Higher-precision average jitter from the destination to the source.";
                    }
                  }  // list path-jitter-hop
                }  // container path-jitter-hops
              }  // list path-jitter-result
            }  // container path-jitter-results
    
            container ethernet-service-results {
              description
                "List of ethernet-service NQA test instance test result record table.";
              list ethernet-service-result {
                key "admin-name test-name test-result-index running-index";
                config false;
                description
                  "Statistics of ethernet-service NQA test instance test result record table.";
                leaf admin-name {
                  type string {
                    length "1..32";
                  }
                  description
                    "Administrator name.";
                }
    
                leaf test-name {
                  type string {
                    length "1..32";
                  }
                  description "Test name.";
                }
    
                leaf test-result-index {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "Test instance result index.";
                }
    
                leaf running-index {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "Test instance running index.";
                }
    
                leaf test-finish-status {
                  type test-finsh-status-type;
                  description
                    "Test finished status (finished or running).";
                }
    
                leaf test-result-status {
                  type test-result-type;
                  description
                    "Test result status (--, pass, failed, abort, or abnormal).";
                }
    
                leaf test-flow-num {
                  type uint8;
                  config false;
                  description
                    "Number of test flows bound to a test instance.";
                }
    
                leaf test-mode {
                  type test-mode-type;
                  description
                    "Test mode. The round-trip mode is only supported.";
                }
    
                leaf last-step {
                  type test-last-step-type;
                  description "Last test step.";
                }
    
                leaf estimate-test-time {
                  type uint32;
                  units "s";
                  description
                    "Estimated test time.";
                }
    
                leaf real-test-time {
                  type uint32;
                  units "s";
                  description "Real test time.";
                }
    
                container test-steps {
                  description
                    "List of test step result table.";
                  list test-step {
                    key "stage flow-id step";
                    description
                      "Statistics of test step result table.";
                    leaf stage {
                      type test-stage-type;
                      description
                        "Test stage (configuration or performance).";
                    }
    
                    leaf flow-id {
                      type uint16 {
                        range "1..65535";
                      }
                      description
                        "Test flow ID.";
                    }
    
                    leaf step {
                      type test-step-type;
                      description "Test step.";
                    }
    
                    leaf begin-time {
                      type yang:date-and-time;
                      description
                        "Start test time of a Test Unit.";
                    }
    
                    leaf end-time {
                      type yang:date-and-time;
                      description
                        "End test time of a Test Unit.";
                    }
    
                    leaf result-status {
                      type test-result-type;
                      description
                        "Test result status (--, pass, failed, abort, or abnormal).";
                    }
    
                    leaf min-ir {
                      type uint32;
                      units "kbit";
                      description
                        "Minimum information rate.";
                    }
    
                    leaf max-ir {
                      type uint32;
                      units "kbit";
                      description
                        "Maximum information rate.";
                    }
    
                    leaf mean-ir {
                      type uint32;
                      units "kbit";
                      description
                        "Mean information rate.";
                    }
    
                    leaf min-ftd {
                      type uint32;
                      units "us";
                      description
                        "Minimum frame transmission delay.";
                    }
    
                    leaf max-ftd {
                      type uint32;
                      units "us";
                      description
                        "Maximum frame transmission delay.";
                    }
    
                    leaf mean-ftd {
                      type uint32;
                      units "us";
                      description
                        "Mean frame transmission delay.";
                    }
    
                    leaf min-fdv {
                      type uint32;
                      units "us";
                      description
                        "Minimum frame delay variation.";
                    }
    
                    leaf max-fdv {
                      type uint32;
                      units "us";
                      description
                        "Maximum frame delay variation.";
                    }
    
                    leaf mean-fdv {
                      type uint32;
                      units "us";
                      description
                        "Mean frame delay variation.";
                    }
    
                    leaf fl-count {
                      type uint64;
                      description
                        "Frame loss count.";
                    }
    
                    leaf flr {
                      type string {
                        length "1..49";
                      }
                      units "0.001 %";
                      description
                        "Frame loss ratio.";
                    }
    
                    leaf unavail-count {
                      type uint32;
                      description
                        "Unavailable seconds count. Statistics are available only in the performance test.";
                    }
    
                    leaf avail-ratio {
                      type string {
                        length "1..49";
                      }
                      units "0.001 %";
                      description
                        "Available seconds ratio. Statistics are available only in the performance test.";
                    }
                  }  // list test-step
                }  // container test-steps
              }  // list ethernet-service-result
            }  // container ethernet-service-results
          }  // container record
        }  // container nqa
    
        rpc test-instance-execution {
          ext:node-ref "/nqa:nqa/nqa:instances/nqa:instance";
          description
            "The test instance execution.";
          input {
            leaf admin-name {
              type leafref {
                path "/nqa/instances/instance/admin-name";
              }
              mandatory true;
              description "Administrator name.";
            }
    
            leaf test-name {
              type leafref {
                path "/nqa/instances/instance/test-name";
              }
              mandatory true;
              description "Test name.";
            }
    
            choice execution-policy {
              description
                "The test instance start policy.";
              case start {
                description "Start the test.";
                choice start-type {
                  description
                    "The test instance start type.";
                  case start-now {
                    description
                      "Start the test now.";
                    leaf start-now {
                      type empty;
                      mandatory true;
                      description
                        "Receive the command then start the test.";
                    }
    
                    choice start-now-end-type {
                      description
                        "Test instance end type.";
                      case at {
                        description
                          "Stop the test at the specified time.";
                        leaf start-now-end-time {
                          type pub-type:time;
                          mandatory true;
                          description
                            "The test instance end time.";
                        }
    
                        leaf start-now-end-date {
                          type pub-type:date;
                          description
                            "The test instance end date.";
                        }
                      }  // case at
    
                      case delay {
                        description
                          "Stop the test after the specified delay time.";
                        choice start-now-end-delay-type {
                          mandatory true;
                          description
                            "The test instance end delay type.";
                          case end-delay-time {
                            description
                              "The test instance end delay time.";
                            leaf start-now-end-delay-time {
                              type pub-type:time;
                              description
                                "The test instance end delay time.";
                            }
                          }  // case end-delay-time
    
                          case end-delay-seconds {
                            description
                              "The test instance end delay seconds.";
                            leaf start-now-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case end-delay-seconds
                        }  // choice start-now-end-delay-type
                      }  // case delay
    
                      case lifetime {
                        description
                          "Stop the test after the specified life time.";
                        choice start-now-end-lifetime-type {
                          mandatory true;
                          description
                            "The test instance end lifetime type.";
                          case lifetime-time {
                            description
                              "The test instance end lifetime time.";
                            leaf start-now-end-lifetime-time {
                              type pub-type:time;
                              description
                                "The test instance end lifetime time.";
                            }
                          }  // case lifetime-time
    
                          case lifetime-seconds {
                            description
                              "The test instance end lifetime seconds.";
                            leaf start-now-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime-seconds
                        }  // choice start-now-end-lifetime-type
                      }  // case lifetime
                    }  // choice start-now-end-type
                  }  // case start-now
    
                  case start-at {
                    description
                      "Execute at the specified time.";
                    leaf start-time {
                      type pub-type:time;
                      mandatory true;
                      description
                        "The test instance start time.";
                    }
    
                    leaf start-date {
                      type pub-type:date;
                      description
                        "The test instance start date.";
                    }
    
                    choice start-at-end-type {
                      description
                        "Test instance end type.";
                      case at {
                        description
                          "Stop the test at the specified time.";
                        leaf start-at-end-time {
                          type pub-type:time;
                          mandatory true;
                          description
                            "The test instance end time.";
                        }
    
                        leaf start-at-end-date {
                          type pub-type:date;
                          description
                            "The test instance end date.";
                        }
                      }  // case at
    
                      case delay {
                        description
                          "Stop the test after the specified delay time.";
                        choice start-at-end-delay-type {
                          mandatory true;
                          description
                            "The test instance end delay type.";
                          case end-delay-time {
                            description
                              "The test instance end delay time.";
                            leaf start-at-end-delay-time {
                              type pub-type:time;
                              description
                                "The test instance end delay time.";
                            }
                          }  // case end-delay-time
    
                          case end-delay-seconds {
                            description
                              "The test instance end delay seconds.";
                            leaf start-at-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case end-delay-seconds
                        }  // choice start-at-end-delay-type
                      }  // case delay
    
                      case lifetime {
                        description
                          "Stop the test after the specified life time.";
                        choice start-at-end-lifetime-type {
                          mandatory true;
                          description
                            "The test instance end lifetime type.";
                          case lifetime-time {
                            description
                              "The test instance end lifetime time.";
                            leaf start-at-end-lifetime-time {
                              type pub-type:time;
                              description
                                "The test instance end lifetime time.";
                            }
                          }  // case lifetime-time
    
                          case lifetime-seconds {
                            description
                              "The test instance end lifetime seconds.";
                            leaf start-at-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime-seconds
                        }  // choice start-at-end-lifetime-type
                      }  // case lifetime
                    }  // choice start-at-end-type
                  }  // case start-at
    
                  case start-delay {
                    description
                      "Delay some time then execute testcase.";
                    choice start-delay-type {
                      mandatory true;
                      description
                        "The test instance start delay time.";
                      case start-delay-time {
                        description
                          "Execute at the specified time.";
                        leaf start-delay-time {
                          type pub-type:time;
                          description
                            "The test instance start delay time.";
                        }
                      }  // case start-delay-time
    
                      case start-delay-seconds {
                        description
                          "The test instance start delay seconds.";
                        leaf start-delay-seconds {
                          type uint32 {
                            range "1..86399";
                          }
                          units "s";
                          description
                            "The test instance start delay seconds.";
                        }
                      }  // case start-delay-seconds
                    }  // choice start-delay-type
    
                    choice start-delay-end-type {
                      description
                        "Test instance end type.";
                      case at {
                        description
                          "Stop the test at the specified time.";
                        leaf start-delay-end-time {
                          type pub-type:time;
                          mandatory true;
                          description
                            "The test instance end time.";
                        }
    
                        leaf start-delay-end-date {
                          type pub-type:date;
                          description
                            "The test instance end date.";
                        }
                      }  // case at
    
                      case delay {
                        description
                          "Stop the test after the specified delay time.";
                        choice start-delay-end-delay-type {
                          mandatory true;
                          description
                            "The test instance end delay type.";
                          case end-delay-time {
                            description
                              "The test instance end delay time.";
                            leaf start-delay-end-delay-time {
                              type pub-type:time;
                              description
                                "The test instance end delay time.";
                            }
                          }  // case end-delay-time
    
                          case end-delay-seconds {
                            description
                              "The test instance end delay seconds.";
                            leaf start-delay-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case end-delay-seconds
                        }  // choice start-delay-end-delay-type
                      }  // case delay
    
                      case lifetime {
                        description
                          "Stop the test after the specified life time.";
                        choice start-delay-end-lifetime-type {
                          mandatory true;
                          description
                            "The test instance end lifetime type.";
                          case lifetime-time {
                            description
                              "The test instance end lifetime time.";
                            leaf start-delay-end-lifetime-time {
                              type pub-type:time;
                              description
                                "The test instance end lifetime time.";
                            }
                          }  // case lifetime-time
    
                          case lifetime-seconds {
                            description
                              "The test instance end lifetime seconds.";
                            leaf start-delay-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime-seconds
                        }  // choice start-delay-end-lifetime-type
                      }  // case lifetime
                    }  // choice start-delay-end-type
                  }  // case start-delay
    
                  case start-daily {
                    description
                      "Execute the test instance daily.";
                    leaf daily-start-time {
                      type pub-type:time;
                      mandatory true;
                      description
                        "Start time of daily execution.";
                    }
    
                    leaf daily-start-date {
                      type pub-type:date;
                      description
                        "Start date of daily execution.";
                    }
    
                    leaf daily-end-time {
                      type pub-type:time;
                      mandatory true;
                      description
                        "End time of daily execution.";
                    }
    
                    leaf daily-end-date {
                      type pub-type:date;
                      description
                        "End date of daily execution.";
                    }
                  }  // case start-daily
                }  // choice start-type
              }  // case start
    
              case stop {
                description "Stop the test.";
                leaf stop {
                  type empty;
                  description "Stop the test.";
                }
              }  // case stop
    
              case restart {
                description "Restart the test.";
                leaf restart {
                  type empty;
                  description
                    "Restart the test.";
                }
              }  // case restart
            }  // choice execution-policy
          }
        }  // rpc test-instance-execution
      }  // module huawei-nqa
    

© 2023 YumaWorks, Inc. All rights reserved.