Cisco-IOS-XE-rpc

NED RPC YANG module for IOS Copyright (c) 2016-2020 by Cisco Systems, Inc. All rights reserved.

  • Version: 2021-03-01

    Cisco-IOS-XE-rpc@2021-03-01


    
      module Cisco-IOS-XE-rpc {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XE-rpc";
    
        prefix ios-xe-rpc;
    
        import cisco-semver {
          prefix cisco-semver;
        }
        import ietf-inet-types {
          prefix inet;
        }
    
        include Cisco-IOS-XE-aaa-rpc;
        include Cisco-IOS-XE-arp-rpc;
        include Cisco-IOS-XE-bgp-rpc;
        include Cisco-IOS-XE-crypto-rpc;
        include Cisco-IOS-XE-multicast-rpc;
        include Cisco-IOS-XE-dhcp-rpc;
        include Cisco-IOS-XE-ospf-rpc;
        include Cisco-IOS-XE-platform-rpc;
    
        organization "Cisco Systems";
    
        contact "<mailto:cs-yang@cisco.com>";
    
        description
          "NED RPC YANG module for IOS
    Copyright (c) 2016-2020 by Cisco Systems, Inc.
    All rights reserved.";
    
        revision "2021-03-01" {
          description
            "- Added factory reset support";
        }
    
        revision "2020-11-01" {
          description
            "Added clear iox feature
    corrected new keyword addition";
        }
    
        revision "2020-07-01" {
          description
            "Added multicast feature RPC";
        }
    
        revision "2020-03-01" {
          description
            "Added a container in monitor capture";
        }
    
        revision "2019-11-01" {
          description "Added new test RPC";
        }
    
        revision "2019-07-01" {
          description
            "Establish semantic version baseline";
        }
    
        revision "2018-11-25" {
          description
            "Exec command to send AMP file analysis apikey";
        }
    
        revision "2018-11-07" {
          description
            "Cleanup spelling errors in description statements";
        }
    
        revision "2018-11-06" {
          description
            "Add UTD database update EXEC command";
        }
    
        revision "2018-10-29" {
          description
            "Added range-string for debug ipsec command";
        }
    
        revision "2018-10-12" {
          description
            "Added crypto pki debug and exec commands";
        }
    
        revision "2018-10-02" {
          description
            "Add unmount command in existing hw-module chain";
        }
    
        revision "2018-10-01" {
          description
            "Add IPSEC no debug exec commands";
        }
    
        revision "2018-09-20" {
          description
            "Add IPSEC debug exec commands";
        }
    
        revision "2018-08-17" {
          description
            "Added cts credential * and clear cts * commands";
        }
    
        revision "2018-08-05" {
          description
            "Add License Install Commands";
        }
    
        revision "2018-08-01" {
          description "Add UTD clear commands";
        }
    
        revision "2018-07-30" {
          description "Add hw-module commands";
        }
    
        revision "2018-06-18" {
          description
            "Update UTD signature update EXEC command to include local file support";
        }
    
        revision "2018-05-21" {
          description
            "Add Umbrella clear commands";
        }
    
        revision "2018-04-18" {
          description "Add ZBFW clear commands";
        }
    
        revision "2018-03-14" {
          description
            "Add UTD signature update EXEC command";
        }
    
        revision "2017-12-18" {
          description
            "Add GIR start maintenance and stop maintenance EXEC commands";
        }
    
        revision "2017-12-06" {
          description
            "Add Viptela clear aaa local user lockout username <> command";
        }
    
        revision "2017-11-27" {
          description
            "Add Viptela clear and release commands";
        }
    
        revision "2017-11-21" {
          description "Clear flow commands";
        }
    
        revision "2017-11-14" {
          description
            "Add app-hosting and guestshell EXEC commands";
        }
    
        revision "2017-11-04" {
          description "Add reason to reload";
        }
    
        revision "2017-10-12" {
          description
            "Added more nodes to the license RPC";
        }
    
        revision "2017-10-10" {
          description
            "Add copy and delete EXEC commands";
        }
    
        revision "2017-09-21" {
          description
            "Add virtual-service EXEC commands";
        }
    
        revision "2017-08-28" {
          description
            "Added the force option to the reload RPC";
        }
    
        revision "2017-07-13" {
          description "Added service sd-avc CLI";
        }
    
        revision "2017-02-07" {
          description "Initial revision";
        }
    
        cisco-semver:module-version "3.2.0";
        cisco-semver:module-version "3.1.0";
        cisco-semver:module-version "3.0.0";
        cisco-semver:module-version "2.1.0";
        cisco-semver:module-version "2.0.0";
        cisco-semver:module-version "1.0.0";
    
        rpc default {
          description
            "Set a command to its defaults";
          input {
            choice default-choice {
              mandatory true;
              leaf interface {
                type string {
                  pattern '[A-Za-z]([\w/.-]+)';
                }
                description
                  "Select an interface to configure";
              }
            }  // choice default-choice
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc default
    
        rpc clear {
          description "Clear";
          input {
            choice clear-choice {
              mandatory true;
              leaf interface {
                type string {
                  pattern '[A-Za-z]([\w/.-]+)';
                }
                description
                  "Select an interface to clear";
              }
              leaf count {
                type string {
                  pattern '[A-Za-z]([\w/.-]+)';
                }
                description
                  "Select an interface to clear";
              }
              container ip {
                choice ip-protocol {
                  case bgp-case {
                    container bgp {
                      description
                        "Clear BGP connections";
                      leaf peer-address-drop-node-name {
                        type union {
                          type inet:ipv4-address;
                          type inet:ipv6-address;
                        }
                        description
                          "BGP neighbor address to clear";
                      }
    
                      leaf vrf {
                        type string;
                        description
                          "Select a VPN Routing/Forwarding instance";
                      }
                    }  // container bgp
                  }  // case bgp-case
    
                  case dhcp-case {
                    container dhcp {
                      description
                        "Delete items from the DHCP database";
                      container binding {
                        description
                          "DHCP address bindings";
                        leaf vrf {
                          type string;
                          description
                            "DHCP vrf bindings";
                        }
    
                        leaf all-drop-node-name {
                          type string {
                            pattern '[*]';
                          }
                          mandatory true;
                          description
                            "Clear all automatic bindings";
                        }
                      }  // container binding
                    }  // container dhcp
                  }  // case dhcp-case
    
                  case ospf-case {
                    container ospf {
                      leaf id-drop-node-name {
                        type uint16;
                        description
                          "Process ID number";
                      }
    
                      leaf process {
                        type empty;
                        description
                          "Reset OSPF process";
                      }
                    }  // container ospf
                  }  // case ospf-case
                }  // choice ip-protocol
              }  // container ip
    
              case arp-cache-case {
                container arp-cache {
                  presence "true";
                  description
                    "Clear the entire ARP cache";
                  leaf vrf {
                    type string;
                    description
                      "Clear entries for a VPN Routing/Forwarding instance";
                  }
    
                  leaf interface {
                    type string {
                      pattern
                        '[A-Za-z]([\w/.-]+)';
                    }
                    description
                      "Clear the entire ARP cache on the interface";
                  }
    
                  leaf ip-drop-node-name {
                    type inet:ipv4-address;
                    description "IP address";
                  }
                }  // container arp-cache
              }  // case arp-cache-case
    
              case aaa-case {
                container aaa {
                  description "Clear AAA values";
                  container local {
                    description
                      "Clear AAA local method options";
                    container user {
                      description
                        "Clear local AAA users";
                      container lockout {
                        description
                          "Clear locked out local AAA users";
                        leaf username {
                          type string;
                          description
                            "Username of the locked-user";
                        }
                      }  // container lockout
                    }  // container user
                  }  // container local
                }  // container aaa
              }  // case aaa-case
    
              case platform-case {
                container platform {
                  description
                    "Clear platform information";
                  choice platform-choice {
                    case condition-case {
                      description
                        "Clear conditional debug and packet-trace configuration and data";
                      container condition {
                        leaf all {
                          type empty;
                          description
                            "Clear all config and data";
                        }
                      }  // container condition
                    }  // case condition-case
    
                    case packet-trace-case {
                      description
                        "Clear packet-trace configuration and data";
                      container packet-trace {
                        choice packet-trace-choice {
                          leaf configuration {
                            type empty;
                            description
                              "Clear packet-trace configuration";
                          }
                          leaf statistics {
                            type empty;
                            description
                              "Clear packet-trace statistics";
                          }
                        }  // choice packet-trace-choice
                      }  // container packet-trace
                    }  // case packet-trace-case
                    container hardware {
                      description
                        "Clear platform hardware information";
                      container qfp {
                        description
                          "Quantum Flow Processor";
                        container active {
                          description
                            "Active instance";
                          container feature {
                            description
                              "Clear features";
                            choice feature-choice {
                              container umbrella {
                                description
                                  "Clear QFP Umbrella";
                                container datapath {
                                  description
                                    "Clear Umbrella datapath";
                                  leaf stats {
                                    type empty;
                                    description
                                      "Clear Umbrella datapath stats";
                                  }
                                }  // container datapath
                              }  // container umbrella
                            }  // choice feature-choice
                          }  // container feature
                        }  // container active
                      }  // container qfp
                    }  // container hardware
                  }  // choice platform-choice
                }  // container platform
              }  // case platform-case
              leaf iox {
                type empty;
                description
                  "Clear all IOX data to the default, initial IOX state";
              }
            }  // choice clear-choice
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc clear
    
        rpc crypto {
          description
            "Encryption related commands";
          input {
            container pki {
              description
                "Public key components";
              choice subcommand {
                container benchmark {
                  description
                    "Benchmark commands";
                  leaf start {
                    type uint16 {
                      range "0..9990";
                    }
                    description
                      "Collection limit";
                  }
    
                  leaf wrap {
                    when "../start";
                    type empty;
                    description
                      "Wrap data to the start of buffer";
                  }
    
                  leaf stop {
                    type empty;
                    description
                      "stop collecting benchmark data";
                  }
                }  // container benchmark
                container crl {
                  description "CRL command";
                  leaf refresh-cache {
                    type empty;
                    description
                      "Refresh the CRL in cache";
                  }
    
                  leaf request {
                    type string;
                    description
                      "Requests a current CRL";
                  }
                }  // container crl
                container authenticate {
                  description
                    "Authenticate trustpoint";
                  leaf name-drop-node-name {
                    type string;
                    description
                      "trustpoint name";
                  }
                }  // container authenticate
                container enroll {
                  description
                    "enroll trustpoint";
                  leaf name-drop-node-name {
                    type string;
                    description
                      "trustpoint name";
                  }
                }  // container enroll
                container export {
                  description
                    "export certificate";
                  leaf name-drop-node-name {
                    type string;
                    description
                      "trustpoint name";
                  }
    
                  leaf pkcs12 {
                    type string;
                    description
                      "PKCS12 bundle url";
                  }
    
                  leaf password {
                    type string;
                    description
                      "PKCS12 bundle password";
                  }
                }  // container export
                container import {
                  description
                    "import certificate";
                  leaf name-drop-node-name {
                    type string;
                    description
                      "trustpoint name";
                  }
    
                  leaf certificate {
                    type empty;
                    description
                      "import id certificate";
                  }
    
                  leaf pkcs12 {
                    type string;
                    description
                      "PKCS12 bundle url";
                  }
    
                  leaf password {
                    type string;
                    description
                      "PKCS12 bundle password";
                  }
                }  // container import
                container certificate {
                  description
                    "validate certificate";
                  leaf validate {
                    type string;
                    description
                      "trustpoint name";
                  }
                }  // container certificate
                container server {
                  description "Server command";
                  leaf name-drop-node-name {
                    type string;
                    description "server name";
                  }
    
                  container grant {
                    description
                      "Grant enrollment requests";
                    leaf id-drop-node-name {
                      type uint16 {
                        range "1..999";
                      }
                      description
                        "Enrollment id";
                    }
    
                    leaf all {
                      type empty;
                      description
                        "Grant all pending requests";
                    }
                  }  // container grant
    
                  container password {
                    description
                      "One time password for SCEP enrollment";
                    container generate {
                      presence "true";
                      description
                        "Generate password";
                      leaf minutes-drop-node-name {
                        type uint16 {
                          range "1..1440";
                        }
                        description
                          "Validity in minutes";
                      }
                    }  // container generate
                  }  // container password
    
                  container reject {
                    description
                      "Reject enrollment requests";
                    leaf id-drop-node-name {
                      type uint16 {
                        range "1..999";
                      }
                      description
                        "Enrollment id";
                    }
    
                    leaf all {
                      type empty;
                      description
                        "Reject all pending requests";
                    }
                  }  // container reject
    
                  container remove {
                    description
                      "Remove enrollment requests";
                    leaf id-drop-node-name {
                      type uint16 {
                        range "1..999";
                      }
                      description
                        "Enrollment id";
                    }
    
                    leaf all {
                      type empty;
                      description
                        "Remove all pending requests";
                    }
                  }  // container remove
    
                  container request {
                    description
                      "Retrieve an enrollment request";
                    container pkcs10 {
                      description
                        "PKCS10 enrollment request";
                      leaf location-drop-node-name {
                        type enumeration {
                          enum "bootflash:" {
                            value 0;
                          }
                          enum "cns:" {
                            value 1;
                          }
                          enum "disk0:" {
                            value 2;
                          }
                          enum "disk1:" {
                            value 3;
                          }
                          enum "flash:" {
                            value 4;
                          }
                          enum "ftp:" {
                            value 5;
                          }
                          enum "http:" {
                            value 6;
                          }
                          enum "https:" {
                            value 7;
                          }
                          enum "null:" {
                            value 8;
                          }
                          enum "nvram:" {
                            value 9;
                          }
                          enum "pram:" {
                            value 10;
                          }
                          enum "rcp:" {
                            value 11;
                          }
                          enum "scep" {
                            value 12;
                          }
                          enum "scp:" {
                            value 13;
                          }
                          enum "sftp:" {
                            value 14;
                          }
                          enum "system:" {
                            value 15;
                          }
                          enum "tar:" {
                            value 16;
                          }
                          enum "terminal" {
                            value 17;
                          }
                          enum "tftp:" {
                            value 18;
                          }
                          enum "tmpsys:" {
                            value 19;
                          }
                          enum "tti" {
                            value 20;
                          }
                          enum "unix:" {
                            value 21;
                          }
                          enum "webui:" {
                            value 22;
                          }
                        }
                        description
                          "Retrieval location";
                      }
    
                      choice format {
                        leaf base64 {
                          type empty;
                          description
                            "output in base64 format";
                        }
                        leaf pem {
                          type empty;
                          description
                            "output in pem format";
                        }
                        container hex {
                          presence "true";
                          description
                            "output in hex format";
                          leaf tid-drop-node-name {
                            type string;
                            description
                              "Transaction ID";
                          }
    
                          leaf nonce-drop-node-name {
                            type string;
                            description "nonce";
                          }
    
                          leaf rid-drop-node-name {
                            type uint16 {
                              range "1..999";
                            }
                            description
                              "Request ID";
                          }
                        }  // container hex
                      }  // choice format
                    }  // container pkcs10
                  }  // container request
    
                  leaf revoke {
                    type string {
                      pattern '([0-9a-fA-FxX]+)';
                    }
                    description
                      "revoke certificate";
                  }
    
                  leaf unrevoke {
                    type string {
                      pattern '([0-9a-fA-FxX]+)';
                    }
                    description
                      "unrevoke certificate";
                  }
    
                  leaf start {
                    type empty;
                    description "Start server";
                  }
    
                  leaf stop {
                    type empty;
                    description "Stop server";
                  }
    
                  container trim {
                    description
                      "Trim the CRL based on expired certificates";
                    leaf url {
                      type enumeration {
                        enum "bootflash:" {
                          value 0;
                        }
                        enum "cns:" {
                          value 1;
                        }
                        enum "disk0:" {
                          value 2;
                        }
                        enum "disk1:" {
                          value 3;
                        }
                        enum "flash:" {
                          value 4;
                        }
                        enum "ftp:" {
                          value 5;
                        }
                        enum "http:" {
                          value 6;
                        }
                        enum "https:" {
                          value 7;
                        }
                        enum "null:" {
                          value 8;
                        }
                        enum "nvram:" {
                          value 9;
                        }
                        enum "pram:" {
                          value 10;
                        }
                        enum "rcp:" {
                          value 11;
                        }
                        enum "scp:" {
                          value 12;
                        }
                        enum "sftp:" {
                          value 13;
                        }
                        enum "system:" {
                          value 14;
                        }
                        enum "tar:" {
                          value 15;
                        }
                        enum "tftp:" {
                          value 16;
                        }
                        enum "tmpsys:" {
                          value 17;
                        }
                        enum "unix:" {
                          value 18;
                        }
                        enum "webui:" {
                          value 19;
                        }
                      }
                      description
                        "location of expired certs file";
                    }
    
                    leaf verbose {
                      type empty;
                    }
                  }  // container trim
                }  // container server
              }  // choice subcommand
            }  // container pki
    
            container key {
              description
                "Key related commands.";
              container zeroize {
                description "Remove RSA/EC keys";
                leaf rsa {
                  type string;
                  description "Remove RSA keys";
                }
              }  // container zeroize
            }  // container key
    
            container generate {
              description "Generate new keys";
              container ec {
                description
                  "Generate EC keys for ECDSA";
                leaf keysize {
                  type enumeration {
                    enum "256" {
                      value 0;
                    }
                    enum "384" {
                      value 1;
                    }
                  }
                  description "Number of bits";
                }
    
                leaf exportable {
                  type empty;
                  description
                    "Allow key to be exported";
                }
    
                leaf label {
                  type string;
                  description "Provide a label";
                }
              }  // container ec
    
              container rsa {
                presence "true";
                description "Generate RSA keys";
                leaf encryption {
                  type empty;
                  description
                    "Generate a general purpose RSA key pair for signing and encryption";
                }
    
                leaf exportable {
                  type empty;
                  description
                    "Allow the key to be exported";
                }
    
                leaf general-keys {
                  type empty;
                  description
                    "Generate a general purpose RSA key pair for signing and encryption";
                }
    
                leaf label {
                  type string;
                  description "Provide a label";
                }
    
                leaf modulus {
                  type uint16 {
                    range "360..4096";
                  }
                  description
                    "Provide number of modulus bits on the command line";
                }
    
                leaf on {
                  type string;
                  description
                    "create key on specified device.";
                }
    
                leaf redundancy {
                  type empty;
                  description
                    "Allow the key to be synced to high-availability peer";
                }
    
                leaf signature {
                  type empty;
                  description
                    "Generate a general purpose RSA key pair for signing and encryption";
                }
    
                leaf storage {
                  type string;
                  description
                    "Store key on specified device";
                }
    
                leaf usage-keys {
                  type empty;
                  description
                    "Generate separate RSA key pairs for signing and encryption";
                }
              }  // container rsa
            }  // container generate
    
            container export {
              description "Export keys";
              list ec {
                key "label";
                description "Export EC keys";
                leaf label {
                  type string;
                }
    
                container pem {
                  description
                    "File type to export";
                  choice terminal-url {
                    container terminal {
                      description
                        "Export via the terminal (cut-and-paste)";
                      choice des-3des {
                        leaf pk-3des {
                          type string;
                          description
                            "Encrypt the private key with 3DES";
                        }
                        leaf des {
                          type string;
                          description
                            "Encrypt the private key with DES";
                        }
                      }  // choice des-3des
                    }  // container terminal
                    container url {
                      description
                        "Export via the file systems";
                      leaf file {
                        type string {
                          pattern
                            '(((bootflash:)|(crashinfo:)|(flash:)|(ftp:)|(http:)|(https:)|(null:)|(nvram:)|(pram:)|(rcp:)|(scp:)|(system:)|(tar:)|(tftp:)|(tmpfs:)|(webui:)).*)';
                        }
                      }
    
                      choice des-3des {
                        leaf url-3des {
                          type string;
                          description
                            "Encrypt the private key with 3DES";
                        }
                        leaf des {
                          type string;
                          description
                            "Encrypt the private key with DES";
                        }
                      }  // choice des-3des
                    }  // container url
                  }  // choice terminal-url
                }  // container pem
              }  // list ec
    
              list rsa {
                key "label";
                description "Export RSRA keys";
                leaf label {
                  type string;
                }
    
                container pem {
                  description
                    "File type to export";
                  choice terminal-url {
                    container terminal {
                      description
                        "Export via the terminal (cut-and-paste)";
                      choice des-3des {
                        leaf pk-3des {
                          type string;
                          description
                            "Encrypt the private key with 3DES";
                        }
                        leaf des {
                          type string;
                          description
                            "Encrypt the private key with DES";
                        }
                      }  // choice des-3des
                    }  // container terminal
                    container url {
                      description
                        "Export via the file systems";
                      leaf file {
                        type string {
                          pattern
                            '(((bootflash:)|(crashinfo:)|(flash:)|(ftp:)|(http:)|(https:)|(null:)|(nvram:)|(pram:)|(rcp:)|(scp:)|(system:)|(tar:)|(tftp:)|(tmpfs:)|(webui:)).*)';
                        }
                      }
    
                      choice des-3des {
                        leaf url-3des {
                          type string;
                          description
                            "Encrypt the private key with 3DES";
                        }
                        leaf des {
                          type string;
                          description
                            "Encrypt the private key with DES";
                        }
                      }  // choice des-3des
                    }  // container url
                  }  // choice terminal-url
                }  // container pem
              }  // list rsa
            }  // container export
    
            container import {
              description "Import keys";
              list ec {
                key "name";
                description "Import EC keys";
                leaf name {
                  type string;
                }
    
                leaf exportable {
                  type empty;
                  description
                    "Allow key to be exported";
                }
    
                choice terminal-url {
                  leaf terminal {
                    type string;
                    description
                      "Import via the terminal (cut-and-paste)";
                  }
                  container url {
                    description
                      "Export via the file systems";
                    leaf file {
                      type string {
                        pattern
                          '(((bootflash:)|(cns:)|(crashinfo:)|(flash:)|(ftp:)|(http:)|(https:)|(null:)|(nvram:)|(pram:)|(rcp:)|(scp:)|(system:)|(tar:)|(tftp:)|(tmpfs:)|(webui:)).*)';
                      }
                    }
    
                    leaf key {
                      type string;
                    }
                  }  // container url
                }  // choice terminal-url
              }  // list ec
    
              list rsa {
                key "label";
                description "Import RSA keys";
                leaf label {
                  type string;
                }
    
                leaf encryption {
                  type empty;
                  description "Encryption key";
                }
    
                leaf exportable {
                  type empty;
                  description
                    "Allow the key to be exported";
                }
    
                leaf general-purpose {
                  type empty;
                  description
                    "General Purpose key";
                }
    
                leaf on {
                  type string;
                  description
                    "Make this an on-token key";
                }
    
                leaf pem {
                  type empty;
                  description
                    "File type to import";
                }
    
                leaf redundancy {
                  type empty;
                  description
                    "Sync this key to the standby";
                }
    
                leaf signature {
                  type empty;
                  description "Signature key";
                }
    
                leaf storage {
                  type string;
                  description
                    "Store key on specified device";
                }
    
                leaf usage-keys {
                  type empty;
                  description "Usage key pairs";
                }
    
                choice terminal-url {
                  leaf terminal {
                    type string;
                    description
                      "Import via the terminal (cut-and-paste)";
                  }
                  container url {
                    description
                      "Export via the file systems";
                    leaf file {
                      type string {
                        pattern
                          '(((bootflash:)|(cns:)|(crashinfo:)|(flash:)|(ftp:)|(http:)|(https:)|(null:)|(nvram:)|(pram:)|(rcp:)|(scp:)|(system:)|(tar:)|(tftp:)|(tmpfs:)|(webui:)).*)';
                      }
                    }
    
                    leaf key {
                      type string;
                    }
                  }  // container url
                }  // choice terminal-url
              }  // list rsa
            }  // container import
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc crypto
    
        rpc release {
          description "Release a resource";
          input {
            leaf dhcp {
              type string;
              description
                "Release a dhcp lease (an interface)";
            }
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc release
    
        rpc reload {
          description
            "Halt and perform a cold restart";
          input {
            leaf force {
              type boolean;
              description
                "Force a restart even if there is unsaved config";
            }
    
            leaf reason {
              type string;
              description "Reload reason";
            }
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc reload
    
        rpc factory-reset {
          description
            "Perform a factory reset of the device";
          input {
            container all {
              presence "true";
              description
                "Perform a factory reset of the device. This will
    restore the device to the factory setting and is an
    irreversible operation";
            }  // container all
    
            leaf keep-licensing-info {
              type empty;
              description
                "Perform a factory reset of the device. This will
    keep some licensing specific information";
            }
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc factory-reset
    
        rpc license {
          input {
            choice license-command-choice {
              container smart {
                choice smart-choice {
                  container save {
                    choice save-case {
                      container usage {
                        choice usage-case {
                          container all {
                            leaf file {
                              type string {
                                pattern
                                  '(((bootflash:)|(flash:)|(ftp:)|(http:)|(https:)|(nvram:)|(param:)|(scp:)|(syslog)|(system:)|(tftp:)|(tmpsys:)).*)';
                              }
                              description
                                "The local or network file path to write the RUM
    reports to.";
                            }
                          }  // container all
                          container unreported {
                            leaf file {
                              type string {
                                pattern
                                  '(((bootflash:)|(flash:)|(ftp:)|(http:)|(https:)|(nvram:)|(param:)|(scp:)|(syslog)|(system:)|(tftp:)|(tmpsys:)).*)';
                              }
                              description
                                "The local or network file path to write the RUM
    reports to.";
                            }
                          }  // container unreported
                        }  // choice usage-case
    
                        leaf days {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "Save RUM reports that include measurements in the
    specified number of days";
                        }
    
                        leaf file {
                          type string {
                            pattern
                              '(((bootflash:)|(flash:)|(ftp:)|(http:)|(https:)|(nvram:)|(param:)|(scp:)|(syslog)|(system:)|(tftp:)|(tmpsys:)).*)';
                          }
                          description
                            "The local or network file path to write the RUM
    reports to.";
                        }
                      }  // container usage
                      leaf trust-request {
                        type string {
                          pattern
                            '(((bootflash:)|(flash:)|(ftp:)|(http:)|(https:)|(nvram:)|(param:)|(scp:)|(syslog)|(system:)|(tftp:)|(tmpsys:)).*)';
                        }
                        description
                          "The local or network file path to write
    the trust request to.";
                      }
                    }  // choice save-case
                  }  // container save
                  container authorization {
                    choice authorization-choice {
                      container request {
                        leaf add {
                          type string;
                          description
                            "The feature name to get the authorization code for
    The smart agent will look this up in it's mapping
    table and get the proper entitlement tag for it.";
                        }
    
                        leaf replace {
                          type string;
                          description
                            "The feature name to get the authorization code for
    The smart agent will look this up in it's mapping
    table and get the proper entitlement tag for it.";
                        }
    
                        leaf all {
                          type empty;
                          description
                            "Applies to an HA configuration.";
                        }
    
                        leaf local {
                          type empty;
                          description
                            "The authorization request will only be for
    the active device.";
                        }
                      }  // container request
                      container return {
                        leaf all {
                          type empty;
                          description
                            "Applies to an HA configuration.";
                        }
    
                        leaf local {
                          type empty;
                          description
                            "The authorization request will only be for
    the active device.";
                        }
    
                        leaf offline {
                          type string;
                          description
                            "Returns a currently installed authorization
    code offline.";
                        }
    
                        leaf online {
                          type empty;
                          description
                            "Returns a currently installed authorization
    code online.";
                        }
                      }  // container return
                    }  // choice authorization-choice
                  }  // container authorization
                  leaf import {
                    type string;
                    mandatory true;
                    description
                      "The local or network file path to read from";
                  }
                  container trust {
                    leaf idtoken {
                      type string;
                      mandatory true;
                      description
                        "The ID token used to establish trust.";
                    }
    
                    leaf all {
                      type empty;
                      description
                        "If true perform the operation for all devices
    in an HA configuration.";
                    }
    
                    leaf local {
                      type empty;
                      description
                        "If false then only establish
    trust for the active device.";
                    }
    
                    leaf force {
                      type empty;
                      description
                        "Force the trust establishment even if the product
    instance has already establish trust with the Cisco
    Smart Software Management.";
                    }
                  }  // container trust
                  container register {
                    leaf idtoken {
                      type string;
                      mandatory true;
                    }
    
                    leaf force {
                      type empty;
                      description
                        "Forcefully register";
                    }
                  }  // container register
                  leaf deregister {
                    type empty;
                  }
                  container renew {
                    choice renew-choice {
                      mandatory true;
                      leaf ID {
                        type empty;
                      }
                      leaf auth {
                        type empty;
                      }
                    }  // choice renew-choice
                  }  // container renew
                }  // choice smart-choice
              }  // container smart
              leaf install {
                type string {
                  pattern
                    '(((bootflash:)|(flash:)|(ftp:)|(http:)|(https:)|(nvram:)|(param:)|(scp:)|(syslog)|(system:)|(tftp:)|(tmpsys:)).*)';
                }
                description
                  "Install license information";
              }
              leaf clear {
                type string;
                description
                  "Clear license information. Feature name to clear";
              }
            }  // choice license-command-choice
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc license
    
        rpc service {
          description
            "IOS integrated service enablement";
          input {
            choice services-choice {
              container waas {
                description "WAAS service";
                container wcm {
                  description
                    "Configure WAAS Central Manager (WCM)";
                  choice wcm-choices {
                    container ip {
                      description "ipv4";
                      leaf address {
                        type inet:ipv4-address;
                      }
                    }  // container ip
                    container ipv6 {
                      description "ipv6 address";
                      leaf address {
                        type inet:ipv6-address;
                      }
                    }  // container ipv6
                  }  // choice wcm-choices
                }  // container wcm
              }  // container waas
              container sd-avc {
                description
                  "SD-AVC service management";
                choice sd-avc-choice {
                  mandatory true;
                  leaf activate {
                    type empty;
                  }
                  container configure {
                    container gateway {
                      leaf interface {
                        type string;
                      }
    
                      leaf service-ip {
                        type inet:ipv4-address;
                      }
    
                      leaf activate {
                        type empty;
                      }
                    }  // container gateway
                  }  // container configure
                  leaf connect {
                    type empty;
                  }
                  leaf help {
                    type empty;
                  }
                  leaf deactivate {
                    type empty;
                  }
                  container install {
                    leaf package {
                      type string;
                    }
                  }  // container install
                  leaf status {
                    type empty;
                  }
                  leaf unconfigure {
                    type empty;
                  }
                  leaf uninstall {
                    type empty;
                  }
                  container upgrade {
                    leaf package {
                      type string;
                    }
                  }  // container upgrade
                }  // choice sd-avc-choice
              }  // container sd-avc
            }  // choice services-choice
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc service
    
        rpc virtual-service {
          description
            "Virtual-service management";
          input {
            choice operation {
              mandatory true;
              container install {
                leaf name {
                  type string;
                }
    
                leaf package {
                  type string;
                }
    
                leaf media {
                  type string;
                }
              }  // container install
              container uninstall {
                leaf name {
                  type string;
                }
              }  // container uninstall
              container upgrade {
                leaf name {
                  type string;
                }
    
                leaf package {
                  type string;
                }
              }  // container upgrade
              container move {
                leaf name {
                  type string;
                  mandatory true;
                }
    
                choice file-choice {
                  mandatory true;
                  container core {
                    leaf to {
                      type string {
                        pattern
                          '(((bootflash:)|(flash:)|(harddisk:)).*)';
                      }
                    }
                  }  // container core
                  container log {
                    leaf to {
                      type string {
                        pattern
                          '(((bootflash:)|(flash:)|(harddisk:)).*)';
                      }
                    }
                  }  // container log
                }  // choice file-choice
              }  // container move
            }  // choice operation
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc virtual-service
    
        rpc copy {
          description
            "Copy from one file to another";
          input {
            leaf source-drop-node-name {
              type string {
                pattern
                  '((((bootflash:)|(harddisk:)|(flash:)|(nvram:)|(ftp:)|(http:)|(https:)|(scp:)|(tftp:)).*)|((running-config)|(startup-config)))';
              }
              mandatory true;
            }
    
            leaf destination-drop-node-name {
              type string {
                pattern
                  '((((bootflash:)|(harddisk:)|(flash:)|(nvram:)|(ftp:)|(http:)|(https:)|(scp:)|(tftp:)).*)|((running-config)|(startup-config)))';
              }
              mandatory true;
            }
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc copy
    
        rpc delete {
          description "Delete a file";
          input {
            leaf filename-drop-node-name {
              type string {
                pattern
                  '(((bootflash:)|(harddisk:)|(flash:)|(nvram:)).*)';
              }
              mandatory true;
            }
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc delete
    
        rpc app-hosting {
          description "App-hosting management";
          input {
            choice lifecycle {
              mandatory true;
              container install {
                leaf appid {
                  type string;
                }
    
                leaf package {
                  type string;
                }
              }  // container install
              container uninstall {
                leaf appid {
                  type string;
                }
              }  // container uninstall
              container activate {
                leaf appid {
                  type string;
                }
              }  // container activate
              container deactivate {
                leaf appid {
                  type string;
                }
              }  // container deactivate
              container start {
                leaf appid {
                  type string;
                }
              }  // container start
              container stop {
                leaf appid {
                  type string;
                }
              }  // container stop
              container upgrade {
                leaf appid {
                  type string;
                }
    
                leaf package {
                  type string;
                }
              }  // container upgrade
              container verification {
                leaf enable {
                  type empty;
                }
    
                leaf disable {
                  type empty;
                }
              }  // container verification
              container move {
                choice type-choice {
                  mandatory true;
                  case appid-case {
                    leaf appid {
                      type string;
                      mandatory true;
                    }
    
                    choice file-choice {
                      mandatory true;
                      container core {
                        leaf to {
                          type string {
                            pattern
                              '(((bootflash:)|(flash:)|(harddisk:)).*)';
                          }
                        }
                      }  // container core
                      container log {
                        leaf to {
                          type string {
                            pattern
                              '(((bootflash:)|(flash:)|(harddisk:)).*)';
                          }
                        }
                      }  // container log
                    }  // choice file-choice
                  }  // case appid-case
                  container system {
                    container techsupport {
                      leaf to {
                        type string {
                          pattern
                            '(((bootflash:)|(flash:)|(harddisk:)).*)';
                        }
                      }
                    }  // container techsupport
                  }  // container system
                }  // choice type-choice
              }  // container move
            }  // choice lifecycle
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc app-hosting
    
        rpc guestshell {
          description
            "guestshell managementshell";
          input {
            choice action {
              mandatory true;
              leaf destroy {
                type empty;
                description "Destroy guestshell";
              }
              leaf disable {
                type empty;
                description "Disable guestshell";
              }
              leaf enable {
                type empty;
                description "Enable guestshell";
              }
            }  // choice action
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc guestshell
    
        rpc start {
          description "Start system operations";
          input {
            leaf maintenance {
              type empty;
              description
                "GIR start maintenance mode";
            }
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc start
    
        rpc stop {
          description "Stop system operations";
          input {
            leaf maintenance {
              type empty;
              description
                "GIR stop maintenance mode";
            }
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc stop
    
        rpc hw-module {
          description
            "Control of individual components in the system";
          input {
            container switch {
              description "Switch in the system";
              leaf switch-number-drop-node-name {
                type uint8 {
                  range "1..8";
                }
                description
                  "Switch number in the Stack (Refer to show switch CLI)";
              }
    
              container usbflash1 {
                description "USB SSD";
                choice umount-sec {
                  mandatory true;
                  leaf unmount {
                    type empty;
                    description
                      "unmount on usbflash1";
                  }
                  container security {
                    description
                      "Security on usbflash1";
                    choice security-choice {
                      mandatory true;
                      container enable {
                        presence "true";
                        description
                          "Enable security on usbflash1";
                        leaf password {
                          type string;
                          description
                            "Enter password for enabling security on usbflash1";
                        }
                      }  // container enable
                      container disable {
                        presence "true";
                        description
                          "Disable security on usbflash1";
                        leaf password {
                          type string;
                          description
                            "Enter password for Disabling security on usbflash1";
                        }
                      }  // container disable
                      container unlock {
                        presence "true";
                        description
                          "Unlock security on usbflash1";
                        leaf password {
                          type string;
                          description
                            "Enter password for unlock security on usbflash1";
                        }
                      }  // container unlock
                    }  // choice security-choice
                  }  // container security
                }  // choice umount-sec
              }  // container usbflash1
            }  // container switch
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc hw-module
    
        rpc debug {
          description "Debug";
          input {
            choice debug-choice {
              mandatory true;
              case crypto-case {
                container crypto {
                  description
                    "Cryptographic subsystem";
                  container pki {
                    description
                      "PKI debugging information";
                    leaf API {
                      type empty;
                      description
                        "PKI API debugging information";
                    }
    
                    leaf callbacks {
                      type empty;
                      description
                        "PKI callbacks debugging information";
                    }
    
                    leaf messages {
                      type empty;
                      description
                        "PKI messages debugging information";
                    }
    
                    leaf scep {
                      type empty;
                      description
                        "PKI scep debugging information";
                    }
    
                    container server {
                      presence "true";
                      description
                        "PKI server debugging information";
                      leaf performance {
                        type empty;
                        description
                          "PKI server performance debugging information";
                      }
                    }  // container server
    
                    container transactions {
                      presence "true";
                      description
                        "PKI transaction debugging information";
                      leaf performance {
                        type empty;
                        description
                          "PKI transaction performance debugging information";
                      }
                    }  // container transactions
    
                    leaf validation {
                      type empty;
                      description
                        "PKI validation debugging information";
                    }
                  }  // container pki
    
                  leaf est-client {
                    type empty;
                    description
                      "EST client debugging information";
                  }
    
                  leaf ha {
                    type empty;
                    description
                      "PKI HA debugging information";
                  }
                }  // container crypto
              }  // case crypto-case
    
              case platform-case {
                container platform {
                  description
                    "Debug platform information";
                  choice platform-choice {
                    container condition {
                      choice condition-choice {
                        leaf start {
                          type empty;
                          description
                            "Start conditional debug";
                        }
                        leaf stop {
                          type empty;
                          description
                            "Stop conditional debug";
                        }
                        container direction-drop-node-name {
                          choice direction-choice {
                            leaf both {
                              type empty;
                              description
                                "Simultaneous ingress and egress debug";
                            }
                            leaf ingress {
                              type empty;
                              description
                                "Ingress only debug";
                            }
                            leaf egress {
                              type empty;
                              description
                                "Egress only debug";
                            }
                          }  // choice direction-choice
    
                          leaf no {
                            type empty;
                            description
                              "for no debug platform ...";
                          }
                        }  // container direction-drop-node-name
                        container application {
                          leaf app-name-drop-node-name {
                            type string;
                            mandatory true;
                            description
                              "Application name";
                          }
    
                          choice direction-choice {
                            leaf both {
                              type empty;
                              description
                                "Simultaneous ingress and egress debug";
                            }
                            leaf ingress {
                              type empty;
                              description
                                "Ingress only debug";
                            }
                            leaf egress {
                              type empty;
                              description
                                "Egress only debug";
                            }
                          }  // choice direction-choice
    
                          leaf no {
                            type empty;
                            description
                              "for no debug platform ...";
                          }
                        }  // container application
                        container mpls {
                          choice mpls-choice {
                            container label-drop-node-name {
                              leaf label-id-drop-node-name {
                                type uint32 {
                                  range
                                    "0..1048575";
                                }
                                mandatory true;
                                description
                                  "MPLS label id";
                              }
    
                              leaf depth-drop-node-name {
                                type uint8 {
                                  range "0..127";
                                }
                                description
                                  "Depth of specified MPLS label, 1 for top label";
                              }
    
                              leaf application {
                                type string;
                                description
                                  "Debug Application conditions";
                              }
    
                              choice direction-choice {
                                leaf both {
                                  type empty;
                                  description
                                    "Simultaneous ingress and egress debug";
                                }
                                leaf ingress {
                                  type empty;
                                  description
                                    "Ingress only debug";
                                }
                                leaf egress {
                                  type empty;
                                  description
                                    "Egress only debug";
                                }
                              }  // choice direction-choice
                            }  // container label-drop-node-name
                            container application {
                              leaf app-name-drop-node-name {
                                type string;
                                mandatory true;
                                description
                                  "Application name";
                              }
    
                              choice direction-choice {
                                leaf both {
                                  type empty;
                                  description
                                    "Simultaneous ingress and egress debug";
                                }
                                leaf ingress {
                                  type empty;
                                  description
                                    "Ingress only debug";
                                }
                                leaf egress {
                                  type empty;
                                  description
                                    "Egress only debug";
                                }
                              }  // choice direction-choice
                            }  // container application
                            choice direction-choice {
                              leaf both {
                                type empty;
                                description
                                  "Simultaneous ingress and egress debug";
                              }
                              leaf ingress {
                                type empty;
                                description
                                  "Ingress only debug";
                              }
                              leaf egress {
                                type empty;
                                description
                                  "Egress only debug";
                              }
                            }  // choice direction-choice
                          }  // choice mpls-choice
    
                          leaf no {
                            type empty;
                            description
                              "for no debug platform ...";
                          }
                        }  // container mpls
                        container ipv4 {
                          choice ipv4-choice {
                            choice direction-choice {
                              leaf both {
                                type empty;
                                description
                                  "Simultaneous ingress and egress debug";
                              }
                              leaf ingress {
                                type empty;
                                description
                                  "Ingress only debug";
                              }
                              leaf egress {
                                type empty;
                                description
                                  "Egress only debug";
                              }
                            }  // choice direction-choice
                            container ipv4addr-drop-node-name {
                              leaf ip-addr-drop-node-name {
                                type string;
                                mandatory true;
                                description
                                  "IPv4 address A.B.C.D/nn";
                              }
    
                              choice ipv4addr-choice {
                                container application {
                                  leaf app-name-drop-node-name {
                                    type string;
                                    mandatory
                                      true;
                                    description
                                      "Application name";
                                  }
    
                                  choice direction-choice {
                                    leaf both {
                                      type empty;
                                      description
                                        "Simultaneous ingress and egress debug";
                                    }
                                    leaf ingress {
                                      type empty;
                                      description
                                        "Ingress only debug";
                                    }
                                    leaf egress {
                                      type empty;
                                      description
                                        "Egress only debug";
                                    }
                                  }  // choice direction-choice
                                }  // container application
                                choice direction-choice {
                                  leaf both {
                                    type empty;
                                    description
                                      "Simultaneous ingress and egress debug";
                                  }
                                  leaf ingress {
                                    type empty;
                                    description
                                      "Ingress only debug";
                                  }
                                  leaf egress {
                                    type empty;
                                    description
                                      "Egress only debug";
                                  }
                                }  // choice direction-choice
                              }  // choice ipv4addr-choice
                            }  // container ipv4addr-drop-node-name
    
                            case access-list-case {
                              description
                                "Set acl for conditional debug";
                              container access-list {
                                leaf acl-name-drop-node-name {
                                  type string;
                                  mandatory
                                    true;
                                  description
                                    "ACL name";
                                }
    
                                choice direction-choice {
                                  leaf both {
                                    type empty;
                                    description
                                      "Simultaneous ingress and egress debug";
                                  }
                                  leaf ingress {
                                    type empty;
                                    description
                                      "Ingress only debug";
                                  }
                                  leaf egress {
                                    type empty;
                                    description
                                      "Egress only debug";
                                  }
                                }  // choice direction-choice
                              }  // container access-list
                            }  // case access-list-case
                          }  // choice ipv4-choice
    
                          leaf no {
                            type empty;
                            description
                              "for no debug platform ...";
                          }
                        }  // container ipv4
                        container ipv6 {
                          choice ipv6-choice {
                            choice direction-choice {
                              leaf both {
                                type empty;
                                description
                                  "Simultaneous ingress and egress debug";
                              }
                              leaf ingress {
                                type empty;
                                description
                                  "Ingress only debug";
                              }
                              leaf egress {
                                type empty;
                                description
                                  "Egress only debug";
                              }
                            }  // choice direction-choice
                            container ipv6addr-drop-node-name {
                              leaf ip-addr-drop-node-name {
                                type string;
                                mandatory true;
                                description
                                  "IPv6 address X:X:X:X::X/<0-128>";
                              }
    
                              choice ipv6addr-choice {
                                container application {
                                  leaf app-name-drop-node-name {
                                    type string;
                                    mandatory
                                      true;
                                    description
                                      "Application name";
                                  }
    
                                  choice direction-choice {
                                    leaf both {
                                      type empty;
                                      description
                                        "Simultaneous ingress and egress debug";
                                    }
                                    leaf ingress {
                                      type empty;
                                      description
                                        "Ingress only debug";
                                    }
                                    leaf egress {
                                      type empty;
                                      description
                                        "Egress only debug";
                                    }
                                  }  // choice direction-choice
                                }  // container application
                                choice direction-choice {
                                  leaf both {
                                    type empty;
                                    description
                                      "Simultaneous ingress and egress debug";
                                  }
                                  leaf ingress {
                                    type empty;
                                    description
                                      "Ingress only debug";
                                  }
                                  leaf egress {
                                    type empty;
                                    description
                                      "Egress only debug";
                                  }
                                }  // choice direction-choice
                              }  // choice ipv6addr-choice
                            }  // container ipv6addr-drop-node-name
    
                            case access-list-case {
                              description
                                "Set acl for conditional debug";
                              container access-list {
                                leaf acl-name-drop-node-name {
                                  type string;
                                  mandatory
                                    true;
                                  description
                                    "ACL name";
                                }
    
                                choice direction-choice {
                                  leaf both {
                                    type empty;
                                    description
                                      "Simultaneous ingress and egress debug";
                                  }
                                  leaf ingress {
                                    type empty;
                                    description
                                      "Ingress only debug";
                                  }
                                  leaf egress {
                                    type empty;
                                    description
                                      "Egress only debug";
                                  }
                                }  // choice direction-choice
                              }  // container access-list
                            }  // case access-list-case
                          }  // choice ipv6-choice
    
                          leaf no {
                            type empty;
                            description
                              "for no debug platform ...";
                          }
                        }  // container ipv6
                        container match {
                          choice match-choice {
                            case ipv4-case {
                              description
                                "Debug IPv4 conditions";
                              container ipv4 {
                                choice ipv4-choice {
                                  container protocol {
                                    description
                                      "Protocols";
                                    choice protocol-choice {
                                      case icmp-case {
                                        description
                                          "Filter by ICMP protocol";
                                        container icmp {
                                          choice source-choice {
                                            leaf src-ipv4-address-drop-node-name {
                                              type string;
                                            }
                                            leaf any {
                                              type empty;
                                              description
                                                "Any source host";
                                            }
                                            leaf host {
                                              type ios-types:ipv4-host;
                                              description
                                                "A single source host";
                                            }
                                          }  // choice source-choice
    
                                          container dst-addr-drop-node-name {
                                            choice destination-choice {
                                              leaf dest-ipv4-address-drop-node-name {
                                                type string;
                                              }
                                              leaf any {
                                                type empty;
                                                description
                                                  "Any destination host";
                                              }
                                              leaf host {
                                                type ios-types:ipv4-host;
                                                description
                                                  "A single destination host";
                                              }
                                            }  // choice destination-choice
                                          }  // container dst-addr-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container icmp
                                      }  // case icmp-case
    
                                      case tcp-case {
                                        description
                                          "Filter by TCP protocol";
                                        container tcp {
                                          choice source-choice {
                                            leaf src-ipv4-address-drop-node-name {
                                              type string;
                                            }
                                            leaf any {
                                              type empty;
                                              description
                                                "Any source host";
                                            }
                                            leaf host {
                                              type ios-types:ipv4-host;
                                              description
                                                "A single source host";
                                            }
                                          }  // choice source-choice
    
                                          choice src-port-choice {
                                            leaf eq {
                                              type inet:port-number;
                                              description
                                                "Match only packets on a given port number up to 10 ports";
                                            }
                                            leaf gt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a greater port number";
                                            }
                                            leaf lt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a lower port number";
                                            }
                                            leaf neq {
                                              type inet:port-number;
                                              description
                                                "Match only packets not on a given port number up to 10 ports";
                                            }
    
                                            case src-range-case {
                                              leaf range {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
    
                                              leaf src-range2-drop-node-name {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
                                            }  // case src-range-case
                                          }  // choice src-port-choice
    
                                          container dst-addr-port-drop-node-name {
                                            choice destination-choice {
                                              leaf dest-ipv4-address-drop-node-name {
                                                type string;
                                              }
                                              leaf any {
                                                type empty;
                                                description
                                                  "Any destination host";
                                              }
                                              leaf host {
                                                type ios-types:ipv4-host;
                                                description
                                                  "A single destination host";
                                              }
                                            }  // choice destination-choice
    
                                            choice dst-port-choice {
                                              leaf eq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets on a given port number up to 10 ports";
                                              }
                                              leaf gt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a greater port number";
                                              }
                                              leaf lt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a lower port number";
                                              }
                                              leaf neq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets not on a given port number up to 10 ports";
                                              }
    
                                              case dst-range-case {
                                                leaf range {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
    
                                                leaf dst-range2-drop-node-name {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
                                              }  // case dst-range-case
                                            }  // choice dst-port-choice
                                          }  // container dst-addr-port-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container tcp
                                      }  // case tcp-case
    
                                      case udp-case {
                                        description
                                          "Filter by UDP protocol";
                                        container udp {
                                          choice source-choice {
                                            leaf src-ipv4-address-drop-node-name {
                                              type string;
                                            }
                                            leaf any {
                                              type empty;
                                              description
                                                "Any source host";
                                            }
                                            leaf host {
                                              type ios-types:ipv4-host;
                                              description
                                                "A single source host";
                                            }
                                          }  // choice source-choice
    
                                          choice src-port-choice {
                                            leaf eq {
                                              type inet:port-number;
                                              description
                                                "Match only packets on a given port number up to 10 ports";
                                            }
                                            leaf gt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a greater port number";
                                            }
                                            leaf lt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a lower port number";
                                            }
                                            leaf neq {
                                              type inet:port-number;
                                              description
                                                "Match only packets not on a given port number up to 10 ports";
                                            }
    
                                            case src-range-case {
                                              leaf range {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
    
                                              leaf src-range2-drop-node-name {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
                                            }  // case src-range-case
                                          }  // choice src-port-choice
    
                                          container dst-addr-port-drop-node-name {
                                            choice destination-choice {
                                              leaf dest-ipv4-address-drop-node-name {
                                                type string;
                                              }
                                              leaf any {
                                                type empty;
                                                description
                                                  "Any destination host";
                                              }
                                              leaf host {
                                                type ios-types:ipv4-host;
                                                description
                                                  "A single destination host";
                                              }
                                            }  // choice destination-choice
    
                                            choice dst-port-choice {
                                              leaf eq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets on a given port number up to 10 ports";
                                              }
                                              leaf gt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a greater port number";
                                              }
                                              leaf lt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a lower port number";
                                              }
                                              leaf neq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets not on a given port number up to 10 ports";
                                              }
    
                                              case dst-range-case {
                                                leaf range {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
    
                                                leaf dst-range2-drop-node-name {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
                                              }  // case dst-range-case
                                            }  // choice dst-port-choice
                                          }  // container dst-addr-port-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container udp
                                      }  // case udp-case
    
                                      case proto-num-case {
                                        description
                                          "Filter by protocol number";
                                        container proto-num-drop-node-name {
                                          leaf protonum-drop-node-name {
                                            type uint8 {
                                              range
                                                "0..255";
                                            }
                                            mandatory
                                              true;
                                            description
                                              "An IP protocol number<0-255>";
                                          }
    
                                          choice source-choice {
                                            leaf src-ipv4-address-drop-node-name {
                                              type string;
                                            }
                                            leaf any {
                                              type empty;
                                              description
                                                "Any source host";
                                            }
                                            leaf host {
                                              type ios-types:ipv4-host;
                                              description
                                                "A single source host";
                                            }
                                          }  // choice source-choice
    
                                          container dst-addr-drop-node-name {
                                            choice destination-choice {
                                              leaf dest-ipv4-address-drop-node-name {
                                                type string;
                                              }
                                              leaf any {
                                                type empty;
                                                description
                                                  "Any destination host";
                                              }
                                              leaf host {
                                                type ios-types:ipv4-host;
                                                description
                                                  "A single destination host";
                                              }
                                            }  // choice destination-choice
                                          }  // container dst-addr-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container proto-num-drop-node-name
                                      }  // case proto-num-case
                                    }  // choice protocol-choice
                                  }  // container protocol
                                  container ipv4-addr-drop-node-name {
                                    choice source-choice {
                                      leaf src-ipv4-address-drop-node-name {
                                        type string;
                                      }
                                      leaf any {
                                        type empty;
                                        description
                                          "Any source host";
                                      }
                                      leaf host {
                                        type ios-types:ipv4-host;
                                        description
                                          "A single source host";
                                      }
                                    }  // choice source-choice
    
                                    container dst-addr-drop-node-name {
                                      choice destination-choice {
                                        leaf dest-ipv4-address-drop-node-name {
                                          type string;
                                        }
                                        leaf any {
                                          type empty;
                                          description
                                            "Any destination host";
                                        }
                                        leaf host {
                                          type ios-types:ipv4-host;
                                          description
                                            "A single destination host";
                                        }
                                      }  // choice destination-choice
                                    }  // container dst-addr-drop-node-name
    
                                    choice direction-choice {
                                      leaf both {
                                        type empty;
                                        description
                                          "Simultaneous ingress and egress debug";
                                      }
                                      leaf ingress {
                                        type empty;
                                        description
                                          "Ingress only debug";
                                      }
                                      leaf egress {
                                        type empty;
                                        description
                                          "Egress only debug";
                                      }
                                    }  // choice direction-choice
                                  }  // container ipv4-addr-drop-node-name
                                }  // choice ipv4-choice
                              }  // container ipv4
                            }  // case ipv4-case
    
                            case ipv6-case {
                              description
                                "Debug IPv6 conditions";
                              container ipv6 {
                                choice ipv6-choice {
                                  container protocol {
                                    description
                                      "Protocols";
                                    choice protocol-choice {
                                      case icmp-case {
                                        description
                                          "Filter by ICMP protocol";
                                        container icmp {
                                          choice source-choice {
                                            leaf source-prefix-drop-node-name {
                                              type ios-types:ipv6-prefix;
                                            }
                                            leaf any {
                                              type empty;
                                            }
                                            leaf host {
                                              type ios-types:ip-host;
                                            }
                                          }  // choice source-choice
    
                                          container dst-addr-drop-node-name {
                                            choice destination-choice {
                                              leaf destination-prefix-drop-node-name {
                                                type ios-types:ipv6-prefix;
                                              }
                                              leaf any {
                                                type empty;
                                              }
                                              leaf host {
                                                type ios-types:ip-host;
                                              }
                                            }  // choice destination-choice
                                          }  // container dst-addr-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container icmp
                                      }  // case icmp-case
    
                                      case tcp-case {
                                        description
                                          "Filter by TCP protocol";
                                        container tcp {
                                          choice source-choice {
                                            leaf source-prefix-drop-node-name {
                                              type ios-types:ipv6-prefix;
                                            }
                                            leaf any {
                                              type empty;
                                            }
                                            leaf host {
                                              type ios-types:ip-host;
                                            }
                                          }  // choice source-choice
    
                                          choice src-port-choice {
                                            leaf eq {
                                              type inet:port-number;
                                              description
                                                "Match only packets on a given port number";
                                            }
                                            leaf gt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a greater port number";
                                            }
                                            leaf lt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a lower port number";
                                            }
                                            leaf neq {
                                              type inet:port-number;
                                              description
                                                "Match only packets not on a given port number";
                                            }
    
                                            case src-range-case {
                                              leaf range {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
    
                                              leaf src-range2-drop-node-name {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
                                            }  // case src-range-case
                                          }  // choice src-port-choice
    
                                          container dst-addr-port-drop-node-name {
                                            choice destination-choice {
                                              leaf destination-prefix-drop-node-name {
                                                type ios-types:ipv6-prefix;
                                              }
                                              leaf any {
                                                type empty;
                                              }
                                              leaf host {
                                                type ios-types:ip-host;
                                              }
                                            }  // choice destination-choice
    
                                            choice dst-port-choice {
                                              leaf eq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets on a given port number";
                                              }
                                              leaf gt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a greater port number";
                                              }
                                              leaf lt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a lower port number";
                                              }
                                              leaf neq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets not on a given port number";
                                              }
    
                                              case dst-range-case {
                                                leaf range {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
    
                                                leaf dst-range2-drop-node-name {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
                                              }  // case dst-range-case
                                            }  // choice dst-port-choice
                                          }  // container dst-addr-port-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container tcp
                                      }  // case tcp-case
    
                                      case udp-case {
                                        description
                                          "Filter by UDP protocol";
                                        container udp {
                                          choice source-choice {
                                            leaf source-prefix-drop-node-name {
                                              type ios-types:ipv6-prefix;
                                            }
                                            leaf any {
                                              type empty;
                                            }
                                            leaf host {
                                              type ios-types:ip-host;
                                            }
                                          }  // choice source-choice
    
                                          choice src-port-choice {
                                            leaf eq {
                                              type inet:port-number;
                                              description
                                                "Match only packets on a given port number";
                                            }
                                            leaf gt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a greater port number";
                                            }
                                            leaf lt {
                                              type inet:port-number;
                                              description
                                                "Match only packets with a lower port number";
                                            }
                                            leaf neq {
                                              type inet:port-number;
                                              description
                                                "Match only packets not on a given port number";
                                            }
    
                                            case src-range-case {
                                              leaf range {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
    
                                              leaf src-range2-drop-node-name {
                                                type inet:port-number;
                                                description
                                                  "Match only packets in the range of port numbers";
                                              }
                                            }  // case src-range-case
                                          }  // choice src-port-choice
    
                                          container dst-addr-port-drop-node-name {
                                            choice destination-choice {
                                              leaf destination-prefix-drop-node-name {
                                                type ios-types:ipv6-prefix;
                                              }
                                              leaf any {
                                                type empty;
                                              }
                                              leaf host {
                                                type ios-types:ip-host;
                                              }
                                            }  // choice destination-choice
    
                                            choice dst-port-choice {
                                              leaf eq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets on a given port number";
                                              }
                                              leaf gt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a greater port number";
                                              }
                                              leaf lt {
                                                type inet:port-number;
                                                description
                                                  "Match only packets with a lower port number";
                                              }
                                              leaf neq {
                                                type inet:port-number;
                                                description
                                                  "Match only packets not on a given port number";
                                              }
    
                                              case dst-range-case {
                                                leaf range {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
    
                                                leaf dst-range2-drop-node-name {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets in the range of port numbers";
                                                }
                                              }  // case dst-range-case
                                            }  // choice dst-port-choice
                                          }  // container dst-addr-port-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container udp
                                      }  // case udp-case
    
                                      case proto-num-case {
                                        description
                                          "Filter by protocol number";
                                        container proto-num-drop-node-name {
                                          leaf protonum-drop-node-name {
                                            type uint8 {
                                              range
                                                "0..255";
                                            }
                                            mandatory
                                              true;
                                            description
                                              "An IP protocol number<0-255>";
                                          }
    
                                          choice source-choice {
                                            leaf source-prefix-drop-node-name {
                                              type ios-types:ipv6-prefix;
                                            }
                                            leaf any {
                                              type empty;
                                            }
                                            leaf host {
                                              type ios-types:ip-host;
                                            }
                                          }  // choice source-choice
    
                                          container dst-addr-drop-node-name {
                                            choice destination-choice {
                                              leaf destination-prefix-drop-node-name {
                                                type ios-types:ipv6-prefix;
                                              }
                                              leaf any {
                                                type empty;
                                              }
                                              leaf host {
                                                type ios-types:ip-host;
                                              }
                                            }  // choice destination-choice
                                          }  // container dst-addr-drop-node-name
    
                                          choice direction-choice {
                                            leaf both {
                                              type empty;
                                              description
                                                "Simultaneous ingress and egress debug";
                                            }
                                            leaf ingress {
                                              type empty;
                                              description
                                                "Ingress only debug";
                                            }
                                            leaf egress {
                                              type empty;
                                              description
                                                "Egress only debug";
                                            }
                                          }  // choice direction-choice
                                        }  // container proto-num-drop-node-name
                                      }  // case proto-num-case
                                    }  // choice protocol-choice
                                  }  // container protocol
                                  container ipv6-addr-drop-node-name {
                                    choice source-choice {
                                      leaf source-prefix-drop-node-name {
                                        type ios-types:ipv6-prefix;
                                      }
                                      leaf any {
                                        type empty;
                                      }
                                      leaf host {
                                        type ios-types:ip-host;
                                      }
                                    }  // choice source-choice
    
                                    container dst-addr-drop-node-name {
                                      choice destination-choice {
                                        leaf destination-prefix-drop-node-name {
                                          type ios-types:ipv6-prefix;
                                        }
                                        leaf any {
                                          type empty;
                                        }
                                        leaf host {
                                          type ios-types:ip-host;
                                        }
                                      }  // choice destination-choice
                                    }  // container dst-addr-drop-node-name
    
                                    choice direction-choice {
                                      leaf both {
                                        type empty;
                                        description
                                          "Simultaneous ingress and egress debug";
                                      }
                                      leaf ingress {
                                        type empty;
                                        description
                                          "Ingress only debug";
                                      }
                                      leaf egress {
                                        type empty;
                                        description
                                          "Egress only debug";
                                      }
                                    }  // choice direction-choice
                                  }  // container ipv6-addr-drop-node-name
                                }  // choice ipv6-choice
                              }  // container ipv6
                            }  // case ipv6-case
                          }  // choice match-choice
    
                          leaf no {
                            type empty;
                            description
                              "for no debug platform ...";
                          }
                        }  // container match
                        container interface {
                          leaf interface-name-drop-node-name {
                            type string;
                            mandatory true;
                            description
                              "interface name";
                          }
    
                          choice interface-choice {
                            choice direction-choice {
                              leaf both {
                                type empty;
                                description
                                  "Simultaneous ingress and egress debug";
                              }
                              leaf ingress {
                                type empty;
                                description
                                  "Ingress only debug";
                              }
                              leaf egress {
                                type empty;
                                description
                                  "Egress only debug";
                              }
                            }  // choice direction-choice
                            container application {
                              leaf app-name-drop-node-name {
                                type string;
                                mandatory true;
                                description
                                  "Application name";
                              }
    
                              choice direction-choice {
                                leaf both {
                                  type empty;
                                  description
                                    "Simultaneous ingress and egress debug";
                                }
                                leaf ingress {
                                  type empty;
                                  description
                                    "Ingress only debug";
                                }
                                leaf egress {
                                  type empty;
                                  description
                                    "Egress only debug";
                                }
                              }  // choice direction-choice
                            }  // container application
                            container ipv4 {
                              choice ipv4-choice {
                                choice direction-choice {
                                  leaf both {
                                    type empty;
                                    description
                                      "Simultaneous ingress and egress debug";
                                  }
                                  leaf ingress {
                                    type empty;
                                    description
                                      "Ingress only debug";
                                  }
                                  leaf egress {
                                    type empty;
                                    description
                                      "Egress only debug";
                                  }
                                }  // choice direction-choice
                                container ipv4addr-drop-node-name {
                                  leaf ip-addr-drop-node-name {
                                    type string;
                                    mandatory
                                      true;
                                    description
                                      "IPv4 address A.B.C.D/nn";
                                  }
    
                                  choice ipv4addr-choice {
                                    container application {
                                      leaf app-name-drop-node-name {
                                        type string;
                                        mandatory
                                          true;
                                        description
                                          "Application name";
                                      }
    
                                      choice direction-choice {
                                        leaf both {
                                          type empty;
                                          description
                                            "Simultaneous ingress and egress debug";
                                        }
                                        leaf ingress {
                                          type empty;
                                          description
                                            "Ingress only debug";
                                        }
                                        leaf egress {
                                          type empty;
                                          description
                                            "Egress only debug";
                                        }
                                      }  // choice direction-choice
                                    }  // container application
                                    choice direction-choice {
                                      leaf both {
                                        type empty;
                                        description
                                          "Simultaneous ingress and egress debug";
                                      }
                                      leaf ingress {
                                        type empty;
                                        description
                                          "Ingress only debug";
                                      }
                                      leaf egress {
                                        type empty;
                                        description
                                          "Egress only debug";
                                      }
                                    }  // choice direction-choice
                                  }  // choice ipv4addr-choice
                                }  // container ipv4addr-drop-node-name
    
                                case access-list-case {
                                  description
                                    "Set acl for conditional debug";
                                  container access-list {
                                    leaf acl-name-drop-node-name {
                                      type string;
                                      mandatory
                                        true;
                                      description
                                        "ACL name";
                                    }
    
                                    choice direction-choice {
                                      leaf both {
                                        type empty;
                                        description
                                          "Simultaneous ingress and egress debug";
                                      }
                                      leaf ingress {
                                        type empty;
                                        description
                                          "Ingress only debug";
                                      }
                                      leaf egress {
                                        type empty;
                                        description
                                          "Egress only debug";
                                      }
                                    }  // choice direction-choice
                                  }  // container access-list
                                }  // case access-list-case
                              }  // choice ipv4-choice
                            }  // container ipv4
                            container ipv6 {
                              choice ipv6-choice {
                                choice direction-choice {
                                  leaf both {
                                    type empty;
                                    description
                                      "Simultaneous ingress and egress debug";
                                  }
                                  leaf ingress {
                                    type empty;
                                    description
                                      "Ingress only debug";
                                  }
                                  leaf egress {
                                    type empty;
                                    description
                                      "Egress only debug";
                                  }
                                }  // choice direction-choice
                                container ipv6addr-drop-node-name {
                                  leaf ip-addr-drop-node-name {
                                    type string;
                                    mandatory
                                      true;
                                    description
                                      "IPv6 address X:X:X:X::X/<0-128>";
                                  }
    
                                  choice ipv6addr-choice {
                                    container application {
                                      leaf app-name-drop-node-name {
                                        type string;
                                        mandatory
                                          true;
                                        description
                                          "Application name";
                                      }
    
                                      choice direction-choice {
                                        leaf both {
                                          type empty;
                                          description
                                            "Simultaneous ingress and egress debug";
                                        }
                                        leaf ingress {
                                          type empty;
                                          description
                                            "Ingress only debug";
                                        }
                                        leaf egress {
                                          type empty;
                                          description
                                            "Egress only debug";
                                        }
                                      }  // choice direction-choice
                                    }  // container application
                                    choice direction-choice {
                                      leaf both {
                                        type empty;
                                        description
                                          "Simultaneous ingress and egress debug";
                                      }
                                      leaf ingress {
                                        type empty;
                                        description
                                          "Ingress only debug";
                                      }
                                      leaf egress {
                                        type empty;
                                        description
                                          "Egress only debug";
                                      }
                                    }  // choice direction-choice
                                  }  // choice ipv6addr-choice
                                }  // container ipv6addr-drop-node-name
    
                                case access-list-case {
                                  description
                                    "Set acl for conditional debug";
                                  container access-list {
                                    leaf acl-name-drop-node-name {
                                      type string;
                                      mandatory
                                        true;
                                      description
                                        "ACL name";
                                    }
    
                                    choice direction-choice {
                                      leaf both {
                                        type empty;
                                        description
                                          "Simultaneous ingress and egress debug";
                                      }
                                      leaf ingress {
                                        type empty;
                                        description
                                          "Ingress only debug";
                                      }
                                      leaf egress {
                                        type empty;
                                        description
                                          "Egress only debug";
                                      }
                                    }  // choice direction-choice
                                  }  // container access-list
                                }  // case access-list-case
                              }  // choice ipv6-choice
                            }  // container ipv6
                            container match {
                              choice match-choice {
                                case ipv4-case {
                                  description
                                    "Debug IPv4 conditions";
                                  container ipv4 {
                                    choice ipv4-choice {
                                      container protocol {
                                        description
                                          "Protocols";
                                        choice protocol-choice {
                                          case icmp-case {
                                            description
                                              "Filter by ICMP protocol";
                                            container icmp {
                                              choice source-choice {
                                                leaf src-ipv4-address-drop-node-name {
                                                  type string;
                                                }
                                                leaf any {
                                                  type empty;
                                                  description
                                                    "Any source host";
                                                }
                                                leaf host {
                                                  type ios-types:ipv4-host;
                                                  description
                                                    "A single source host";
                                                }
                                              }  // choice source-choice
    
                                              container dst-addr-drop-node-name {
                                                choice destination-choice {
                                                  leaf dest-ipv4-address-drop-node-name {
                                                    type string;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                    description
                                                      "Any destination host";
                                                  }
                                                  leaf host {
                                                    type ios-types:ipv4-host;
                                                    description
                                                      "A single destination host";
                                                  }
                                                }  // choice destination-choice
                                              }  // container dst-addr-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container icmp
                                          }  // case icmp-case
    
                                          case tcp-case {
                                            description
                                              "Filter by TCP protocol";
                                            container tcp {
                                              choice source-choice {
                                                leaf src-ipv4-address-drop-node-name {
                                                  type string;
                                                }
                                                leaf any {
                                                  type empty;
                                                  description
                                                    "Any source host";
                                                }
                                                leaf host {
                                                  type ios-types:ipv4-host;
                                                  description
                                                    "A single source host";
                                                }
                                              }  // choice source-choice
    
                                              choice src-port-choice {
                                                leaf eq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets on a given port number up to 10 ports";
                                                }
                                                leaf gt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a greater port number";
                                                }
                                                leaf lt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a lower port number";
                                                }
                                                leaf neq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets not on a given port number up to 10 ports";
                                                }
    
                                                case src-range-case {
                                                  leaf range {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
    
                                                  leaf src-range2-drop-node-name {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
                                                }  // case src-range-case
                                              }  // choice src-port-choice
    
                                              container dst-addr-port-drop-node-name {
                                                choice destination-choice {
                                                  leaf dest-ipv4-address-drop-node-name {
                                                    type string;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                    description
                                                      "Any destination host";
                                                  }
                                                  leaf host {
                                                    type ios-types:ipv4-host;
                                                    description
                                                      "A single destination host";
                                                  }
                                                }  // choice destination-choice
    
                                                choice dst-port-choice {
                                                  leaf eq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets on a given port number up to 10 ports";
                                                  }
                                                  leaf gt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a greater port number";
                                                  }
                                                  leaf lt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a lower port number";
                                                  }
                                                  leaf neq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets not on a given port number up to 10 ports";
                                                  }
    
                                                  case dst-range-case {
                                                    leaf range {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
    
                                                    leaf dst-range2-drop-node-name {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
                                                  }  // case dst-range-case
                                                }  // choice dst-port-choice
                                              }  // container dst-addr-port-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container tcp
                                          }  // case tcp-case
    
                                          case udp-case {
                                            description
                                              "Filter by UDP protocol";
                                            container udp {
                                              choice source-choice {
                                                leaf src-ipv4-address-drop-node-name {
                                                  type string;
                                                }
                                                leaf any {
                                                  type empty;
                                                  description
                                                    "Any source host";
                                                }
                                                leaf host {
                                                  type ios-types:ipv4-host;
                                                  description
                                                    "A single source host";
                                                }
                                              }  // choice source-choice
    
                                              choice src-port-choice {
                                                leaf eq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets on a given port number up to 10 ports";
                                                }
                                                leaf gt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a greater port number";
                                                }
                                                leaf lt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a lower port number";
                                                }
                                                leaf neq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets not on a given port number up to 10 ports";
                                                }
    
                                                case src-range-case {
                                                  leaf range {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
    
                                                  leaf src-range2-drop-node-name {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
                                                }  // case src-range-case
                                              }  // choice src-port-choice
    
                                              container dst-addr-port-drop-node-name {
                                                choice destination-choice {
                                                  leaf dest-ipv4-address-drop-node-name {
                                                    type string;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                    description
                                                      "Any destination host";
                                                  }
                                                  leaf host {
                                                    type ios-types:ipv4-host;
                                                    description
                                                      "A single destination host";
                                                  }
                                                }  // choice destination-choice
    
                                                choice dst-port-choice {
                                                  leaf eq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets on a given port number up to 10 ports";
                                                  }
                                                  leaf gt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a greater port number";
                                                  }
                                                  leaf lt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a lower port number";
                                                  }
                                                  leaf neq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets not on a given port number up to 10 ports";
                                                  }
    
                                                  case dst-range-case {
                                                    leaf range {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
    
                                                    leaf dst-range2-drop-node-name {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
                                                  }  // case dst-range-case
                                                }  // choice dst-port-choice
                                              }  // container dst-addr-port-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container udp
                                          }  // case udp-case
    
                                          case proto-num-case {
                                            description
                                              "Filter by protocol number";
                                            container proto-num-drop-node-name {
                                              leaf protonum-drop-node-name {
                                                type uint8 {
                                                  range
                                                    "0..255";
                                                }
                                                mandatory
                                                  true;
                                                description
                                                  "An IP protocol number<0-255>";
                                              }
    
                                              choice source-choice {
                                                leaf src-ipv4-address-drop-node-name {
                                                  type string;
                                                }
                                                leaf any {
                                                  type empty;
                                                  description
                                                    "Any source host";
                                                }
                                                leaf host {
                                                  type ios-types:ipv4-host;
                                                  description
                                                    "A single source host";
                                                }
                                              }  // choice source-choice
    
                                              container dst-addr-drop-node-name {
                                                choice destination-choice {
                                                  leaf dest-ipv4-address-drop-node-name {
                                                    type string;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                    description
                                                      "Any destination host";
                                                  }
                                                  leaf host {
                                                    type ios-types:ipv4-host;
                                                    description
                                                      "A single destination host";
                                                  }
                                                }  // choice destination-choice
                                              }  // container dst-addr-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container proto-num-drop-node-name
                                          }  // case proto-num-case
                                        }  // choice protocol-choice
                                      }  // container protocol
                                      container ipv4-addr-drop-node-name {
                                        choice source-choice {
                                          leaf src-ipv4-address-drop-node-name {
                                            type string;
                                          }
                                          leaf any {
                                            type empty;
                                            description
                                              "Any source host";
                                          }
                                          leaf host {
                                            type ios-types:ipv4-host;
                                            description
                                              "A single source host";
                                          }
                                        }  // choice source-choice
    
                                        container dst-addr-drop-node-name {
                                          choice destination-choice {
                                            leaf dest-ipv4-address-drop-node-name {
                                              type string;
                                            }
                                            leaf any {
                                              type empty;
                                              description
                                                "Any destination host";
                                            }
                                            leaf host {
                                              type ios-types:ipv4-host;
                                              description
                                                "A single destination host";
                                            }
                                          }  // choice destination-choice
                                        }  // container dst-addr-drop-node-name
    
                                        choice direction-choice {
                                          leaf both {
                                            type empty;
                                            description
                                              "Simultaneous ingress and egress debug";
                                          }
                                          leaf ingress {
                                            type empty;
                                            description
                                              "Ingress only debug";
                                          }
                                          leaf egress {
                                            type empty;
                                            description
                                              "Egress only debug";
                                          }
                                        }  // choice direction-choice
                                      }  // container ipv4-addr-drop-node-name
                                    }  // choice ipv4-choice
                                  }  // container ipv4
                                }  // case ipv4-case
    
                                case ipv6-case {
                                  description
                                    "Debug IPv6 conditions";
                                  container ipv6 {
                                    choice ipv6-choice {
                                      container protocol {
                                        description
                                          "Protocols";
                                        choice protocol-choice {
                                          case icmp-case {
                                            description
                                              "Filter by ICMP protocol";
                                            container icmp {
                                              choice source-choice {
                                                leaf source-prefix-drop-node-name {
                                                  type ios-types:ipv6-prefix;
                                                }
                                                leaf any {
                                                  type empty;
                                                }
                                                leaf host {
                                                  type ios-types:ip-host;
                                                }
                                              }  // choice source-choice
    
                                              container dst-addr-drop-node-name {
                                                choice destination-choice {
                                                  leaf destination-prefix-drop-node-name {
                                                    type ios-types:ipv6-prefix;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                  }
                                                  leaf host {
                                                    type ios-types:ip-host;
                                                  }
                                                }  // choice destination-choice
                                              }  // container dst-addr-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container icmp
                                          }  // case icmp-case
    
                                          case tcp-case {
                                            description
                                              "Filter by TCP protocol";
                                            container tcp {
                                              choice source-choice {
                                                leaf source-prefix-drop-node-name {
                                                  type ios-types:ipv6-prefix;
                                                }
                                                leaf any {
                                                  type empty;
                                                }
                                                leaf host {
                                                  type ios-types:ip-host;
                                                }
                                              }  // choice source-choice
    
                                              choice src-port-choice {
                                                leaf eq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets on a given port number";
                                                }
                                                leaf gt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a greater port number";
                                                }
                                                leaf lt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a lower port number";
                                                }
                                                leaf neq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets not on a given port number";
                                                }
    
                                                case src-range-case {
                                                  leaf range {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
    
                                                  leaf src-range2-drop-node-name {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
                                                }  // case src-range-case
                                              }  // choice src-port-choice
    
                                              container dst-addr-port-drop-node-name {
                                                choice destination-choice {
                                                  leaf destination-prefix-drop-node-name {
                                                    type ios-types:ipv6-prefix;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                  }
                                                  leaf host {
                                                    type ios-types:ip-host;
                                                  }
                                                }  // choice destination-choice
    
                                                choice dst-port-choice {
                                                  leaf eq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets on a given port number";
                                                  }
                                                  leaf gt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a greater port number";
                                                  }
                                                  leaf lt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a lower port number";
                                                  }
                                                  leaf neq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets not on a given port number";
                                                  }
    
                                                  case dst-range-case {
                                                    leaf range {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
    
                                                    leaf dst-range2-drop-node-name {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
                                                  }  // case dst-range-case
                                                }  // choice dst-port-choice
                                              }  // container dst-addr-port-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container tcp
                                          }  // case tcp-case
    
                                          case udp-case {
                                            description
                                              "Filter by UDP protocol";
                                            container udp {
                                              choice source-choice {
                                                leaf source-prefix-drop-node-name {
                                                  type ios-types:ipv6-prefix;
                                                }
                                                leaf any {
                                                  type empty;
                                                }
                                                leaf host {
                                                  type ios-types:ip-host;
                                                }
                                              }  // choice source-choice
    
                                              choice src-port-choice {
                                                leaf eq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets on a given port number";
                                                }
                                                leaf gt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a greater port number";
                                                }
                                                leaf lt {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets with a lower port number";
                                                }
                                                leaf neq {
                                                  type inet:port-number;
                                                  description
                                                    "Match only packets not on a given port number";
                                                }
    
                                                case src-range-case {
                                                  leaf range {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
    
                                                  leaf src-range2-drop-node-name {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets in the range of port numbers";
                                                  }
                                                }  // case src-range-case
                                              }  // choice src-port-choice
    
                                              container dst-addr-port-drop-node-name {
                                                choice destination-choice {
                                                  leaf destination-prefix-drop-node-name {
                                                    type ios-types:ipv6-prefix;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                  }
                                                  leaf host {
                                                    type ios-types:ip-host;
                                                  }
                                                }  // choice destination-choice
    
                                                choice dst-port-choice {
                                                  leaf eq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets on a given port number";
                                                  }
                                                  leaf gt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a greater port number";
                                                  }
                                                  leaf lt {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets with a lower port number";
                                                  }
                                                  leaf neq {
                                                    type inet:port-number;
                                                    description
                                                      "Match only packets not on a given port number";
                                                  }
    
                                                  case dst-range-case {
                                                    leaf range {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
    
                                                    leaf dst-range2-drop-node-name {
                                                      type inet:port-number;
                                                      description
                                                        "Match only packets in the range of port numbers";
                                                    }
                                                  }  // case dst-range-case
                                                }  // choice dst-port-choice
                                              }  // container dst-addr-port-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container udp
                                          }  // case udp-case
    
                                          case proto-num-case {
                                            description
                                              "Filter by protocol number";
                                            container proto-num-drop-node-name {
                                              leaf protonum-drop-node-name {
                                                type uint8 {
                                                  range
                                                    "0..255";
                                                }
                                                mandatory
                                                  true;
                                                description
                                                  "An IP protocol number<0-255>";
                                              }
    
                                              choice source-choice {
                                                leaf source-prefix-drop-node-name {
                                                  type ios-types:ipv6-prefix;
                                                }
                                                leaf any {
                                                  type empty;
                                                }
                                                leaf host {
                                                  type ios-types:ip-host;
                                                }
                                              }  // choice source-choice
    
                                              container dst-addr-drop-node-name {
                                                choice destination-choice {
                                                  leaf destination-prefix-drop-node-name {
                                                    type ios-types:ipv6-prefix;
                                                  }
                                                  leaf any {
                                                    type empty;
                                                  }
                                                  leaf host {
                                                    type ios-types:ip-host;
                                                  }
                                                }  // choice destination-choice
                                              }  // container dst-addr-drop-node-name
    
                                              choice direction-choice {
                                                leaf both {
                                                  type empty;
                                                  description
                                                    "Simultaneous ingress and egress debug";
                                                }
                                                leaf ingress {
                                                  type empty;
                                                  description
                                                    "Ingress only debug";
                                                }
                                                leaf egress {
                                                  type empty;
                                                  description
                                                    "Egress only debug";
                                                }
                                              }  // choice direction-choice
                                            }  // container proto-num-drop-node-name
                                          }  // case proto-num-case
                                        }  // choice protocol-choice
                                      }  // container protocol
                                      container ipv6-addr-drop-node-name {
                                        choice source-choice {
                                          leaf source-prefix-drop-node-name {
                                            type ios-types:ipv6-prefix;
                                          }
                                          leaf any {
                                            type empty;
                                          }
                                          leaf host {
                                            type ios-types:ip-host;
                                          }
                                        }  // choice source-choice
    
                                        container dst-addr-drop-node-name {
                                          choice destination-choice {
                                            leaf destination-prefix-drop-node-name {
                                              type ios-types:ipv6-prefix;
                                            }
                                            leaf any {
                                              type empty;
                                            }
                                            leaf host {
                                              type ios-types:ip-host;
                                            }
                                          }  // choice destination-choice
                                        }  // container dst-addr-drop-node-name
    
                                        choice direction-choice {
                                          leaf both {
                                            type empty;
                                            description
                                              "Simultaneous ingress and egress debug";
                                          }
                                          leaf ingress {
                                            type empty;
                                            description
                                              "Ingress only debug";
                                          }
                                          leaf egress {
                                            type empty;
                                            description
                                              "Egress only debug";
                                          }
                                        }  // choice direction-choice
                                      }  // container ipv6-addr-drop-node-name
                                    }  // choice ipv6-choice
                                  }  // container ipv6
                                }  // case ipv6-case
                              }  // choice match-choice
                            }  // container match
                            container mpls {
                              choice mpls-choice {
                                container label-drop-node-name {
                                  leaf label-id-drop-node-name {
                                    type uint32 {
                                      range
                                        "0..1048575";
                                    }
                                    mandatory
                                      true;
                                    description
                                      "MPLS label id";
                                  }
    
                                  leaf depth-drop-node-name {
                                    type uint8 {
                                      range
                                        "0..127";
                                    }
                                    description
                                      "Depth of specified MPLS label, 1 for top label";
                                  }
    
                                  leaf application {
                                    type string;
                                    description
                                      "Debug Application conditions";
                                  }
    
                                  choice direction-choice {
                                    leaf both {
                                      type empty;
                                      description
                                        "Simultaneous ingress and egress debug";
                                    }
                                    leaf ingress {
                                      type empty;
                                      description
                                        "Ingress only debug";
                                    }
                                    leaf egress {
                                      type empty;
                                      description
                                        "Egress only debug";
                                    }
                                  }  // choice direction-choice
                                }  // container label-drop-node-name
                                container application {
                                  leaf app-name-drop-node-name {
                                    type string;
                                    mandatory
                                      true;
                                    description
                                      "Application name";
                                  }
    
                                  choice direction-choice {
                                    leaf both {
                                      type empty;
                                      description
                                        "Simultaneous ingress and egress debug";
                                    }
                                    leaf ingress {
                                      type empty;
                                      description
                                        "Ingress only debug";
                                    }
                                    leaf egress {
                                      type empty;
                                      description
                                        "Egress only debug";
                                    }
                                  }  // choice direction-choice
                                }  // container application
                                choice direction-choice {
                                  leaf both {
                                    type empty;
                                    description
                                      "Simultaneous ingress and egress debug";
                                  }
                                  leaf ingress {
                                    type empty;
                                    description
                                      "Ingress only debug";
                                  }
                                  leaf egress {
                                    type empty;
                                    description
                                      "Egress only debug";
                                  }
                                }  // choice direction-choice
                              }  // choice mpls-choice
                            }  // container mpls
                          }  // choice interface-choice
    
                          leaf no {
                            type empty;
                            description
                              "for no debug platform ...";
                          }
                        }  // container interface
                        container feature {
                          description
                            "For a specific feature";
                          choice feature-choice {
                            container ipsec {
                              description
                                "IPSEC feature";
                              container dataplane {
                                description
                                  "packet/flow information";
                                choice dataplane-debug-choice {
                                  container submode {
                                    description
                                      "submode information";
                                    choice submode-choice {
                                      container all {
                                        description
                                          "ipsec all submode";
                                        container level {
                                          choice level-choice {
                                            leaf error {
                                              type empty;
                                              description
                                                "Enable error debug";
                                            }
                                            leaf info {
                                              type empty;
                                              description
                                                "Enable info debug";
                                            }
                                            leaf verbose {
                                              type empty;
                                              description
                                                "Enable verbose debug";
                                            }
                                            leaf warning {
                                              type empty;
                                              description
                                                "Enable warning debug";
                                            }
                                          }  // choice level-choice
                                        }  // container level
                                      }  // container all
                                      container cce {
                                        description
                                          "ipsec cce submode";
                                        container level {
                                          choice level-choice {
                                            leaf error {
                                              type empty;
                                              description
                                                "Enable error debug";
                                            }
                                            leaf info {
                                              type empty;
                                              description
                                                "Enable info debug";
                                            }
                                            leaf verbose {
                                              type empty;
                                              description
                                                "Enable verbose debug";
                                            }
                                            leaf warning {
                                              type empty;
                                              description
                                                "Enable warning debug";
                                            }
                                          }  // choice level-choice
                                        }  // container level
                                      }  // container cce
                                      container pkt-dump {
                                        description
                                          "ipsec pkt-dump submode";
                                        container level {
                                          choice level-choice {
                                            leaf error {
                                              type empty;
                                              description
                                                "Enable error debug";
                                            }
                                            leaf info {
                                              type empty;
                                              description
                                                "Enable info debug";
                                            }
                                            leaf verbose {
                                              type empty;
                                              description
                                                "Enable verbose debug";
                                            }
                                            leaf warning {
                                              type empty;
                                              description
                                                "Enable warning debug";
                                            }
                                          }  // choice level-choice
                                        }  // container level
                                      }  // container pkt-dump
                                    }  // choice submode-choice
                                  }  // container submode
                                  leaf droptype {
                                    type union {
                                      type uint8 {
                                        range
                                          "1..113";
                                      }
                                      type ios-types:range-string;
                                    }
                                    description
                                      "Set debug droptype";
                                  }
                                  leaf pktcorrupt {
                                    type uint8 {
                                      range
                                        "1..255";
                                    }
                                    description
                                      "Set debug pkt corruption";
                                  }
                                }  // choice dataplane-debug-choice
    
                                leaf no {
                                  type empty;
                                  description
                                    "for no debug platform condition feature ipsec dataplane ...";
                                }
                              }  // container dataplane
                            }  // container ipsec
                            container multicast {
                              description
                                "MULTICAST feature";
                              choice multicast-choice {
                                container controlplane {
                                  description
                                    "control plane information";
                                  container level {
                                    description
                                      "debug level information";
                                    choice level-choice {
                                      leaf error {
                                        type empty;
                                        description
                                          "Enable error debug";
                                      }
                                      leaf info {
                                        type empty;
                                        description
                                          "Enable info debug";
                                      }
                                      leaf verbose {
                                        type empty;
                                        description
                                          "Enable verbose debug";
                                      }
                                      leaf warning {
                                        type empty;
                                        description
                                          "Enable warning debug";
                                      }
                                    }  // choice level-choice
    
                                    leaf no {
                                      type empty;
                                      description
                                        "for no debug platform condition feature multicast ...";
                                    }
                                  }  // container level
                                }  // container controlplane
                                container dataplane {
                                  description
                                    "packet/flow information";
                                  choice dataplane-debug-choice {
                                    container v4mcast {
                                      description
                                        "ipv4 mcast feature";
                                      container submode {
                                        description
                                          "submode information";
                                        choice submode-choice {
                                          leaf all {
                                            type empty;
                                            description
                                              "all information";
                                          }
                                          leaf boundary {
                                            type empty;
                                            description
                                              "boundary information";
                                          }
                                          leaf config {
                                            type empty;
                                            description
                                              "config information";
                                          }
                                          leaf error {
                                            type empty;
                                            description
                                              "error information";
                                          }
                                          leaf packet {
                                            type empty;
                                            description
                                              "packet information";
                                          }
                                          leaf sr {
                                            type empty;
                                            description
                                              "sr information";
                                          }
                                          leaf state {
                                            type empty;
                                            description
                                              "state information";
                                          }
                                        }  // choice submode-choice
    
                                        leaf no {
                                          type empty;
                                          description
                                            "for no debug platform condition feature multicast ...";
                                        }
                                      }  // container submode
                                    }  // container v4mcast
                                    container v6mcast {
                                      description
                                        "ipv6 mcast feature";
                                      container submode {
                                        description
                                          "submode information";
                                        choice submode-choice {
                                          leaf all {
                                            type empty;
                                            description
                                              "all information";
                                          }
                                          leaf boundary {
                                            type empty;
                                            description
                                              "boundary information";
                                          }
                                          leaf config {
                                            type empty;
                                            description
                                              "config information";
                                          }
                                          leaf error {
                                            type empty;
                                            description
                                              "error information";
                                          }
                                          leaf packet {
                                            type empty;
                                            description
                                              "packet information";
                                          }
                                          leaf sr {
                                            type empty;
                                            description
                                              "sr information";
                                          }
                                          leaf state {
                                            type empty;
                                            description
                                              "state information";
                                          }
                                        }  // choice submode-choice
    
                                        leaf no {
                                          type empty;
                                          description
                                            "for no debug platform condition feature multicast ...";
                                        }
                                      }  // container submode
                                    }  // container v6mcast
                                  }  // choice dataplane-debug-choice
                                }  // container dataplane
                              }  // choice multicast-choice
                            }  // container multicast
                          }  // choice feature-choice
                        }  // container feature
                      }  // choice condition-choice
                    }  // container condition
                    container packet-trace {
                      choice packet-trace-choice {
                        leaf statistics {
                          type empty;
                          description
                            "Enable packet trace statistics";
                        }
                        container drop {
                          presence "true";
                          description
                            "Trace drops only";
                          leaf code {
                            type uint16 {
                              range "0..65534";
                            }
                            description
                              "Trace specific drop code value <0-65534>";
                          }
                        }  // container drop
                        container inject {
                          presence "true";
                          description
                            "Trace injects only";
                          leaf code {
                            type uint16 {
                              range "0..65534";
                            }
                            description
                              "Trace specific inject code value <0-65534>";
                          }
                        }  // container inject
                        container punt {
                          presence "true";
                          description
                            "Trace punt only";
                          leaf code {
                            type uint16 {
                              range "0..65534";
                            }
                            description
                              "Trace specific punt code value <0-65534>";
                          }
                        }  // container punt
                        container packet {
                          description
                            "Packet count";
                          leaf packet-num-drop-node-name {
                            type uint16 {
                              range "16..8192";
                            }
                            mandatory true;
                            description
                              "Packet count, value must be a power of two <16-8192>";
                          }
    
                          container option-grp1-drop-node-name {
                            leaf data-size {
                              type uint16 {
                                range
                                  "2048..16384";
                              }
                              description
                                "Size of trace data in bytes, value must be a power of two <2048-16384>";
                            }
    
                            leaf fia-trace {
                              type empty;
                              description
                                "Trace of visited feature entries";
                            }
    
                            leaf circular {
                              type empty;
                              description
                                "Capture last set of packets";
                            }
                          }  // container option-grp1-drop-node-name
    
                          container option-grp2-drop-node-name {
                            leaf circular {
                              type empty;
                              description
                                "Capture last set of packets";
                            }
    
                            leaf summary-only {
                              type empty;
                              description
                                "Summary of the trace";
                            }
                          }  // container option-grp2-drop-node-name
                        }  // container packet
                        container copy {
                          description
                            "Copy packet data";
                          container packet {
                            description
                              "Copy parts of packets received or sent";
                            choice direction-choice {
                              mandatory true;
                              leaf both {
                                type empty;
                                description
                                  "Copy incoming and outgoing packets";
                              }
                              leaf input {
                                type empty;
                                description
                                  "Copy incoming packets";
                              }
                              leaf output {
                                type empty;
                                description
                                  "Copy outgoing packets";
                              }
                            }  // choice direction-choice
    
                            choice layer-choice {
                              leaf l2 {
                                type empty;
                                description
                                  "Copy starting from layer 2";
                              }
                              leaf l3 {
                                type empty;
                                description
                                  "Copy starting from layer 3";
                              }
                              leaf l4 {
                                type empty;
                                description
                                  "Copy starting from layer 4";
                              }
                            }  // choice layer-choice
    
                            leaf size {
                              type uint16 {
                                range "16..2048";
                              }
                              description
                                "Packet size in bytes, value must be a power of two";
                            }
                          }  // container packet
                        }  // container copy
                      }  // choice packet-trace-choice
    
                      leaf no {
                        type empty;
                        description
                          "for no debug platform ...";
                      }
                    }  // container packet-trace
                  }  // choice platform-choice
                }  // container platform
              }  // case platform-case
            }  // choice debug-choice
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc debug
    
        rpc monitor {
          description "monitor";
          input {
            leaf capture {
              type string;
              description "Capture session";
            }
    
            leaf match {
              type string;
              description
                "Describe filters inline";
            }
    
            leaf interface {
              type string;
              description "Interface";
            }
    
            choice capture-direction-choice {
              leaf both {
                type empty;
              }
              leaf in {
                type empty;
              }
              leaf out {
                type empty;
              }
            }  // choice capture-direction-choice
    
            container buffer {
              description "Buffer options";
              leaf size {
                type uint8 {
                  range "1..100";
                }
                description
                  "Size of buffer in MB";
              }
    
              leaf circular {
                type empty;
                description "circular buffer";
              }
            }  // container buffer
    
            container limit {
              description
                "Limit Packets Captured";
              leaf duration {
                type uint32 {
                  range "1..1000000";
                }
                description
                  "Limit total duration of capture in seconds";
              }
    
              leaf every {
                type uint32 {
                  range "2..100000";
                }
                description
                  "Limit capture to one in every nth packet";
              }
    
              leaf packet-len {
                type uint16 {
                  range "64..9500";
                }
                description
                  "Limit the packet length to capture";
              }
    
              leaf packets {
                type uint32 {
                  range "1..100000";
                }
                description
                  "Limit number of packets to capture";
              }
    
              leaf pps {
                type uint32 {
                  range "1..1000000";
                }
                description
                  "Limit number of packets per second to capture";
              }
            }  // container limit
    
            choice capture-command-choice {
              leaf start {
                type empty;
                description
                  "Enable session capture points";
              }
              leaf stop {
                type empty;
                description
                  "Disable session capture points";
              }
              leaf stop_export {
                type empty;
                description
                  "Export session capture buffer";
              }
            }  // choice capture-command-choice
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc monitor
    
        rpc pnpa {
          description "Plug and play command";
          input {
            container service {
              description "Service Name";
              choice service-choice {
                container wakeup {
                  description "Wake up Profile";
                  leaf profile-drop-node-name {
                    type string;
                    description "Profile name";
                  }
                }  // container wakeup
                leaf reset {
                  type empty;
                  description "Reset PnP config";
                }
              }  // choice service-choice
            }  // container service
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc pnpa
    
        rpc test {
          description "test exec command";
          input {
            choice test-feature {
            }  // choice test-feature
          }
    
          output {
            leaf result {
              type string;
              description
                "Output returned by the network element";
            }
          }
        }  // rpc test
      }  // module Cisco-IOS-XE-rpc
    

© 2023 YumaWorks, Inc. All rights reserved.